#include <stdio.h>
#include <stdlib.h>

int x, y;
int tab[8][8];
int mov[8][2]= {{1,2}, {-1,2}, {1,-2}, {-1,-2},{2,1}, {2,-1},{-2,1}, {-2,-1}};

void Print(void)
{
     int i, j;
     for (i=0; i<8; i++)
       {
        for (j=0; j<8; j++)
           printf("%3d", tab[i][j]);
        printf("\n");
       }
    printf("\n");
}


void tries(int n)
{
     static N=0;
     int k;
      
     tab[x][y]= n;
     
     if (n>=63)
         Print();
     else
         for (k=0; k<8; k++)
           {
            x+=mov[k][0];
            y+=mov[k][1];
            if (0<=x && x<8 && 0<=y && y<8 && tab[x][y]==0)
                tries(n+1);
            x-= mov[k][0];
            y-= mov[k][1];            
           }
     tab[x][y]= 0;
}


int main(int argc, char *argv[])
{
  int i, j;
  
  
  for (i=0; i<8; i++)
     for (j=0; j<8; j++)
         tab[i][j]= 0;
  
  x=0;  y=0;     
  tries(1);
  system("PAUSE");	
  return 0;
}
