// Red Knights Shortest Path // Problema #2 WorldCodeSprint12 #include #include #include int main() { int n; scanf("%d", &n); int xi, yi, xf, yf; scanf("%d %d %d %d", &xi, &yi, &xf, &yf); if ( (abs(xf-xi))%2 != 0 || ((abs(xi-xf))%4 == 0 && (abs(yf-yi))%2 == 1) || ( abs((xf-xi))%4 == 2 && abs((yf-yi))%2 == 0) || ((xi == xf) && abs((yf-yi))%2 == 1) ) { printf("Impossible"); } else { int i; int dis[6]; int pasos[1000]; int p=0; int min = 1001; int res; int cen = 0; do { for ( i = 0; i < 6; ++i ) { if ( i == 0 ) { dis[i] = abs(xf - ( xi-2 )) + abs(yf - ( yi-1 )); if ( xi-2 < 0 || yi - 1 < 0 ) { dis[i] = 1000; } } else if ( i == 1 ) { dis[i] = abs(xf - ( xi-2 )) + abs(yf - ( yi+1 )) ; if ( xi-2 < 0 || yi + 1 > n-1 ) { dis[i] = 1000; } } else if ( i == 2 ) { dis[i] = abs(xf - xi) + abs(yf - ( yi+2 )); if ( yi + 2 > n-1 ) { dis[i] = 1000; } } else if ( i == 3 ) { dis[i] = abs(xf - ( xi+2 )) + abs(yf - ( yi+1 )); if ( xi+2 > n-1 || yi + 1 > n-1 ) { dis[i] = 1000; } } else if ( i == 4 ) { dis[i] = abs(xf - ( xi+2 )) + abs(yf - ( yi-1 )); if ( xi+2 > n-1 || yi - 1 < 0 ) { dis[i] = 1000; } } else if ( i == 5 ) { dis[i] = abs(xf - xi) + abs(yf - ( yi-2) ); if ( yi - 2 < 0 ) { dis[i] = 1000; } } } for ( i = 0; i < 6; ++i ) { if ( min > dis[i] ) { min = dis[i]; pasos[p] = i; } } if ( dis[pasos[p]] == 1000 ) { cen = 1; } if ( pasos[p] == 0 ) { xi = xi-2; yi = yi-1; } else if ( pasos[p] == 1 ) { xi = xi-2; yi = yi+1; } else if ( pasos[p] == 2 ) { yi = yi+2; } else if ( pasos[p] == 3 ) { xi = xi+2; yi = yi+1; } else if ( pasos[p] == 4 ) { xi = xi+2; yi = yi-1; } else if ( pasos[p] == 5 ) { yi = yi-2; } ++p; } while ( xi != xf || yi != yf ); if ( cen == 1 ) { printf("Impossible"); } else { printf("%d\n", p); int m, j, l, aux; for ( j = 0; j < p; ++j ) { m = j; for ( l = j; l < p; ++l ) { if ( pasos[m] > pasos[l] ) { m = l; } } if ( m != j ) { aux = pasos[j]; pasos[j] = pasos[m]; pasos[m] = aux; } } for ( i = 0; i < p; ++i ) { if ( pasos[i] == 0 ) { printf("UL "); } else if ( pasos[i] == 1 ) { printf("UR "); } else if ( pasos[i] == 2 ) { printf("R "); } else if ( pasos[i] == 3 ) { printf("LR "); } else if ( pasos[i] == 4 ) { printf("LL "); yi = yi-1; } else if ( pasos[i] == 5 ) { printf("L "); } } } } }