#include using namespace std; int n,vis[205][205],dis[205][205]; map< pair,string > mp; map< pair,pair > par; bool bounds(int x,int y) { if(x<0 || x>=n || y<0 || y>=n) return false; return true; } int bfs(pair &start,pair &des) { queue< pair > q; q.push(start); vis[start.first][start.second]=1; dis[start.first][start.second]=0; while(!q.empty()) { pair pos = q.front(); q.pop(); int x=pos.first,y=pos.second; //UL if(bounds(x-2,y-1) && vis[x-2][y-1]==0) { q.push(make_pair(x-2,y-1)); vis[x-2][y-1]=1; dis[x-2][y-1]=dis[x][y]+1; mp[make_pair(x-2,y-1)]="UL"; par[make_pair(x-2,y-1)]=make_pair(x,y); } //UR if(bounds(x-2,y+1) && vis[x-2][y+1]==0) { q.push(make_pair(x-2,y+1)); vis[x-2][y+1]=1; dis[x-2][y+1]=dis[x][y]+1; mp[make_pair(x-2,y+1)]="UR"; par[make_pair(x-2,y+1)]=make_pair(x,y); } //R if(bounds(x,y+2) && vis[x][y+2]==0) { q.push(make_pair(x,y+2)); vis[x][y+2]=1; dis[x][y+2]=dis[x][y]+1; mp[make_pair(x,y+2)]="R"; par[make_pair(x,y+2)]=make_pair(x,y); } //LR if(bounds(x+2,y+1) && vis[x+2][y+1]==0) { q.push(make_pair(x+2,y+1)); vis[x+2][y+1]=1; dis[x+2][y+1]=dis[x][y]+1; mp[make_pair(x+2,y+1)]="LR"; par[make_pair(x+2,y+1)]=make_pair(x,y); } //LL if(bounds(x+2,y-1) && vis[x+2][y-1]==0) { q.push(make_pair(x+2,y-1)); vis[x+2][y-1]=1; dis[x+2][y-1]=dis[x][y]+1; mp[make_pair(x+2,y-1)]="LL"; par[make_pair(x+2,y-1)]=make_pair(x,y); } //L if(bounds(x,y-2) && vis[x][y-2]==0) { q.push(make_pair(x,y-2)); vis[x][y-2]=1; dis[x][y-2]=dis[x][y]+1; mp[make_pair(x,y-2)]="L"; par[make_pair(x,y-2)]=make_pair(x,y); } } if(vis[des.first][des.second]==1) return dis[des.first][des.second]; else return -1; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n; pair start,des; cin>>start.first>>start.second>>des.first>>des.second; par[start]=make_pair(-1,-1); int res=bfs(start,des); if(res==-1) cout<<"Impossible"< p=des; stack v; while(par[p]!=make_pair(-1,-1)) { //int x1=p.first<<" "<