#include using namespace std; #define SPEED ios::sync_with_stdio(false); cin.tie(0); cout.tie(0) #define fileio freopen("in.in", "r", stdin),freopen("out.out", "w", stdout); #define ll long long int #define FF first #define SS second #define mp make_pair #define pb push_back #define pii pair #define pll pair #define sd(x) scanf("%d",&x) #define slld(x) scanf("%lld",&x) #define pd(x) printf("%d\n",x) #define plld(x) printf("%lld\n",x) #define pss printf #define MOD 1000000007 #define INF 1e18 #define eps 0.00001 #define endl '\n' #define debug(n1) cout<op; queueq; void bfs() { dist[xs][ys]=0; q.push({xs,ys}); vis[xs][ys]=1; while(q.size()) { ll i=q.front().FF; ll j=q.front().SS; q.pop(); if(i>=2&&j>=1&&!vis[i-2][j-1]) { dist[i-2][j-1]=dist[i][j]+1; vis[i-2][j-1]=1; q.push({i-2,j-1}); par[i-2][j-1]=1; } if(i>=2&&j+1=1&&!vis[i+2][j-1]) { dist[i+2][j-1]=dist[i][j]+1; vis[i+2][j-1]=1; q.push({i+2,j-1}); par[i+2][j-1]=5; } if(j>=2&&!vis[i][j-2]) { dist[i][j-2]=dist[i][j]+1; vis[i][j-2]=1; q.push({i,j-2}); par[i][j-2]=6; } } } int main() { slld(n); for(int i=0;i<300;i++) for(int j=0;j<300;j++) dist[i][j]=INF; slld(xs);slld(ys);slld(xd);slld(yd); bfs(); if(dist[xd][yd]==INF) { pss("Impossible\n"); return 0; } ll i=xd,j=yd; while(par[i][j]) { if(par[i][j]==1) { op.pb(1); i=i+2; j=j+1; } else if(par[i][j]==2) { op.pb(2); i=i+2; j=j-1; } else if(par[i][j]==3) { op.pb(3); j=j-2; } else if(par[i][j]==4) { op.pb(4); i=i-2; j=j-1; } else if(par[i][j]==5) { op.pb(5); i=i-2; j=j+1; } else if(par[i][j]==6) { op.pb(6); j=j+2; } } plld(dist[xd][yd]); for(int j=op.size()-1;j>=0;j--) { ll x=op[j]; pss("%s ",ops[x]); } pss("\n"); return 0; }