n=int(input()) if n<=10**6: 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() else: # ぞろ目になっても2桁を超えない st=set() for i in range(1,int(n**.5)+1): if n%i==0: st.add(i) st.add(n//i) ans=n-1 # n=x*(p+1) # x:nの約数 for x in st: p=n//x-1 if p**2>n and p>1 and n%p==(n//p)%p: ans=min(ans,p) print(ans)