import java.io.*;

class TopoSort
{ 
    int n;
    Element [] Liste; // Liste aller Elemente
    Element [] freieElemente; // Liste der Elemente ohne Vorgänger
    int AnzfreieElemente;     // (als Stapel gespeichert)

    static IntReader input;

public static void main (String[] args) throws IOException
    {
	input = new IntReader(args);
	TopoSort x = new TopoSort();
    }

TopoSort() throws IOException
{
    System.out.println("Topologischen Sortieren.");
    // Einlesen
    n = input.readInt();
        
    // Inititalisieren array:
    Liste = new Element [n+1];
    for (int i=1; i<=n; i++) Liste[i] = new Element(i);

    // Einlesen Paare
    try	{ 
	for (;;) {
	    Element e = Liste[input.readInt()];
	    Element f = Liste[input.readInt()];
	    Paar x = new Paar(e,f);
	    x.next = e.ersterNachfolger;
	    e.ersterNachfolger = x;
	    f.anzVorgänger++;
    }   }
    catch(EOFException e) {}
	
    // Vorbereiten:
    freieElemente = new Element [n];
    AnzfreieElemente = 0;
    for (int i=1; i<=n; i++) {
	Element e = Liste[i];
	if (e.anzVorgänger==0)
	    freieElemente[AnzfreieElemente++]=e;
    }
    // Sortieren:
    System.out.println("");
 sort:
    for (int i=1; i<=n; i++) {
	if (AnzfreieElemente == 0) {
	    System.out.println("Die Eingabe enthält einen Kreis."); 
	    break sort;
	}
	// Wähle ein Paar ohne Vorgänger
	Element x = freieElemente[--AnzfreieElemente];
	System.out.println(x);
	// Entferne ausgehende Paare:
	Paar z = x.ersterNachfolger;
	while (z != null) {
	    z.j.anzVorgänger--;
	    if (z.j.anzVorgänger == 0)
		freieElemente[AnzfreieElemente++]=z.j;
	    z = z.next;
	}
    }
}
}

class Element{
	int name, anzVorgänger;
	Paar ersterNachfolger;
	Element (int i) {
	    name = i;
	    anzVorgänger = 0; 
	    ersterNachfolger = null;
	}
	public String toString() {return String.valueOf(name); }
}

class Paar {
	Element i,j;
	Paar next;
	Paar(Element ii, Element jj) {i = ii; j = jj;}
}