#include #include #include #include #include #include #include #define MAX 250 #define mp make_pair #define pb push_back using namespace std; typedef pair pii; int n; int fx[] = {-2, -2, 0, 2, 2, 0}; //direction array int fy[] = {-1, 1, 2, 1, -1, -2}; int visited[MAX][MAX]; int parent[MAX][MAX], dist[MAX][MAX]; const int inf = 1 << 28; void bfs(int sx, int sy) { memset(parent, -1, sizeof(parent)); memset(visited, 0, sizeof(visited)); memset(dist, inf, sizeof(dist)); queue q; q.push(mp(sx, sy)); visited[sx][sy] = 1; dist[sx][sy] = 0; while(!q.empty()){ pii u = q.front(); q.pop(); for(int k = 0; k < 6; k++){ int tx = u.first + fx[k]; int ty = u.second + fy[k]; if(tx >= 0 && tx < n && ty >= 0 && ty < n && !visited[tx][ty]){ visited[tx][ty] = 1; dist[tx][ty] = dist[u.first][u.second] + 1; parent[tx][ty] = k; q.push(mp(tx, ty)); } } } } int main() { int sx, sy, dx, dy; cin>>n; cin>>sx>>sy>>dx>>dy; bfs(sx, sy); vector v; if(visited[dx][dy]){ printf("%d\n", dist[dx][dy]); while(parent[dx][dy] != -1){ if(parent[dx][dy] == 0){ v.pb("UL"); dx += 2; dy += 1; } else if(parent[dx][dy] == 1){ v.pb("UR"); dx += 2, dy -= 1; } else if(parent[dx][dy] == 2){ v.pb("R"); dy -= 2; } else if(parent[dx][dy] == 3){ v.pb("LR"); dx -= 2; dy -= 1; } else if(parent[dx][dy] == 4){ v.pb("LL"); dx -= 2, dy += 1; } else if(parent[dx][dy] == 5){ v.pb("L"); dy += 2; } } for(int i = v.size() - 1; i >= 0; i--){ cout<