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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
vector<ll> fibbs;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int k;
    cin >> k;

    fibbs = vector<ll>({1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296, 433494437, 701408733, 1134903170});
    reverse(fibbs.begin(), fibbs.end());

    vector<pair<ll, ll>> ings;

    for(auto i: fibbs) {
        if(k/i) {
            ings.push_back({i, k/i});
        }

        k %= i;
    }

    // sort(ings.begin(), ings.end());



    cout << 100 << "\n";

    int c0 = 0;
    int c1 = 1;

    int x = 1;

    // for(auto i: ings) {
    //     cout << i.first << " ";
    // }
    // cout << endl;
    // cout << "------\n";

    for(int i = 99; i >= 1; i--) {
        int s = c0+c1;

        if(!ings.size()) {
            break;
        }
    
        if(ings[ings.size()-1].first == s) {
            cout << ++x << " " << i << "\n";
            ings.pop_back();
        }

        c0 = c1;
        c1 = s;
    }

    for(int i = 0; i < 50-x; i++) {
        cout << -1 << " " << "-1" << "\n";
    }
    // cout << 50-x << endl;




    for(int i = 50; i <= 98; i++) {
        cout << i+1 << " " << i+2 << "\n";
    }
    cout << 100 << " " << -1 << "\n";
    cout << -1 << " " << -1 << "\n";


    return 0;
}