#include #include #include #include using namespace std; int main() { int n; cin>>n; int sx,sy; cin>>sy>>sx; int dx,dy; cin>>dy>>dx; int board[n][n]; memset(board,-1,n*n*4); board[sy][sx]=0; queue >q; int deltax[] = {-1,1,2,1,-1,-2}; int deltay[] = {-2,-2,0,2,2,0}; string dir[] = { "UL", "UR", "R", "LR", "LL", "L" }; int i,j,k,l,tempx, tempy; //init queue for(i=0;i<6;i++) { tempx = deltax[i] + sx; tempy = deltay[i] + sy; if ( tempx > n-1 || tempx < 0 || tempy > n-1 || tempy < 0) continue; if (tempx == dx && tempy == dy) { cout << 1 << endl; cout << dir[i]; return 0; } q.push(make_pair(tempy, tempx)); board[tempy][tempx] = i; } bool flag = false; //start bfs while(!q.empty()) { pair p = q.front(); q.pop(); int tempx, tempy; int y = p.first; int x = p.second; for(i=0;i<6;i++) { tempx = deltax[i] + x; tempy = deltay[i] + y; if ( tempx > n-1 || tempx < 0 || tempy > n-1 || tempy < 0 || board[tempy][tempx] != -1) continue; q.push(make_pair(tempy,tempx)); board[tempy][tempx] = i; if (tempx==dx && tempy==dy) { flag=true; break; } } if (flag) break; } if (!flag) { cout << "Impossible\n"; return 0; } stackst; int x=dx,y=dy; while( !(x==sx && y==sy) ) { int v = (board[y][x]+3)%6; st.push(v); x = deltax[v] + x; y = deltay[v] + y; } cout<< st.size()<