#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,m,n) for(int i=(int)(m) ; i < (int) (n) ; ++i ) #define rep(i,n) REP(i,0,n) using ll = long long; const int inf=1e9+7; const ll longinf=1LL<<60 ; const ll mod=1e9+7 ; vector > prime_factorize(long long n) { vector > res; for (long long p = 2; p * p <= n; ++p) { if (n % p != 0) continue; int num = 0; while (n % p == 0) { ++num; n /= p; } res.push_back(make_pair(p, num)); } if (n != 1) res.push_back(make_pair(n, 1)); return res; } int main(){ ll n; cin >> n; ll ans = -1; if(n==2){ cout << 3 << endl; return 0; } for(ll i=2; i<=1000001; i++){ ll now = n; set keta; while(now>0){ keta.insert(now%i); now/=i; } if(keta.size()==1){ ans = i; break; } } if(ans!=-1){ cout << ans << endl; return 0; } for(ll i=1000000; i>=1; i--){ if(n%i==0 && i<(n/i)-1){ ans = n/i - 1; break; } } cout << ans << endl; }