#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef pair ii; typedef vector vi; typedef pair ll; typedef pair il; long long mod = 1000000007LL; long long large = 2000000000000000000LL; int n; int ver[] = {-1,1,2,1,-1,-2}; int hor[] = {-2,-2,0,2,2,0}; string way[] = {"UL","UR","R","LR","LL","L"}; bool in(int x,int y){ return x>=0&&x=0&&y>n; int stx,sty,enx,eny; cin>>stx>>sty>>enx>>eny; vector > dp(n,vector(n,1000000000)); dp[enx][eny] = 0; queue q; q.push(ii(enx,eny)); while(!q.empty()){ int ux = q.front().first; int uy = q.front().second; q.pop(); for(int j=0;j<6;j++){ int vx = ux+hor[j]; int vy = uy+ver[j]; if(in(vx,vy)){ if(dp[vx][vy]==1000000000){ dp[vx][vy] = dp[ux][uy]+1; q.push(ii(vx,vy)); } } } } if(dp[stx][sty]==1000000000){ cout<<"Impossible"<