#include #include #include #include #include #include #include using namespace std; #define INF 12312312 #define iii pair, int> vector dx = {-2, -2, 0, 2, 2, 0}; vector dy = {-1, 1, 2, 1, -1, -2}; vector str = {"UL", "UR", "R", "LR", "LL", "L"}; vector > dist; vector > prevArr; int sz; void dfs(int currx, int curry, int endx, int endy, int dis, int pred) { //cout<= dist[currx][curry]) { return; } dist[currx][curry] = dis; prevArr[currx][curry] = pred; for (int i = 0; i < dx.size(); i++) { if (currx + dx[i] >= 0 and currx + dx[i] < sz and curry + dy[i] >= 0 and curry + dy[i] < sz) { dfs(currx + dx[i], curry + dy[i], endx, endy, dis + 1, i); } } } int main() { int n; cin>>n; int sx, sy, ex, ey; cin>>sx>>sy>>ex>>ey; dist.resize(n, vector(n, INF)); prevArr.resize(n, vector(n, INF)); sz = n; dfs(sx, sy, ex, ey, 0, 0); if (dist[ex][ey] == INF) { cout<<"Impossible"<<'\n'; } else if(dist[ex][ey] == 0) { cout<<"0\n"; } else { cout< moves(dist[ex][ey]); int currx = ex; int curry = ey; //cout<<"Size: "<