#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<bool> isPrime(n + 10, true);
vector<int> primes;
for(int i = 2; i <= n; i++){
if(isPrime[i]) primes.push_back(i);
for(int j = 0; j < primes.size() && primes[j] * i <= n; j++){
isPrime[primes[j] * i] = false;
if(i % primes[j] == 0) break;
}
}
int pos = primes.size() - 1;
while(pos >= 2 && n % primes[pos] != 0) pos--;
cout << primes[pos];
return 0;
}