#include <bits/stdc++.h>
using namespace std;
bool isPrime[100000010];
int Prime[6000010];
int cnt = 0;
void getPrime(int n){
memset(isPrime , 1 , sizeof(isPrime));
isPrime[1] = 0;
for(int i = 2; i <= n;i++){
if(isPrime[i] != 0){
Prime[++cnt] = i;
}
for(int j = 1; j <= cnt && i * Prime[j] <= n ; j++){
isPrime[i * Prime[j]] = 0;
if(i % Prime[j] == 0){
break;
}
}
}
}
int main(){
int n;
scanf("%d" , &n);
getPrime(n);
int temp =1;
for(int i = 1 ; i <= n; i++){
for(int j = 1 ; j <= n ;j++){
if(Prime[i] * Prime[j] == n){
if(Prime[i] > Prime[j] && Prime[i] > temp){
temp = Prime[i];
}else if(Prime[i] < Prime[j] && Prime[j] > temp){
temp = Prime[j];
}
}
}
}
printf("%d", temp);
return 0;
}