class Hanoi
{ static int starthoehe;
  static int bewegungen = 0;

  static void bewege(char von, char nach)
  { Out.println("Scheibe von " + von + " nach " + nach);
    bewegungen++;
  }

  static void turm(char start, char ziel, char ablage, int hoehe)
  { if (hoehe>1) turm(start, ablage, ziel, hoehe-1);
    bewege(start, ziel);
    if (hoehe>1) turm(ablage, ziel, start, hoehe-1);
  }

  public static void main(String[] arg)
  {  do
     {  Out.print("Wie hoch soll der \"Turm von Hanoi\" sein? ");
        starthoehe = In.readInt();
        if (!In.done())
             { starthoehe = 0;
               String quatsch = In.readLine();
             }
     } while (starthoehe<=0);
     Out.println("Die Ausgabe fuer einen \"Turm von Hanoi\"" +
                 " der Hoehe " + starthoehe + ".");
     Out.println("Die Staebe sind mit A, B und C bezeichnet.");
     Out.println("Der Turm soll von A nach C transportiert werden.");
     turm('A', 'C', 'B', starthoehe); // von A nach C ueber B
     Out.println("Es waren " + bewegungen +
                 " Bewegungen fuer die Turmhoehe "
                 + starthoehe + " noetig.");
  } // main
} // class Hanoi
