/*
// for(int i=4; i<=num ; i++) {
// n=arr[i-1][0];
// int a=1;
// //i-1번째줄 훑으면서 i번째줄 채우기
// printf("%d 번째 줄 : ",i);
// for(int j=0;arr[i-1][j]!=0;j++) {
// printf("(%d) ",j);
// if(arr[i-1][j+1]==n) {
// cnt++;
// printf("%d는 %d개 > ",n,cnt);
// }
// else {
// arr[i][a++]=n;
// arr[i][a++]=cnt;
// printf("%d %d >",arr[i][a-2],arr[i][a-1]);
// cnt=1;
// n=arr[i-1][j+1];
// }
// }
// printf("\n");
// }
*/
/*
#include<stdio.h>
int arr[25][100]={{0},{1},{1,1},{1,2},{1,1,2,1}};
int main() {
int num;
int n;
int cnt=1;
scanf("%d",&num);
for(int i=4 ; i<=num ; i++) {
for(int j=0 ; arr[i][j+1]!=0 ; j++) {
n=arr[i][j];
if(n==arr[i][j+1]) {
cnt++;
}
else {
arr[i][j+1]=cnt;
cnt=1;
}
}
}
for(int i=1; i<=num ; i++) {
for(int j=0;arr[i][j]!=0;j++) {
printf("%d ",arr[i][j]);
}
printf("\n");
}
}
*/
//n;a[9999]={1,1};main(){scanf("%d",&n);for(int i=2;i<n;i++)a[i]=a[a[i-1]-1]+a[i-a[i-1]];printf("%d",a[n-1]);}
//#include<stdio.h>
//int main() {
// int n;
// int arr[10001]={};
// scanf("%d",&n);
// int j=2;
// int k=0;
// for(int i=2 ; n!=0 ; i++) {
// printf("%d ",i);
// while(i%k!=0) {
// printf("붸레ㅔㄺ ");
// k++;
// n=n/i;
// }
// }
//}
/*
#include <stdio.h>
int main() {
long long int p[10001]={}; // p[i] =0 : i가 소수다
long long int n;
int i,j;
long long int max=0;
scanf("%lld",&n);
for(i=2 ; i*i<=n ; i++) {
if(p[i]==0) {
for(j=i*i ; j<=n ; j+=i) {
p[j]=1;
}
}
}
for(i=2 ; n!=1 ; i++) {
if(p[i]==0) {
while(1) {
if(n%i==0) {
if(i>max) {
max=i;
}
n=n/i;
}
else {
break;
}
}
}
}
printf("%lld",max);
return 0;
}
*/
#include<stdio.h>
int main() {
int n;
int max=0;
scanf("%d",&n);
for(int i=2 ; i<=n ; i++) {
if(n%i==0) {
for(int j=2 ; j<i ; i++) {
if(i%j==0) {
if(i>max) {
max=i;
}
}
}
}
}
printf("%d",max);
return 0;
}