Example

Input

3


Output

1
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,n) for(ll i = 0;i<((ll)(n));i++)
#define reg(i,a,b) for(ll i = ((ll)(a));i<=((ll)(b));i++)
#define irep(i,n) for(ll i = ((ll)(n)-1);i>=0;i--)
#define ireg(i,a,b) for(ll i = ((ll)(b));i>=((ll)(a));i--)
template<class T = int> using V = vector<T>;
template<class T = int> using VV = V< V<T> >;
template<class T = int> void print(vector<T> v){for(auto a:v)cout<<a<<" ";cout<<endl;}

/*
*/

ll modpow(__int128_t a, ll n,ll mo) {
	__int128_t r=1;
	while(n) r=r*((n%2)?a:1)%mo,a=a*a%mo,n>>=1;
	return r;
}

ll euler(ll n){
	ll res=n;
	for(ll i=2;i*i<=n;i++){
		if(n%i==0){
			res=res/i*(i-1);
			while(n%i==0)n/=i;
		}
	}
	if(n!=1)res=res/n*(n-1);
	return res;
}

long long gcd(long long a,long long b){
	if(b==0)return a;
	return gcd(b,a%b);
}
long long lcm(long long a,long long b){
	return a*b/gcd(b,a%b);
}

ll n,l=1,ans=1e18;

int main(void){
	cin>>n;
	if(n==2){
		cout<<1<<endl;
		return 0;
	}
	for(ll i=2;i*i<=n;i++){  // 同じ素因数2個あったらアウト
		if(n%(i*i)==0){
			cout<<-1<<endl;
			return 0;
		}
	}
	ll n2=n;
	for(ll i=2;i*i<=n;i++){
		if(n2%i==0){
			l = lcm(l,i-1);
			n2 /= i;
		}
	}
	if(n2>1)l = lcm(l,n2-1);
	if(gcd(n,l)!=1){
		cout<<-1<<endl;
		return 0;
	}
	if(gcd(n,l)!=1){
		cout<<-1<<endl;
		return 0;
	}
	ll phi_l = euler(l);
	for(ll i=1;i*i<=phi_l;i++){
		if(phi_l%i==0){
			if(modpow(n,i,l)==1)ans=min(ans,i);
			if(modpow(n,phi_l/i,l)==1)ans=min(ans,phi_l/i);
		}
	}
	cout<<ans<<endl;
	return 0;
}
