1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <vector>
//#include <bits/stdc++.h>
using namespace std;

#define FORE(x, b, e) for(int x = b; x <= (e); ++x)
#define FORL(x, b, e) for(int x = b; x <  (e); ++x)

#define P(x) cout <<#x <<'=' <<(x) <<" ";
#define PP cout <<endl;
#define Pv(x,a,b) cout << #x<<'=';for(int i=a;i<=b;i++)cout<<' '<<x[i];PP
#define Pvv(x,y,a,b) cout <<#x <<#y <<'=';FORE(i,a,b)cout<<' '<<x[y[i]];PP

	
void pr(int a, int b, int c) { 
	cout <<b <<" " <<c << endl;
//if(b>0)cout <<a <<"->" <<b<<"; ";  if(c>0)cout <<a <<"->" <<c<<"; ";  cout<< endl;
}

int main()
{
	std::ios_base::sync_with_stdio(false);  cin.tie(NULL);
	
	int n, b=0, B[32];	

	cin >>n;
	if(n==1) { cout <<"2\n2 -1\n-1 -1\n"; return 0; }
	
	int x=n, p=0;
	while(x){
//P(x);P(x&1);P(b);PP;
		if(x&1) { B[++b]=p; }
		p++;
		x = x>>1;
	}


	p=B[b];
	cout << (b+1+2*p) <<endl;
	for(int i=1; i<b; i++)
		pr(i,i+1,b+2*(p-B[i]));
	pr(b,b+1,b+2);

	n=b+1;
	for(int i=1; i<p; i++) {
		pr(n  ,n+2,n+3);
		pr(n+1,n+2,n+3);
		n+=2;
	}
	pr(n  ,n+2,-1);
	pr(n+1,n+2,-1);
	pr(n+1,-1,-1);
	
//**/Pv(B,1,b);
	return 0;
}