#include using namespace std; using ll=long long; using ld=double; #define FOR(i,a,b) for(ll i=a;i<(ll)b;++i) #define F(n) FOR(i,0,n) #define FF(n) FOR(j,0,n) #define aa first #define bb second #define PB push_back #define EQ(a,b) (fabs(a-b)<=(fabs(a+b)*EPS)) #define MOD ((ll)(1e9+7)) #define MX 63 ll n = 0; stringstream out; void pt(int x, int y, int val) { out << x << ' ' << y << ' ' << val << '\n'; n ++; } void createTube(int sx, int len) { pt(sx, 0, 1); for (int i = 1; i < len; ++ i) { pt(sx, i, 0); } if (len == 0) return; for (int i = 0; i < MX - len + 1; ++ i) { for (int j = 0; j < MX - len + 1; ++ j) { pt(sx + i, j + len, 0); } } } stringstream out2; int picks; void pt2(int x, int y) { out2 << x << ' ' << y << '\n'; picks ++; } void pickPower(int p) { //cout << "power: " << p << endl; F(p + 1) { pt2(p*MX*2 + i, MX - i); } } int main(){ ios::sync_with_stdio(0);cin.tie(0); for (int i = 0; i <= MX; ++ i) { createTube(i*MX*2, MX - i); } cout << n << endl; cout << out.str() << endl; ll tr; cin >> tr; // pick out the values F(MX) { ll mask = 1ll << i; if (mask & tr) pickPower(i); } cout << picks << ' ' << MX << endl; cout << out2.str() << endl; return 0; }