/* Completion left as an exercise. */
public class HanoiDisk {
  HanoiDisk above = null;
  int size;
  
  void move(HanoiTower fromTower, HanoiTower toTower, HanoiTower viaTower) {
    if (above == null) {
      fromTower.remove(this);
      toTower.add(this);
    }
    else {
      above.move(fromTower, viaTower, toTower);
      fromTower.remove(this);
      toTower.add(this);
      above.move(viaTower, toTower, fromTower);
  }
    
    void add(HanoiDisk d) {
      if (above == null)
        above = d;
      else
        above.add(d);
    }
}
