#include<cstdio>
#include<cstdlib>
#include<ctime>
#include<set>
int bigrand(){
	return abs((rand()<<15)|rand());
}
std::set<int> sr,sc;
int rowsnum[500005],colsnum[500005];
int main(){
	int T=4;
	printf("%d\n",T);
	srand(time(0));
	while(T--){
		sr.clear();
		sc.clear();
		int n=1000000000,m=1000000000;
		int k=499999;
		printf("%d %d %d\n",n,m,k);
		int rows=250000;
		int cols=250000;
		for(int i=1;i<=rows;i++){
			int now=bigrand()%n+1;
			while(sr.find(now)!=sr.end())
				now=bigrand()%n+1;
			sr.insert(now);
			rowsnum[i]=now;
		}
		for(int i=1;i<=cols;i++){
			int now=bigrand()%m+1;
			while(sc.find(now)!=sc.end())
				now=bigrand()%m+1;
			sc.insert(now);
			colsnum[i]=now;
		}
		
		int nowc=1,nowr=1;
		int mode=1;
		for(int i=1;i<=k;i++){
			if(mode){
				printf("%d %d %d\n", rowsnum[nowr], colsnum[nowc], 999990000);
				nowr++;
				mode^=1;
			}
			else{
				printf("%d %d %d\n", rowsnum[nowr], colsnum[nowc], -1000000000);
				nowc++;
				mode^=1;
			}
		}

		puts("0 0");
		// printf("%d %d\n",rows,cols);
		// for(int i=1;i<=rows;i++)
		// 	printf("%d %d\n",rowsnum[i],rand()%20+1);
		// for(int i=1;i<=cols;i++)
		// 	printf("%d %d\n",colsnum[i],rand()%20+1);
	}

}
