n=int(input()) ans=n-1 for i in range(2,n): nn=n t=nn%i nn//=i flg=True while nn: if t==nn%i: nn//=i else: flg=False break if flg: print(i) exit() # ぞろ目になっても2桁を超えない st=set() for i in range(1,int(n**.5)+1): if n%i==0: st.add(i) st.add(n//i) # n=x*(p+1)=x*p+x # x:nの約数 for x in st: p=n//x p-=1 if p>=10**6 and n%p==(n//p)%p: ans=min(ans,p) print(ans)