#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define ll long long #define fi first #define se second #define all(sdk) sdk.begin(),sdk.end() #define mll map #define INF 1000000007 #define sz 100000 #define pb push_back #define rep(i,a,b) for(i=a;i :: iterator it=m.begin();it!=m.end();++it) using namespace std; int dp[400][400]; int dp2[400][400][2]; bool visited[400][400]; int n; vector v; queue< pair > bfsq; void psh(int x,int y,int i,int j) { if(x>=0 && x<=n-1 && y>=0 && y<=n-1) if(!visited[x][y]) { visited[x][y]=1; bfsq.push(make_pair(x,y)); dp[x][y]=dp[i][j]+1; dp2[x][y][0]=i; dp2[x][y][1]=j; } } int main() { ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); memset(dp,-1,sizeof dp); int x1,y1,x2,y2,i,j; cin>>n; cin>>x1>>y1>>x2>>y2; dp[x1][y1]=0; bfsq.push(make_pair(x1,y1)); visited[x1][y1]=1; while(!bfsq.empty()) { i=bfsq.front().first; j=bfsq.front().second; psh(i-2,j-1,i,j); psh(i-2,j+1,i,j); psh(i,j+2,i,j); psh(i+2,j+1,i,j); psh(i+2,j-1,i,j); psh(i,j-2,i,j); bfsq.pop(); } if(dp[x2][y2]==-1) { cout<<"Impossible"; return 0; } int po,pl; int ans=dp[x2][y2]; for(int i=0;i=0;--i) { cout<