#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include "cgdzlib.h"
#include<iostream>
#include<fstream>
#include<map>
#include<ctime>
#include<set>
#include<queue>
#include<cmath>
#include<vector>
#include<bitset>
#include<functional>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
#define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
using namespace std;
typedef long long LL;
typedef double ld;
/*
M(n)
若n==1 M(n)=0
否则M(n)=1...找到能被n-1整除的两个数即可
*/
const int MAX=1000000+10;
int n,num[MAX],tmp[MAX];
pair<int,int> work(int l,int r,int one)
{
if(l==r)
return mp(num[l],num[r]);
int tl=l,tr=r;
int i;
for(i=l;i<=r;++i)
if(f(num[i],num[l],one*2))
tmp[tl++]=num[i];
else tmp[tr--]=num[i];
REP(i,l,r)
num[i]=tmp[i];
pair<int,int> L=work(l,tl-1,one*2);
pair<int,int> R=work(tl,r,one*2);
int need=one*(r-l);
int top=0;
tmp[++top]=L.x;
if(L.y!=L.x)
tmp[++top]=L.y;
tmp[++top]=R.x;
if(R.y!=R.x)
tmp[++top]=R.y;
REP(i,1,top)
for(int j=i+1;j<=top;++j)
if(f(tmp[i],tmp[j],need))
return mp(tmp[i],tmp[j]);
return mp(0,0);
}
int main()
{
#ifndef ONLINE_JUDGE
// freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
#endif
n=inicjuj();
int i;
REP(i,1,n)
num[i]=i;
pair<int,int> L=work(1,n,1);
if(L.x==L.y)
odpowiedz(L.x);
else
odpowiedz(g(L.x,L.y)?L.y:L.x);
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlICJjZ2R6bGliLmgiCiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxmc3RyZWFtPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPGN0aW1lPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxiaXRzZXQ+CiNpbmNsdWRlPGZ1bmN0aW9uYWw+CiNkZWZpbmUgeCBmaXJzdAojZGVmaW5lIHkgc2Vjb25kCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUkVQKGksbCxyKSBmb3IoKGkpPShsKTsoaSk8PShyKTsrKyhpKSkKI2RlZmluZSBSRVAyKGksbCxyKSBmb3IoKGkpPShsKTsoaSkhPShyKTsrKyhpKSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIExMOwp0eXBlZGVmIGRvdWJsZSBsZDsKCi8qCiAgIE0obikKICAg6Iulbj09MSBNKG4pPTAKICAg5ZCm5YiZTShuKT0xLi4u5om+5Yiw6IO96KKrbi0x5pW06Zmk55qE5Lik5Liq5pWw5Y2z5Y+vCiAgICovCgpjb25zdCBpbnQgTUFYPTEwMDAwMDArMTA7CmludCBuLG51bVtNQVhdLHRtcFtNQVhdOwoKcGFpcjxpbnQsaW50PiB3b3JrKGludCBsLGludCByLGludCBvbmUpCnsKICAgIGlmKGw9PXIpCiAgICAgICAgcmV0dXJuIG1wKG51bVtsXSxudW1bcl0pOwogICAgaW50IHRsPWwsdHI9cjsKICAgIGludCBpOwogICAgZm9yKGk9bDtpPD1yOysraSkKICAgICAgICBpZihmKG51bVtpXSxudW1bbF0sb25lKjIpKQogICAgICAgICAgICB0bXBbdGwrK109bnVtW2ldOwogICAgICAgIGVsc2UgdG1wW3RyLS1dPW51bVtpXTsKICAgIFJFUChpLGwscikKICAgICAgICBudW1baV09dG1wW2ldOwogICAgcGFpcjxpbnQsaW50PiBMPXdvcmsobCx0bC0xLG9uZSoyKTsKICAgIHBhaXI8aW50LGludD4gUj13b3JrKHRsLHIsb25lKjIpOwogICAgaW50IG5lZWQ9b25lKihyLWwpOwogICAgaW50IHRvcD0wOwogICAgdG1wWysrdG9wXT1MLng7CiAgICBpZihMLnkhPUwueCkKICAgICAgICB0bXBbKyt0b3BdPUwueTsKICAgIHRtcFsrK3RvcF09Ui54OwogICAgaWYoUi55IT1SLngpCiAgICAgICAgdG1wWysrdG9wXT1SLnk7CiAgICBSRVAoaSwxLHRvcCkKICAgICAgICBmb3IoaW50IGo9aSsxO2o8PXRvcDsrK2opCiAgICAgICAgICAgIGlmKGYodG1wW2ldLHRtcFtqXSxuZWVkKSkKICAgICAgICAgICAgICAgIHJldHVybiBtcCh0bXBbaV0sdG1wW2pdKTsKICAgIHJldHVybiBtcCgwLDApOwp9CgppbnQgbWFpbigpCnsKI2lmbmRlZiBPTkxJTkVfSlVER0UKLy8gICAgZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pO2ZyZW9wZW4oIm91dHB1dC50eHQiLCJ3IixzdGRvdXQpOwojZW5kaWYKICAgIG49aW5pY2p1aigpOwogICAgaW50IGk7CiAgICBSRVAoaSwxLG4pCiAgICAgICAgbnVtW2ldPWk7CiAgICBwYWlyPGludCxpbnQ+IEw9d29yaygxLG4sMSk7CiAgICBpZihMLng9PUwueSkKICAgICAgICBvZHBvd2llZHooTC54KTsKICAgIGVsc2UKICAgICAgICBvZHBvd2llZHooZyhMLngsTC55KT9MLnk6TC54KTsKICAgIHJldHVybiAwOwp9Cg==