#include<bits/stdc++.h>
using namespace std;
char in[100], out[100];

int main(){
	for(int I=1;I<=20;I++){
		int n, m, i, a, b, c;
		queue <int> q[110];
		priority_queue <pair<int, int> > pq;
		//scanf("%d", &m);
		//scanf("%d", &n);
		n = I * 5;
		m = I + 1;
		m = min(m,20);
		sprintf(in,".%d.in",I);
	    freopen(in,"w",stdout);
		printf("%d\n%d\n",m,n);
		for(i=1;i<=m;i++) pq.push({0,-i});
		
		for(i=1;i<=n;i++){
			//scanf("%d", &a);
			a = rand()%m+1;
			printf("%d",a);
			if(i==n) printf("\n");
			else printf(" ");
			
			b = pq.top().first;
			c = pq.top().second;
			pq.pop();
			pq.push({b-a,c});
			q[-c].push(i);
		}
		sprintf(in,".%d.out",I);
	    freopen(in,"w",stdout);
		for(i=1;i<=m;i++){
			while(!q[i].empty()){
				printf("%d ", q[i].front());
				q[i].pop();
			}
			printf("\n");
		}
	}
}
