import java.util.*;

public class Euler {
    public static void teeKierros(Verkko verkko, int alku) {
        ArrayList<Integer> kierros = new ArrayList<Integer>();
        int nyky = alku;
        do {
            int uusi = verkko.haeNaapurit(nyky).first();
            verkko.poistaKaari(nyky, uusi);
            nyky = uusi;
            kierros.add(nyky);
        } while (nyky != alku);
        for (int solmu : kierros) {
            System.out.print(solmu + " ");
            if (verkko.haeNaapurit(solmu).size() > 0) {
                teeKierros(verkko, solmu);
            }
        }
    }

    public static void teeEuler(Verkko verkko) {
        if (!verkko.euler()) {
            System.out.println("Verkossa ei ole Eulerin kierrosta!");
            return;
        }
        if (verkko.haeSolmut().size() == 0) return;
        for (int alku : verkko.haeSolmut()) {
            if (verkko.haeNaapurit(alku).size() == 0) continue;
            System.out.print(alku + " ");
            teeKierros(verkko.teeKopio(), alku);
            System.out.println();
            break;
        }
    }

    public static void main(String[] args) {
        Verkko verkko = new Verkko();
        verkko.lisaaKaari(1, 4);
        verkko.lisaaKaari(2, 4);
        verkko.lisaaKaari(2, 5);
        verkko.lisaaKaari(4, 5);
        verkko.lisaaKaari(1, 3);
        verkko.lisaaKaari(3, 4);
        teeEuler(verkko);
    }
}

