#include using namespace std; #define TESTS 0 long long n; char c[1000][11]; long long arr[1000][11], arrcp[1000][11]; void solve() { cin >> n; if (n == 0) { cout << 0 << "\n"; cout << 0 << ' ' << 0 << "\n"; return; } vector, int> > vec; vector > ansvec; vector decomp; int stepen = 0; while(n) { decomp.push_back(n%70); n /= 70; stepen++; } --stepen; int cnt = 0; int X = 0; int Y = 0; int ansTime = 0; reverse(decomp.begin(), decomp.end()); for (int i = 0; i < decomp.size(); i++) { Y = 0; int rep = decomp[i]; int hgt = stepen*4+1; int len = cnt*8+hgt; int origX = X; for (int j = 1; j <= rep; j++) { vec.push_back({{X, Y}, 1}); for (int l = 1; l <= cnt*8; l++) { ++Y; vec.push_back({{X, Y}, 0}); } ansTime = max(ansTime, cnt*8+stepen*8); for (int m = 1; m <= stepen; m++) { vec.push_back({{X, Y+1}, 0}); vec.push_back({{X, Y+2}, 0}); vec.push_back({{X, Y+3}, 0}); vec.push_back({{X, Y+4}, 0}); vec.push_back({{X+1, Y}, 0}); vec.push_back({{X+1, Y+1}, 0}); vec.push_back({{X+1, Y+2}, 0}); vec.push_back({{X+1, Y+3}, 0}); vec.push_back({{X+1, Y+4}, 0}); vec.push_back({{X+2, Y}, 0}); vec.push_back({{X+2, Y+1}, 0}); vec.push_back({{X+2, Y+2}, 0}); vec.push_back({{X+2, Y+3}, 0}); vec.push_back({{X+2, Y+4}, 0}); vec.push_back({{X+3, Y}, 0}); vec.push_back({{X+3, Y+1}, 0}); vec.push_back({{X+3, Y+2}, 0}); vec.push_back({{X+3, Y+3}, 0}); vec.push_back({{X+3, Y+4}, 0}); vec.push_back({{X+4, Y}, 0}); vec.push_back({{X+4, Y+1}, 0}); vec.push_back({{X+4, Y+2}, 0}); vec.push_back({{X+4, Y+3}, 0}); vec.push_back({{X+4, Y+4}, 0}); X += 4; Y += 4; } ansvec.push_back({X, Y}); X = origX; Y += 2; } X += hgt + 2; ++cnt; --stepen; } cout << vec.size() << "\n"; for (int i = 0; i < vec.size(); i++) { cout << vec[i].first.first << ' ' << vec[i].first.second << ' ' << vec[i].second << "\n"; } cout << ansvec.size() << ' ' << ansTime << "\n"; for (int i = 0; i < ansvec.size(); i++) cout << ansvec[i].first << ' ' << ansvec[i].second << "\n"; } int main() { ios_base::sync_with_stdio(0);cin.tie(0); int tt = 1; #if TESTS cin >> tt; #endif while(tt--) { solve(); } }