#include <stdio.h>
#include <string.h>

char tower[3][20];

void print_tower()
{
	int i;
	for (i=0; i<3; i++) {
		printf("%d: %s\n", i, tower[i]);
	}
}

void hanoi(int from, int to, int work, int n)
{
	int len1, len2;
	if (n == 1) {
		printf("move %d to %d\n", from, to);

		len1 = strlen(tower[from]);
		len2 = strlen(tower[to]);
		tower[to][len2] = tower[from][len1-1];
		tower[to][len2+1] = 0;
		tower[from][len1-1] = 0;
		print_tower();
		
		return;
	}
	hanoi(from, work, to, n-1);
	hanoi(from, to, work, 1);
	hanoi(work, to, from, n-1);
}

int main(int argc, char **argv)
{
	int n, i;

	sscanf(argv[1], "%d", &n);

	for (i=0; i<n; i++) {
		tower[0][i] = '0' + (n-i);
	}
	tower[0][n] = 0;

	strcpy(tower[1], "");
	strcpy(tower[2], "");

	print_tower();

	hanoi(0, 1, 2, n);

	return 0;
}
