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
// Jakub Rożek
// Skierowany graf acykliczny [C]
// Potyczki 2020
// O( n ) (n=100)

#include <bits/stdc++.h>
using namespace std;

long long k,n;
long long fib[50];
long long t[102][2];

int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	
	fib[1]=1;
	fib[2]=1;
	for(int i=3; i<=45; ++i) fib[i]=fib[i-1]+fib[i-2];
	for(int i=1; i<=90; ++i) t[i][0]=-1;
	for(int i=1; i<=90; ++i) t[i][1]=-1;
	
	for(int i=1; i<=88; ++i) t[i][0]=i+1;
	for(int i=2; i<=86; i+=2) t[i][1]=i+3;
	
	cin>>k;
	
	for(int i=89; i>0; i-=2)
	{
		if(k>=fib[(i+1)/2])
		{
			k-=fib[(i+1)/2];
			t[i][1]=90;
		}
	}
	
	cout<<"90\n";
	for(int i=1; i<=90; ++i) cout<<t[i][0]<<" "<<t[i][1]<<"\n";
	return(0);
}