//Loese dass Tuerme von Hanoi-Problem mit n Steinen

#include <stdio.h>
#define maxn 9 //Maximalzahl Steine

//Steine[a][0]= Anzahl Steine im Stapel a
//Steine[a][k]= Groesse des k-ten Steins im Stapel a
int Steine[3][maxn+1]; 
//Anzahl der Steine
int n;

//Verschiebe Stein von a nach b
void verschiebe(int a,int b)
{
  int w=Steine[a][Steine[a][0]];
  Steine[a][0]--;
  Steine[b][0]++;
  Steine[b][Steine[b][0]]=w;
}

//Erstelle Anfangskonfiguration
void initialisiere(int n)
{
  int k;
  Steine[0][0]=n;
  for (k=1;k<=n;k++) Steine[0][k]=n-k+1;
  Steine[1][0]=Steine[2][0]=0;
}

//Gib momentane Konfiguration am Bildschirm aus
void male (void)
{
  int k,j;
  printf("\n\n");
  for(k=n;k>0;k--)
    {
      printf("\n");
       for (j=0;j<3;j++)
	{
	  if (Steine[j][0]<k) printf("|"); else printf("%i",Steine[j][k]);
          printf("    ");
        }
    }
  getchar();
}

//Verschiebe n-Steine von a nach b mit c als Zwischenspeicher
void bt(int n,int a,int b,int c)
{
  if (n==1) {verschiebe(a,b);male();} 
  else {bt(n-1,a,c,b);verschiebe(a,b);male();bt(n-1,c,b,a);}
}

int main(void)
{
  printf("Anzahl Steine: ");scanf("%i",&n);initialisiere(n);male();getchar();
  bt(n,0,1,2);
  return(0);
}

      
 

