#include<stdio.h>
#include<math.h>
#include<stdbool.h>
#define MAXN 200000002
bool vis[MAXN];
int prime[MAXN];
int cnt=0;
void Euler_prime(double n)
{
for(int i=2;i<=n;i++)
{
if(!vis[i])
{
prime[cnt++]=i;vis[i]=true;
}
for(int j=0;j<=cnt;j++)
{
if(i*prime[j]>n)
{
break;
}
vis[i*prime[j]]=true;
if(i%prime[j]==0)
{
break;
}
}
}
}
int main()
{
int n,max=2;
scanf("%d",&n);
Euler_prime(sqrt(n));
for(int i=0;i<n;i++)
{
if(n%prime[i]==0&&max<i)
{
max=i;
}
}
printf("%d",max);
return 0;
}