#include #include #include #include #include #include #define v(x,y) (0<=x and x> n; int u, v, x, y; cin >> u >> v >> x >> y; vector > X(n, vector (n,-1)), Y(n, vector (n,-1)); vector > M(n, vector (n)); queue cu, cur; cu.push(u); cur.push(v); X[u][v] = -2; Y[u][v] = -2; int s = 0; while(!cu.empty()){//UL, UR, R, LR, LL, L int i = cu.front(), j = cur.front(); cu.pop(); cur.pop(); int a = i-2, b = j-1; if(v(a,b) and X[a][b] == -1){ M[a][b] = "UL"; X[a][b] = i; Y[a][b] = j; cu.push(a); cur.push(b); } a = i-2, b = j+1; if(v(a,b) and X[a][b] == -1){ M[a][b] = "UR"; X[a][b] = i; Y[a][b] = j; cu.push(a); cur.push(b); } a = i, b = j+2; if(v(a,b) and X[a][b] == -1){ M[a][b] = "R"; X[a][b] = i; Y[a][b] = j; cu.push(a); cur.push(b); } a = i+2, b = j+1; if(v(a,b) and X[a][b] == -1){ M[a][b] = "LR"; X[a][b] = i; Y[a][b] = j; cu.push(a); cur.push(b); } a = i+2, b = j-1; if(v(a,b) and X[a][b] == -1){ M[a][b] = "LL"; X[a][b] = i; Y[a][b] = j; cu.push(a); cur.push(b); } a = i, b = j-2; if(v(a,b) and X[a][b] == -1){ M[a][b] = "L"; X[a][b] = i; Y[a][b] = j; cu.push(a); cur.push(b); } } if(X[x][y] == -1){ cout << "Impossible" << endl; } else{ vector res; while(x != u or y != v){ res.push_back(M[x][y]); int i = X[x][y], j = Y[x][y]; x = i; y = j; } cout << res.size() << endl; for(int i = 0; i