#include using namespace std; constexpr int STEPS = 39; constexpr int C = 200000; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); long long n; cin >> n; vector values = {1}; for (int i = 0; i < STEPS; i++) { values.push_back(0); auto new_values = values; for (int j = 0; j < values.size(); j++) { if (j > 0) new_values[j] += values[j - 1]; if (j + 1 < values.size()) new_values[j] += values[j + 1]; } values = new_values; } cout << C << "\n"; for (int i = 0; i < C / (1 + STEPS); i++) { for (int j = 0; j < STEPS + 1; j++) { cout << j << " " << i * 2 << " " << (j == 0 ? 1 : 0) << '\n'; } } vector> indexed; for (int i = 0; i < values.size(); i++) { indexed.push_back({values[i], i}); } sort(begin(indexed), end(indexed)); vector> answer; for (int i = indexed.size() - 1; i >= 0; i--) { int counter = 0; while (indexed[i].first <= n) { n -= indexed[i].first; answer.push_back({indexed[i].second, counter * 2}); counter += 1; } } cout << answer.size() << "\n"; for (auto a : answer) { cout << a.first << " " << a.second << "\n"; } }