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

struct node
{
int nodeNumber;
int childCount;
struct node** childArray;
};

typedef struct node Node;

struct input
{
int start;
int end;
struct input* next;
};

typedef struct input Input;

int PrintLoop(int array[],int currentCount,int maxLength,Node* head)
{
	int currentNode = head->nodeNumber;
	int i = 0,j=0,k=-1;
	for(i=0;i<currentCount;i++)
	{
		if(array[i]==currentNode)
			break;
	}
	if(i==currentCount)
	{
		array[i] = currentNode;
		currentCount++;
		for(j=0;j<head->childCount;j++)
		{		
			k = PrintLoop(array,currentCount,maxLength,head->childArray[j]);
			if(k==1)
				break;
		}
	}
	else
	{
		int minIndex = i,l=i;
		int minNumber = array[i];
		while(l<currentCount)
		{
			if(array[l]<minNumber)
			{
				minIndex = l;
				minNumber = array[l];
			}
			l++;	
		}
		
		printf("%d",minNumber);
		if(minIndex!=currentCount-1)
		{
			l = minIndex+1;
		}
		else
		{
			l = i;
		}

				

		while(l!=minIndex)
		{
			printf("->%d",array[l]);
			if(l!=currentCount-1)
			{
				l++;
			}
			else
			{
				l = i;
			}
		}
		printf("->%d",array[l] );
		k = 1;
	}
return k;
}


int main(void)
{
	int i,j;
	Input *inputHead=NULL,*tempInput=NULL,*lastInput=NULL;
	int input;
	scanf("%d",&input);
	Node** nodeArray = (Node**)malloc(input*sizeof(Node*));
	for(i=0;i<input;i++)
	{
		Node* temp = (Node*)malloc(sizeof(Node));
		temp->nodeNumber = 0;
		temp->childCount = 0;
		temp->childArray = NULL;
		nodeArray[i] = temp;
	}
	
	i=0;
	while(i!=-1)
	{
		scanf("%d",&i);
		if(i!=-1)
		{
			tempInput= (Input*)malloc(sizeof(Input));
			tempInput->start = i;
			nodeArray[i]->childCount++;
			tempInput->next=NULL;
			scanf("%d",&i);
			tempInput->end = i;

			if(inputHead==NULL)
			{
				inputHead = tempInput;
				lastInput = tempInput;
			}
			else
			{
				lastInput->next = tempInput;
				lastInput = tempInput;
			}
		}

	}

	for(i=0;i<input;i++)
	{
		nodeArray[i]->childArray = (Node**)malloc(nodeArray[i]->childCount*sizeof(Node*));
		nodeArray[i]->nodeNumber = nodeArray[i]->childCount-1;
	}

	while(inputHead!=NULL)
	{
		tempInput = inputHead;
		nodeArray[tempInput->start]->childArray[nodeArray[tempInput->start]->nodeNumber] = nodeArray[tempInput->end];
		nodeArray[tempInput->start]->nodeNumber--;
		inputHead = inputHead->next;
		free(tempInput);
	}
	int *array = (int*)malloc(input*sizeof(int));
	for(i=0;i<input;i++)
	{
		nodeArray[i]->nodeNumber = i;
		array[i] = -1;
	}
	j=-1;
	for(i=0;i<input;i++)
	{
		j = PrintLoop(array,0,input,nodeArray[i]);
		if(j==1)
		{
			break;
		}
	}

	if(j==-1)
	{
		printf("No Loop");
	}
	return 0;
}
