#include <bits/stdc++.h>
using namespace std;
#define N 10001
typedef long long ll;
bool visit[N];
vector<int> prime;
void sieve()
{
memset( visit , 0 , sizeof(visit));
for( int i=2;i<N;i++ )
{
if( visit[i] == 0)
{
prime.push_back(i);
for( int j=i*2; j<N; j=j+i )
{
visit[j] = 1;
}
}
}
}
void sol(long long n, vector<int>&prime)
{
ll ans = n;
for(int i=0; i<prime.size() || prime[i]>n; i++)
{
while(n%prime[i]==0)
{
n=n/prime[i];
ans = prime[i];
}
}
ans = max(ans, n);
cout<<ans<<endl;
}
int main()
{
ll tc, n;
sieve();
cin>>n;
sol(n, prime);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTiAxMDAwMQoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmJvb2wgdmlzaXRbTl07CnZlY3RvcjxpbnQ+IHByaW1lOwoKCnZvaWQgc2lldmUoKQp7CiAgICAgICAgCW1lbXNldCggdmlzaXQgLCAwICwgc2l6ZW9mKHZpc2l0KSk7CiAgICAgICAgCWZvciggaW50IGk9MjtpPE47aSsrICkKICAgICAgICAJewogICAgICAgIAkgICAgaWYoIHZpc2l0W2ldID09IDApCiAgICAgICAgCSAgICB7CiAgICAgICAgCSAgICAgICAgcHJpbWUucHVzaF9iYWNrKGkpOwogICAgICAgIAkgICAgICAgIGZvciggaW50IGo9aSoyOyBqPE47IGo9aitpICkKICAgICAgICAJICAgICAgICB7CiAgICAgICAgCSAgICAgICAgICAgIHZpc2l0W2pdID0gMTsKICAgICAgICAJICAgICAgICB9CiAgICAgICAgCSAgICB9CiAgICAgICAgCX0JCn0KCnZvaWQgc29sKGxvbmcgbG9uZyBuLCB2ZWN0b3I8aW50PiZwcmltZSkKewogICAgICAgICAgICBsbCBhbnMgPSBuOwogICAgCSAgICBmb3IoaW50IGk9MDsgaTxwcmltZS5zaXplKCkgfHwgcHJpbWVbaV0+bjsgaSsrKQogICAgCSAgICB7CiAgICAJICAgICAgICB3aGlsZShuJXByaW1lW2ldPT0wKQogICAgCSAgICAgICAgewogICAgCSAgICAgICAgICAgIG49bi9wcmltZVtpXTsKICAgIAkgICAgICAgICAgICBhbnMgPSBwcmltZVtpXTsKICAgIAkgICAgICAgIH0KICAgIAkgICAgfQogICAgCSAgICBhbnMgPSBtYXgoYW5zLCBuKTsKICAgIAkgICAgY291dDw8YW5zPDxlbmRsOwp9CgppbnQgbWFpbigpIAp7CiAgICAgICAgICAgbGwgdGMsIG47CiAgICAgICAgICAgc2lldmUoKTsKCgkgICAgICAgY2luPj5uOwoJICAgICAgIHNvbChuLCBwcmltZSk7CgogICAgICAgICAgIHJldHVybiAwOwp9CgoKCgo=