#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. //check if possible: int i_now, j_now, moves = 0; i_now = i_start; j_now = j_start; if((i_start % 2) != (i_end % 2)){ printf("Impossible\n"); return; } if((i_start % 2) != (i_end % 2)){ printf("Impossible\n"); return; } if((abs(i_start - i_end)%4) == 2){ if(j_end % 2 == j_start % 2){ printf("Impossible\n"); return; } } if((abs(i_start - i_end)%4) == 0){ if(j_end % 2 != j_start % 2){ printf("Impossible\n"); return; } } //check how many moves: i_now = i_start; j_now = j_start; moves = 0; if(j_start > j_end){ while(abs(j_now-j_end) != (abs(i_now-i_end)/2)){ j_now = j_now - 2; moves++; } } else if(j_start < j_end){ while(abs(j_now-j_end) != (abs(i_now-i_end)/2)){ j_now = j_now + 2; moves++; } } moves = moves + abs(i_now-i_end)/2; printf("%d\n", moves); //check which moves: i_now = i_start; j_now = j_start; if(j_now < j_end){ while((abs(i_end - i_now)/2) != abs(j_end - j_now)){ printf("R"); printf(" "); j_now = j_now + 2; } } if(i_now != i_end){ while(i_now != i_end || (i_now != i_end && j_now != j_end)){ if(j_now >= j_end && i_now > i_end){ j_now = j_now-1; i_now = i_now-2; printf("UL"); printf(" "); } else if(j_now < j_end && i_now > i_end){ j_now = j_now+1; i_now = i_now-2; printf("UR"); printf(" "); } else if(j_now <= j_end && i_now < i_end){ j_now = j_now+1; i_now = i_now+2; printf("LR"); printf(" "); } else if(j_now > j_end && i_now < i_end){ j_now = j_now-1; i_now = i_now+2; printf("LL"); printf(" "); } } } if(j_now > j_end){ if(abs(i_now == i_end) && abs(j_now != j_end)){ while(j_now != j_end){ j_now = j_now-2; printf("L"); printf(" "); } } } } 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; }