/*
int map[101][101]= {};
int n,cnt=0,area[700]= {};
void dfs(int x, int y)
{
if(x<1||x>n||y<1||y>n)
{
return;
}
area[cnt]++;
map[x][y]=-1;
if(map[x-1][y]==1)
{
map[x-1][y]==cnt;
dfs(x-1,y);
}
if(map[x+1][y]==1)
{
map[x-1][y]==cnt;
dfs(x+1,y);
}
if(map[x][y+1]==1)
{
map[x-1][y]==cnt;
dfs(x,y+1);
}
if(map[x][y-1]==1)
{
map[x-1][y]==cnt;
dfs(x,y-1);
}
}
int main()
{
int i,j,k,temp;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
scanf("%1d",&map[i][j]);
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=n; j++)
{
if(map[i][j]==1)
{
cnt++;
dfs(i,j);
}
}
}
printf("%d\n",cnt);
for(i=1; i<cnt; i++)
{
for(j=1; j<=cnt-i; j++)
{
if (area[j] > area[j+1])
{
temp = area[j];
area[j] = area[j+1];
area[j+1] = temp;
}
}
}
for(i=1; i<=cnt; i++)
{
printf("%d\n",area[i]);
}
}
*/
/*
int w,h,cnt;
char map[101][101];
void dfs(int x, int y)
{
if(x<1||x>h||y<1||y>w)
{
return;
}
map[x][y]=-1;
if(map[x-1][y]=='L')
{
dfs(x-1,y);
}
if(map[x+1][y]=='L')
{
dfs(x+1,y);
}
if(map[x][y+1]=='L')
{
dfs(x,y+1);
}
if(map[x][y-1]=='L')
{
dfs(x,y-1);
}
if(map[x+1][y+1]=='L')
{
dfs(x+1,y+1);
}
if(map[x+1][y-1]=='L')
{
dfs(x+1,y-1);
}
if(map[x-1][y+1]=='L')
{
dfs(x-1,y+1);
}
if(map[x-1][y-1]=='L')
{
dfs(x-1,y-1);
}
}
int main()
{
int i,j;
scanf("%d %d",&w,&h);
for(i=1; i<=h; i++)
{
for(j=1; j<=w; j++)
{
scanf(" %c",&map[i][j]);
}
}
for(i=1; i<=h; i++)
{
for(j=1; j<=w; j++)
{
if(map[i][j]=='L')
{
cnt++;
dfs(i,j);
}
}
}
printf("%d",cnt);
}
*/
int main()
{
int n,a=2,i,sum=0,b[];
scanf("%d",&n);
while(n>a)
{
if(n%a==0)
{
n=n/a;
}
else
{
a++;
}
}
}