#include "stdio.h" #include "math.h" #include "string.h" int n,mark[100][100],cur,flag,savex[1000],savey[1000],count; int dir[16]={2,1,2,-1,1,2,1,-2,-2,1,-2,-1,-1,2,-1,-2}; 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 { for(i=0;i<8;i++) if(x+dir[2*i]>=0&&x+dir[2*i]<=n-1&&y+dir[2*i+1]>=0&&y+dir[2*i+1]<=n-1&&!mark[x+dir[2*i]][y+dir[2*i+1]]) { mark[x+dir[2*i]][y+dir[2*i+1]]=1; savex[cur]=x+dir[2*i];savey[cur]=y+dir[2*i+1]; DFS(x+dir[2*i],y+dir[2*i+1],cur+1); mark[x+dir[2*i]][y+dir[2*i+1]]=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; }