#include #include #include #include #include using namespace std; enum steps {UL,LL,UR,LR,R,L}; struct path { int no_of_steps; vector s; vector i; vector j; path() { no_of_steps=0; } } ; vector p; int n,si,sj,ei,ej; void rec(int si,int sj,int ei,int ej, path experimental); void funcUL(int si,int sj,int ei,int ej,path experimental) { experimental.no_of_steps++; if(experimental.no_of_steps>n) return; int tempi,tempj; tempi=si-2; tempj=sj-1; if((tempi>=0)&&(tempj>=0)) { experimental.i.push_back(si); experimental.j.push_back(sj); si=tempi; sj=tempj; experimental.s.push_back(UL); } else return; if((si==ei)&&(sj==ej)) p.push_back(experimental); else rec(si,sj,ei,ej,experimental); } void funcLL(int si,int sj,int ei,int ej,path experimental) { experimental.no_of_steps++; if(experimental.no_of_steps>n) return; int tempi,tempj; tempi=si+2; tempj=sj-1; if((tempi=0)) { experimental.i.push_back(si); experimental.j.push_back(sj); si=tempi; sj=tempj; experimental.s.push_back(LL); } else return; if((si==ei)&&(sj==ej)) p.push_back(experimental); else rec(si,sj,ei,ej,experimental); } void funcUR(int si,int sj,int ei,int ej,path experimental) { experimental.no_of_steps++; // if((si==ei)&&(sj+1==ej)) // cout<<" "<n) return; int tempi,tempj; tempi=si-2; tempj=sj+1; if((tempi>=0)&&(tempjn) return; int tempi,tempj; tempi=si+2; tempj=sj+1; if((tempin) return; int tempj; tempj=sj-2; if(tempj>=0) { experimental.i.push_back(si); experimental.j.push_back(sj); sj=tempj; experimental.s.push_back(L); } else return; if((si==ei)&&(sj==ej)) p.push_back(experimental); else rec(si,sj,ei,ej,experimental); } void funcR(int si,int sj,int ei,int ej,path experimental) { experimental.no_of_steps++; if(experimental.no_of_steps>n) return; int tempj; tempj=sj+2; if(tempj=sj)) funcUR(si,sj,ei,ej,experimental); if((ei>=si)&&(ej>=sj)) funcLR(si,sj,ei,ej,experimental); if((ei<=si)&&(ej<=sj)) funcUL(si,sj,ei,ej,experimental); if((ei>=si)&&(ej<=sj)) funcLL(si,sj,ei,ej,experimental); if(ej>=sj) funcR(si,sj,ei,ej,experimental); if(ej<=sj) funcL(si,sj,ei,ej,experimental); } int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ int si,sj,ei,ej; cin>>n>>si>>sj>>ei>>ej; path ex; rec(si,sj,ei,ej,ex); if(p.size()==0) cout<<"Impossible"; else { path lowest=p[0]; // cout<<"\n"<