#include #define mp make_pair #define pb push_back #define p push using namespace std; int s,n,x,y,a[300][300],u[300][300],k,k1; queue >q; string v[300][300]; int main () { int x1,y1; cin>>n>>x>>y>>x1>>y1; for(int i=1;i<=n;i++){ for(int i1=1;i1<=n;i1++)v[i][i1]="7"; } v[x+1][y+1]="0"; x++; y++; x1++; y1++; q.push(mp(x,y)); a[x][y]=1; while(!q.empty()){ k=q.front().first; k1=q.front().second; if(k-2>0 && k1-1>0 && a[k-2][k1-1]==0){ a[k-2][k1-1]=1; u[k-2][k1-1]=u[k][k1]+1; q.p(mp(k-2,k1-1)); v[k-2][k1-1]=min(v[k-2][k1-1],v[k][k1]+"1"); } if(k-2>0 && k1+1<=n && a[k-2][k1+1]==0){ a[k-2][k1+1]=1; u[k-2][k1+1]=u[k][k1]+1; q.p(mp(k-2,k1+1)); v[k-2][k1+1]=min(v[k-2][k1+1],v[k][k1]+"2"); } if(k1+2<=n && a[k][k1+2]==0){ a[k][k1+2]=1; u[k][k1+2]=u[k][k1]+1; q.p(mp(k,k1+2)); v[k][k1+2]=min(v[k][k1+2],v[k][k1]+"3"); } if(k+2<=n && k1+1<=n && a[k+2][k1+1]==0){ a[k+2][k1+1]=1; u[k+2][k1+1]=u[k][k1]+1; q.p(mp(k+2,k1+1)); v[k+2][k1+1]=min(v[k+2][k1+1],v[k][k1]+"4"); } if(k+2<=n && k1-1>0 && a[k+2][k1-1]==0){ a[k+2][k1-1]=1; u[k+2][k1-1]=u[k][k1]+1; q.p(mp(k+2,k1-1)); v[k+2][k1-1]=min(v[k+2][k1-1],v[k][k1]+"5"); } if(k1-2>0 && a[k][k1-2]==0){ a[k][k1-2]=1; u[k][k1-2]=u[k][k1]+1; q.p(mp(k,k1-2)); v[k][k1-2]=min(v[k][k1-2],v[k][k1]+"6"); } q.pop(); } if(x==x1 && y==y1){ cout<<0; return 0; } if(u[x1][y1]==0){ cout<<"Impossible"<