#include <iostream>
#include <cstdio>
using namespace std;
#define ll unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
ll n;
ll ans;
ll ans1;
int p[16] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53};
void dfs(int d,ll t,int num)
{
if(d>16||t>n) return;
if(t<=n&&num>=ans)
{
if(num>ans)
{
ans=num;
ans1=t;
}
else if(num==ans)
{
if(t<ans1)
ans1=t;
}
}
for(int i=1;i<=64;i++)
{
if(t>n)
break;
t*=p[d];
dfs(d+1,t,num*(i+1));
}
}
int main()
{
while(scanf("%lld",&n)==1)
{
ans=0;
ans1=INF;
dfs(0,1,1);
cout<<ans1<<endl;
}
}