#include "stdio.h" #include "math.h" #include "string.h" int n,mark[100][100],cur,flag,savex[1000],savey[1000],count; void DFS(int x,int y,int cur) { int i; if(cur==n*n) { flag=1;count++; printf("(%d,%d)",savex[0],savey[0]); for(i=1;i<n*n;i++) printf("->(%d,%d)",savex[i],savey[i]); printf("%d/n",count); } else { if(x+2<=n-1&&y-1>=0&&mark[x+2][y-1]==0) { mark[x][y]=1;savex[cur]=x+2;savey[cur]=y-1; DFS(x+2,y-1,cur+1); mark[x][y]=0; } if(x+2<=n-1&&y+1<=n-1&&!mark[x+2][y+1]) { mark[x][y]=1;savex[cur]=x+2;savey[cur]=y+1; DFS(x+2,y+1,cur+1); mark[x][y]=0; } if(x+1<=n-1&&y-2>=0&&!mark[x+1][y-2]) { mark[x][y]=1;savex[cur]=x+1;savey[cur]=y-2; DFS(x+1,y-2,cur+1); mark[x][y]=0; } if(x+1<=n-1&&y+2<=n-1&&!mark[x+1][y+2]) { mark[x][y]=1;savex[cur]=x+1;savey[cur]=y+2; DFS(x+1,y+2,cur+1); mark[x][y]=0; } if(x-2>=0&&y-1>=0&&!mark[x-2][y-1]) { mark[x][y]=1;savex[cur]=x-2;savey[cur]=y-1; DFS(x-2,y-1,cur+1); mark[x][y]=0; } if(x-2>=0&&y+1<=n-1&&!mark[x-2][y+1]) { mark[x][y]=1;savex[cur]=x-2;savey[cur]=y+1; DFS(x-2,y+1,cur+1); mark[x][y]=0; } if(x-1>=0&&y+2<=n-1&&!mark[x-1][y+2]) { mark[x][y]=1;savex[cur]=x-1;savey[cur]=y+2; DFS(x-1,y+2,cur+1); mark[x][y]=0; } if(x-1>=0&&y-2>=0&&!mark[x-1][y-2]) { mark[x][y]=1;savex[cur]=x-1;savey[cur]=y-2; DFS(x-1,y-2,cur+1); mark[x][y]=0; } } } int main() { int i,j,a,b; while(scanf("%d %d %d",&n,&a,&b)!=EOF) { flag=0;count=0; memset(mark,0,sizeof(mark)); memset(savex,0,sizeof(savex)); memset(savey,0,sizeof(savey)); savex[0]=a;savey[0]=b; mark[a][b]=1; DFS(a,b,1); if(flag==0) printf("N0 way/n"); } return 0; }