{$M 65520,0,655360}
program lygiagretus_procesoriai;

   const PRAD = 'DARBAI.DAT';
         REZ = 'DARBAI.REZ';
         MAX = 500; { maksimalus u‘duo‡i— skai‡ius }

   type lentele = array [1..MAX] of integer;
        aibe = set of 0..250;
        grafas = array [1..MAX] of aibe;
        tspalva = (balta, pilka, juoda);
        spalvu_len = array [1..MAX] of tspalva;

  { ‘emiau apra˛yti global–s kintamieji }
  var g: grafas;
      N: integer;    { u‘duo‡i— skai‡ius }
      ind: integer; { pildomos u‘duo‡i— eil‚s indeksas }
      eile: lentele; { atliekam— u‘duo‡i— eil‚ }

  procedure paieska_i_gyli (N: integer; g: grafas; var eile: lentele);

    { randa u‘duo‡i— atlikimo eili˛kum… }
    { proc. rezultatas - u‘pildyta eil‚ }
    var spalva: spalvu_len;
      procedure aplankyti (u: integer);
        { aplankoma vir˛–n‚ u }
        { paie˛kos ¨ gyl¨ dalis }
        var v: integer;
      begin
        spalva[u] := juoda;
        for v := 1 to  N do { nagrin‚jamos vir˛–n‚s, gretimos u }
          if v in g[u] then
             if spalva[v] = balta
                then aplankyti (v);
        ind := ind - 1;
        eile[ind] := u;
      end; { aplankyti }

    var u: integer;
  begin
    { i˛ priklausomyb‚s por— sukuriamas grafas }
    for u := 1 to N do      { nei vienoje vir˛–n‚je dar neapsilankyta }
      spalva[u] := balta;
   ind := N+1;
   for u := 1 to N do       { jei vir˛–n‚je dar neb–ta }
     if spalva[u] = balta     { j… reikia aplankyti }
        then aplankyti (u);
  end; { paie˛ka_¨_gyl¨ }

  procedure sud_grafas (var f: text; N, PP: integer; var g: grafas);
    { skaitomi duomenys ir sudaromas grafas }
    var u, v1, v2: integer;
  begin
    for u := 1 to N do
      g[u] := [];
    for u := 1 to PP do
      begin
        readln (f, v1, v2);
        g[v1] := g[v1] + [v2];
      end;
  end; { sud_grafas }

  procedure skaityti (var N: integer; var g: grafas);
    var f: text;
        PP: integer;
  begin
    assign (f, PRAD);
    reset (f);
    readln (f, N, PP);
    sud_grafas (f, N, PP, g);
    close (f);
  end; { skaityti }

  procedure rasyti (N: integer; eile: lentele);
    var f: text;
        i: integer;
  begin
    assign (f, REZ);
    rewrite (f);
    for i := 1 to N do
      writeln (f, eile[i]);
    close (f);
  end; { ra˛yti }

begin
  skaityti (N, g);
  paieska_i_gyli (N, g, eile);
  rasyti (N, eile);
end.