#include using namespace std; typedef pair pii; typedef pair psi; bool isValid(pii s,int n){ return s.first>=0 && s.second>=0 &&s.first komsu(int x,int y,int n){ vector komsular; komsular.push_back(psi("UL",pii(x-2,y-1))); komsular.push_back(psi("UR",pii(x-2,y+1))); komsular.push_back(psi("R",pii(x,y+2))); komsular.push_back(psi("LR",pii(x+2,y+1))); komsular.push_back(psi("LL",pii(x+2,y-1))); komsular.push_back(psi("L",pii(x,y-2))); return komsular; } typedef pair mpii; void dijkastra(int n,pii start,pii end){ queue hue; map pred; map moves; map dist; dist[start]=0; hue.push(start); bool f=false; while(!hue.empty()){ if(f)break; pii k=hue.front(); hue.pop(); vector komsular=komsu(k.first,k.second,n); for(vector::iterator it=komsular.begin();it!=komsular.end();it++){ if(isValid(it->second,n)){ if(dist.find(it->second)==dist.end()){ dist[it->second]=dist[k]+1; pred[it->second]=k; moves[it->second]=it->first; hue.push(it->second); if(it->second==end){ f=true; break; } } } } } if(dist.find(end)==dist.end())cout << "Impossible\n"; else{ pred[start]=pii(-1,-1); cout << dist[end]<<"\n"; stack stck; for (pii i = end; i !=pred[start] ; i=pred[i]) { stck.push(moves[i]); } stck.pop(); while(!stck.empty()){ // cout << stck.top()<<"\n"; cout << stck.top()<<" "; stck.pop(); } cout <<"\n"; } } int main(){ int n; cin>>n; int a,b,c,d; cin>>a>>b>>c>>d; dijkastra(n,pii(a,b),pii(c,d)); return 0; }