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
#include <iostream>

void printOutput(int a, int b) {
    std::cout << a << ' ' << b << '\n';
}

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int k;
    std::cin >> k;
    std::cout << 100 << '\n';
    int currentNode = 1;
    while (k > 1) {
        if (k & 1) {
            printOutput(100, ++currentNode);
            --k;
        } else {
            printOutput(currentNode + 1, currentNode + 2);
            ++currentNode;
            printOutput(currentNode + 1, -1);
            ++currentNode;
            k /= 2;
        }
    }
    while (currentNode < 100) {
        printOutput(++currentNode, -1);
    }
    printOutput(-1, -1);
}