#include using namespace std; #define forw(i,a,n) for (int i=a;i=a;i--) #define fi first #define se second #define SZ(x) ((int)(x).size()) typedef vector VI; typedef long long ll; typedef pair PII; const ll mod=1000000007; const int maxn = 205; void mf(){ freopen("input.in","r",stdin); //freopen("output.ou","w",stdout); } //START SOL int col[6] = {-1,1,2,1,-1,-2}; int row[6] = {-2,-2,0, 2, 2, 0}; string st[6] = {"UL","UR","R","LR","LL","L"}; int x,y,s,t, n; int a[maxn][maxn]; int trace[maxn][maxn]; bool valid(int x, int y){ return (x>=0 && x=0 && y>n; cin>>x>>y>>s>>t; forw(i, 0, n) forw(j, 0, n) a[i][j] = -1; a[x][y] = 0; queue q; q.push(make_pair(x,y)); while(q.size() && a[s][t] == -1){ PII v = q.front();q.pop(); int vx = v.fi, vy = v.se, nx, ny; for(int i =0; i < 6; i++){ nx = vx + row[i]; ny = vy + col[i]; if(!valid(nx, ny)) continue; if(a[nx][ny] == -1){ trace[nx][ny] = i; a[nx][ny] = a[vx][vy] + 1; q.push(make_pair(nx,ny)); } } } if(a[s][t] == -1){ cout<<"Impossible"; return; } int ans = a[s][t]; cout< way; forw(i, 0, ans){ int ii = trace[s][t]; way.push_back(ii); s-= row[ii]; t-= col[ii]; } ford(i, 0, ans){ cout<