#include #include #include #include #include #include #include int comp(const void *a,const void *b){ return *(int*)a - *(int*)b; } void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { int moves=0,pos=0,max=2003,arr[2003]={},ind=0,done=0; while(max--){ if(pos !=0){ break; } if(done !=0){ break; } moves++; if(i_start > i_end){ if(j_start > j_end){ if(i_start - 2 < 0){ pos=1; break; } if(j_start -1 < 0){ pos=1; break; } i_start-=2; j_start-=1; arr[ind]=1; ind++; } else if(j_start == j_end){ if(((i_start - i_end) % 4) != 0){ pos=1; break; } else if( i_start - 2 >= 0) { if(j_start - 1 >=0){ i_start-=2; j_start-=1; arr[ind]=1; ind++; } else if(j_start + 1 <= n-1){ i_start-=2; j_start+=1; arr[ind]=2; ind++; } else { pos=1; break; } } } else { if(i_start - 2 < 0){ pos=1; break; } if(j_start + 1 > n-1){ pos=1; break; } i_start-=2; j_start+=1; arr[ind]=2; ind++; } } else if(i_start < i_end) { if(j_start > j_end){ if(i_start + 2 > n-1){ pos=1; break; } if(j_start -1 < 0){ pos=1; break; } i_start+=2; j_start-=1; arr[ind]=5; ind++; } else if(j_start == j_end){ if(((i_start - i_end) % 4) != 0){ pos=1; break; } else if( i_start + 2 <= n-1) { if(j_start + 1 <= n-1){ i_start+=2; j_start+=1; arr[ind]=4; ind++; } else if(j_start - 1 >=0){ i_start+=2; j_start-=1; arr[ind]=5; ind++; } else { pos=1; break; } } } else { if(i_start + 2 > n-1){ pos=1; break; } if(j_start + 1 > n-1){ pos=1; break; } i_start+=2; j_start+=1; arr[ind]=4; ind++; } } else { if(j_start > j_end){ if(((j_start - j_end) % 2) != 0){ pos=1; break; } if(j_start - 2 >= 0){ j_start-=2; arr[ind]=6; ind++; } else{ pos=1; break; } } else if(j_start < j_end){ if(((j_end - j_start) % 2) != 0){ pos=1; break; } if(j_start + 2 <= n-1){ j_start+=2; arr[ind]=3; ind++; } else{ pos=1; break; } } else{ moves--; done=1; break; } } } if(done){ printf("%d\n",moves); int i; qsort(arr,ind,sizeof(int),comp); while(arr[i]!=0){ if(arr[i] == 1){ printf("UL "); } else if(arr[i] == 2){ printf("UR "); } else if(arr[i] == 6){ printf("L "); } else if(arr[i] == 3){ printf("R "); } else if(arr[i] == 5){ printf("LL "); } else if(arr[i] == 4){ printf("LR "); } i++; } } else printf("Impossible"); return; } 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; }