#include #include #include #include #include #include #include void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { // Print the distance along with the sequence of moves. // int count=0; int k; int ans; if(abs(i_start-i_end)%2!=0) {printf("Impossible"); exit;} else{ k=abs(i_start-i_end)/2; if(abs(k-abs(j_start-j_end))%2!=0) { printf("Impossible"); exit;} else { ans=k; if(abs(j_start-j_end)>k) ans=ans+abs(k-abs(j_start-j_end))/2; } printf("%d\n",ans); while((i_start!=i_end)&&(j_start!=j_end)||(i_start==i_end)&&(j_start!=j_end)||(i_start!=i_end)&&(j_start==j_end)) { if(i_start==i_end) { if(j_start>j_end) { if((j_start-j_end)%2==0) { j_start=j_start-2; //count++; printf("L "); } else { printf("Impossible"); exit; } } if(j_end>j_start) { if((j_end-j_start)%2==0) { j_start=j_start+2; // count++; printf("R "); } else { printf("Impossible"); exit; } } } else { if((i_end=j_start)) { i_start=i_start-2; j_start=j_start+1; // count++; printf("UR "); } else if((i_end>i_start)&&(j_end>=j_start)) { i_start=i_start+2; j_start=j_start+1; // count++; printf("LR "); } else if((i_end>i_start)&&(j_end<=j_start)) { i_start=i_start+2; j_start=j_start-1; // count++; printf("LL "); } else continue; } } } } int main() { int n; scanf("%i", &n); int i_start; int j_start; int i_end; int j_end; scanf("%i %i %i %i", &i_start, &j_start, &i_end, &j_end); printShortestPath(n, i_start, j_start, i_end, j_end); return 0; }