#include #include #include #include #include #include #include void printShortestPath(int n, int i_s, int j_s, int i_e, int j_e) { int p[1000],i,j,c=0,k=0; int check() { if((i_s-2)==i_e && (j_s-1)==0) {i_s-=2;j_s-=1;c++;p[k]=1;k++;return 0;} else if((i_s-2)==i_e && (j_s+1)==j_e) {i_s-=2;j_s+=1;c++;p[k]=2;k++;return 0;} else if((j_s+2)==j_e && i_s==i_e) {j_s+=2;c++;p[k]=3;k++;return 0;} else if((i_s+2)==i_e && (j_s+1)==j_e) {i_s+=2;j_s+=1;c++;p[k]=4;k++;return 0;} else if((i_s+2)==i_e&&(j_s-1)==j_e) {i_s+=2;j_s-=1;c++;p[k]=5;k++;return 0;} else if((j_s-2)==j_e && i_s==i_e) {j_s-=2;c++;p[k]=6;k++;return 0;} else return 1; } if ( (i_s-2)>=i_e && (j_s-1)>=0 && check()) { while((i_s-2)>=i_e && (j_s-1)>=0 && check()) { i_s-=2; j_s-=1; p[k] = 1; k++; c++; } } if ( (i_s-2)>=i_e && check()) { while((i_s-2)>=i_e && check()) { i_s-=2; j_s+=1; p[k] = 1; k++; c++; } } if((j_s+2)<=j_e && check()) { while(((j_s+2)<=j_e)&&j_s%2==0 && check()) { j_s+=2; p[k]=3;k++; c++; } } if ( (i_s+2)<=i_e && (j_s+1)=j_e && j_s>=0 && check()) { while(((j_s-2)>=j_e)&&j_s>=0 && check()) { j_s-=2; p[k]=6;k++; c++; } } if(i_s!=i_e || j_s!=j_e) printf("Impossible"); else { printf("%d\n",c); for(i=0;i