#include <bits/stdc++.h>
#define debug(x) cout << #x << " = " << x << endl
#define REP(i,n) for(Long i = 0; i < (Long)n; i++)
#define pb push_back
using namespace std;
typedef long long Long;
struct Data{
Long x , y;
Long d;
Data(){}
Data(Long x, Long y, Long d) : x(x), y(y), d(d){}
};
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
Long random(Long a, Long b) {
return uniform_int_distribution<Long>(a , b)(rng);
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
Long sz = 200;
map<pair<Long,Long> , bool> vis;
deque<Data> q;
vector<pair<Long,Long>> cells = {make_pair(0,0) };
vis[{0,0}]= true;
vis[{1, 0}] = true;
q.pb(Data(1,0,1));
while(true){
Long curD = q.front().d;
vector<pair<Long,Long>> add;
while(!q.empty() && curD == q.front().d){
Data u = q.front();
q.pop_front();
add.pb({u.x, u.y});
vis[{u.x, u.y}] = true;
for(Long a = -1; a <= 1; a++){
for(Long b = -1; b <= 1; b++){
if(abs(a) + abs(b) != 1) continue;
if(u.x + a > 0 && !vis[{a + u.x , b + u.y}]){
vis[{a + u.x , b + u.y}] = true;
q.pb(Data(a + u.x, b + u.y , u.d + 1));
}
}
}
}
if(add.size() + cells.size() > sz){
break;
}
for(auto p : add) cells.pb(p);
}
Long minX = 1e18;
Long minY = 1e18;
for(auto c : cells){
minX = min(minX, c.first);
minY = min(minY, c.second);
}
Long maxX = -1;
Long maxY = -1;
for(Long i = 0; i < cells.size(); i++){
cells[i].first += -minX + 1;
cells[i].second += -minY + 1;
maxX = max(maxX, cells[i].first);
maxY = max(maxY , cells[i].second);
}
Long n = maxX;
Long m = maxY;
Long T = 1;
cout << T << endl;
cout << n << " " << m << " " << cells.size() << endl;
REP( i , n){
REP(j , m){
cout << random(-20 , 20) << " " ;
}
cout << endl;
}
//cout << "cells = " << endl;
for(auto c : cells){
cout << c.first << " " << c.second << " " << random(-20 , 20) << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZGVidWcoeCkgY291dCA8PCAjeCA8PCAiID0gIiA8PCB4IDw8IGVuZGwKI2RlZmluZSBSRVAoaSxuKSBmb3IoTG9uZyBpID0gMDsgaSA8IChMb25nKW47IGkrKykKI2RlZmluZSBwYiBwdXNoX2JhY2sKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIExvbmc7CgpzdHJ1Y3QgRGF0YXsKCUxvbmcgeCAsIHk7CglMb25nIGQ7CglEYXRhKCl7fQoJRGF0YShMb25nIHgsIExvbmcgeSwgTG9uZyBkKSA6IHgoeCksIHkoeSksIGQoZCl7fQp9OwoKbXQxOTkzN182NCAgcm5nKGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKS50aW1lX3NpbmNlX2Vwb2NoKCkuY291bnQoKSk7CgpMb25nIHJhbmRvbShMb25nIGEsIExvbmcgYikgewoJcmV0dXJuIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxMb25nPihhICwgYikocm5nKTsKfQoKaW50IG1haW4oKSB7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWNpbi50aWUoTlVMTCk7Cgljb3V0LnRpZShOVUxMKTsKCQoJTG9uZyBzeiA9IDIwMDsKCQoJbWFwPHBhaXI8TG9uZyxMb25nPiAsIGJvb2w+IHZpczsKCWRlcXVlPERhdGE+IHE7CgkKCXZlY3RvcjxwYWlyPExvbmcsTG9uZz4+IGNlbGxzID0ge21ha2VfcGFpcigwLDApIH07Cgl2aXNbezAsMH1dPSB0cnVlOwoJCgl2aXNbezEsIDB9XSA9IHRydWU7CglxLnBiKERhdGEoMSwwLDEpKTsKCQoJd2hpbGUodHJ1ZSl7CgkJTG9uZyBjdXJEID0gcS5mcm9udCgpLmQ7CgkJdmVjdG9yPHBhaXI8TG9uZyxMb25nPj4gYWRkOwoKCQl3aGlsZSghcS5lbXB0eSgpICYmIGN1ckQgPT0gcS5mcm9udCgpLmQpewoJCQlEYXRhIHUgPSBxLmZyb250KCk7CgoJCQlxLnBvcF9mcm9udCgpOwoJCQlhZGQucGIoe3UueCwgdS55fSk7CgkJCXZpc1t7dS54LCB1Lnl9XSA9IHRydWU7CgkJCWZvcihMb25nIGEgPSAtMTsgYSA8PSAxOyBhKyspewoJCQkJZm9yKExvbmcgYiA9IC0xOyBiIDw9IDE7IGIrKyl7CgkJCQkJaWYoYWJzKGEpICsgYWJzKGIpICE9IDEpIGNvbnRpbnVlOwoJCQkJCWlmKHUueCArIGEgPiAwICYmICF2aXNbe2EgKyB1LnggLCBiICsgdS55fV0pewoJCQkJCQl2aXNbe2EgKyB1LnggLCBiICsgdS55fV0gPSB0cnVlOwoJCQkJCQlxLnBiKERhdGEoYSArIHUueCwgYiArIHUueSAsIHUuZCArIDEpKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJaWYoYWRkLnNpemUoKSArIGNlbGxzLnNpemUoKSA+IHN6KXsKCQkJYnJlYWs7CgkJfQoJCWZvcihhdXRvIHAgOiBhZGQpIGNlbGxzLnBiKHApOwoJfQoJTG9uZyBtaW5YID0gMWUxODsKCUxvbmcgbWluWSA9IDFlMTg7Cglmb3IoYXV0byBjIDogY2VsbHMpewoJCW1pblggPSBtaW4obWluWCwgYy5maXJzdCk7CgkJbWluWSA9IG1pbihtaW5ZLCBjLnNlY29uZCk7Cgl9CglMb25nIG1heFggPSAtMTsKCUxvbmcgbWF4WSA9IC0xOwoJZm9yKExvbmcgaSA9IDA7IGkgPCBjZWxscy5zaXplKCk7IGkrKyl7CgkJY2VsbHNbaV0uZmlyc3QgKz0gLW1pblggKyAxOwoJCWNlbGxzW2ldLnNlY29uZCArPSAtbWluWSArIDE7CgkJbWF4WCA9IG1heChtYXhYLCBjZWxsc1tpXS5maXJzdCk7CgkJbWF4WSA9IG1heChtYXhZICwgY2VsbHNbaV0uc2Vjb25kKTsKCX0KCUxvbmcgbiA9IG1heFg7CglMb25nIG0gPSBtYXhZOwoJTG9uZyBUID0gMTsKCWNvdXQgPDwgVCA8PCBlbmRsOwoJY291dCA8PCBuIDw8ICIgIiA8PCBtIDw8ICIgIiA8PCBjZWxscy5zaXplKCkgPDwgIGVuZGw7CglSRVAoIGkgLCBuKXsKCQlSRVAoaiAsIG0pewoJCQljb3V0IDw8IHJhbmRvbSgtMjAgLCAyMCkgPDwgIiAiIDsKCQl9CgkJY291dCA8PCBlbmRsOwoJfQoJLy9jb3V0IDw8ICJjZWxscyA9ICIgPDwgZW5kbDsKCWZvcihhdXRvIGMgOiBjZWxscyl7CgkJY291dCA8PCBjLmZpcnN0IDw8ICIgIiA8PCBjLnNlY29uZCA8PCAiICIgIDw8IHJhbmRvbSgtMjAgLCAyMCkgPDwgZW5kbDsKCX0KCXJldHVybiAwOwp9Cg==