#include using namespace std; using ll = long long; using ull = unsigned long long; using ld = long double; template using vc = vector; template using vvc = vc>; using pi = pair; using vi = vc; using vvi = vvc; #define rep(i,a,b) for (ll i = a; i < b; i++) #define irep(i,a,b) for (int i = a; i > b; i--) #define print(n) cout << n << '\n' #define pritn(n) print(n) #define rup(a,b) (a+b-1)/b #define input(A,N) rep(i,0,N) cin>>A[i] #define chmax(a,b) a = max(a,b) #define chmin(a,b) a = min(a,b) ll calc(ll n,map &dd,set &ddd){ ll aa = n; map d; ll m = sqrt(n); for(auto i:ddd){ while(n%i==0){ d[i] += 1; n /= i; } if(i>n) break; if (dd[n] != 0){ ll ans = 1; for (auto itr:d){ ans *= itr.second+1; } ans *= dd[n]; dd[aa] = ans; return ans; } } if (n!= 1) d[n] += 1; ll ans = 1; for(auto itr:d){ ans *= itr.second+1; } return ans; } void calcc(set &d,ll n){ vc l(n,0); rep(i,2,n+1){ if (l[i]) continue; d.insert(i); ll now = i; while (now<=n){ l[now] = 1; now += i; } } d.size(); return; } int main(){ cout << fixed << setprecision(15); ll X; cin >> X; ll x = X/2; ll now = 100000; set> ans; map dd; set ddd; calcc(ddd,x); rep(i,1,x+1){ ll j = X - i; ll a = i - calc(i,dd,ddd); ll b = j - calc(j,dd,ddd); if (now < abs(a-b)){ continue; }else if (now>abs(a-b)){ ans.clear(); now = abs(a-b); } ans.insert(pair(i,j)); if(i!=j){ ans.insert(pair(j,i)); } } // auto g = [](pair a,pair b){return a