#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; __int128 gcd(__int128 x,__int128 y){ return y==0 ? x : gcd(y,x%y); } const int N=10000000; vector prime; bool is_prime[10000000+1]; void era(){ for(int i=0;i>=1; } return res; } bool check(long long x){ for(int i=0;prime[i]*prime[i]<=x;i++){ if(x%prime[i]==0) return false; } return true; } int main() { era(); long long n; cin>>n; __int128 n128=n; __int128 x128=gcd(n128,(1+n128)*n128/2); long long x=x128; if(x!=1 && check(x)){ cout<<1+x<