#include <stdio.h>
#include <stdlib.h>

int a[1024];
int stack[1024];

void main()
{
	int i, k, n, l, sp, to_go;

	for(k = 20; k >= 0; k--)
	{
		n = 1 + rand() % 1000;

		printf("%d\n", n);

		for(l = rand() % 20 + 1; l >= 0; l--)
		{
			for(i = 0; i < n; i++)
				a[i] = i+1;

			if(rand() & 1)
			{
				sp = 0;
				to_go = 1;

				for(i = 0; i < n; i++)
				{
					for(; !sp || ((to_go < n) && (rand() & 1)); to_go++)
						stack[sp++] = to_go;

					a[i] = stack[--sp];
				}
			}
			else
			{
				for(i = 0; i < n; i++)
				{
					int t;

					int xi = rand() % n;
					int yi = rand() % n;

					t = a[xi];
					a[xi] = a[yi];
					a[yi] = t;
				}
			}

			printf("%d", a[0]);

			for(i = 1; i < n; i++)
				printf(" %d", a[i]);

			printf("\n");
		}

		printf("0\n");
	}

	printf("0\n");
}
