//Grzegorz Wierzowiecki
//Program generujący graf wszyskich możliwości dla n kamieni
#include <stdio.h>
#define OPISGRAFU "Kazdy wierzcholek grafu jest oznaczony przez dwie liczby.\\nPierwsza to numer lewego kamienia\\nDruga to numer prawego kamienia.\\n\\nGrzegorz Wierzowiecki 2005"

typedef unsigned long int ULI;

int main(){
	ULI i,j,n;
	scanf("%lu", &n );

	printf("digraph kamienie{\n");
	printf("graph [ label=\"" OPISGRAFU " \" ];\n\n");

	for(i=0; i<n; ++i) for(j=i; j<n; ++j){
		printf("i%luj%lu [ label=\"%lu, %lu\" ];\n", i ,j, i, j);
	}
	printf("\n");
	
	for(i=0; i<n; ++i) for(j=i; j<n; ++j)
		if( i < j){
			printf("i%luj%lu -> i%luj%lu;\n", i,j, i+1 ,j);
			printf("i%luj%lu -> i%luj%lu;\n", i,j, i ,j-1);
		}
	
	printf("}\n");

	return 0;
}
