#include #include #include #include #include #include #include #include using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define REP(i, k, n) for (int i = (int)(k); i < (int)(n); i++) #define rrep(i, n) for (int i = (int)(n)-1; i >= 0; i--) #define rREP(i, k, n) for (int i = (int)(n)-1; i >= k; i--) #define debug(x) cerr<<#x<<": "< #define pb push_back #define mp make_pair #define pcnt __builtin_popcount typedef long long ll; const int inf = 100100100; const int MOD = (int)1e9 + 7; const double EPS = 1e-9; int main(){ cin.tie(0); ios_base::sync_with_stdio(false); int k; vector > v; cin >> k; //完全グラフ作成 REP(i,1,32){ REP(j,i+1,32){ v.pb(mp(i,j)); } } //i番目と32をつなげると2^(i-1)通り増える REP(i,2,32) if(k & (1<<(i-2))) v.pb(mp(i,32)); cout << 32 << " " << v.size() << endl; rep(i,v.size()) cout << v[i].fi << " " << v[i].se << endl; return 0; }