#include <iostream> #include <string> #include <vector> #include <queue> #include <deque> #include <algorithm> #include <set> #include <map> #include <bitset> #include <cmath> #include <functional> #include <iomanip> #define vll vector<ll> #define vvvl vector<vvl> #define vvl vector<vector<ll>> #define VV(a, b, c, d) vector<vector<d>>(a, vector<d>(b, c)) #define VVV(a, b, c, d) vector<vvl>(a, vvl(b, vll (c, d))); #define re(c, b) for(ll c=0;c<b;c++) #define rep(a,b,c) for(ll a=b;a<c;a++) #define all(obj) (obj).begin(), (obj).end() typedef long long int ll; typedef long double ld; using namespace std; void get(vll &a){re(i,a.size()) scanf("%lld",&a[i]);} void get(vvl &a){re(i,a.size()) re(j,a[0].size()) scanf("%lld",&a[i][j]);} void print(vll &a){re(i,a.size()) cout<<a[i]<<(i==a.size()-1?"\n":" ");} void print(vvl &a){re(i,a.size()) re(j,a[0].size())cout<<a[i][j]<<(j==a[0].size()-1?"\n":" ");} int main() { ll x;std::cin >> x; vll dcnt(2000001, 0); for(ll i=1;i<=2000001;i++) for(ll j=i;j<=2000001;j+=i) dcnt[j]++; vvl sa = VV(2000001, 0, 0, ll); ll ans = 100000000000; for(ll a=1;a<=x-1;a++){ ll b = x - a; ll D = abs(a - dcnt[a] - (b - dcnt[b])); ans = min(ans, D); sa[D].push_back(a); } sort(all(sa[ans])); for(auto e:sa[ans]) std::cout << e << " " << x - e << '\n'; }