#include using namespace std; typedef pair point; bool check(int n,int x,int y) { if(x>=n||y>=n||x<0||y<0) return false; return true; } int dirx[]= {-2,-2,0,2,2,0}; int diry[]= {-1,1,2,1,-1,-2}; int main() { int n; cin>>n; point s,f; cin>>s.first>>s.second>>f.first>>f.second; point par[n][n]; int visited[n][n]; memset(visited,0,sizeof visited); queueq; q.push(s); visited[s.first][s.second]=1; par[s.first][s.second]=make_pair(-1,-1); while(!q.empty()) { int x=q.front().first,y=q.front().second; //if() q.pop(); for(int i=0; i<6; i++) { int dx=x+dirx[i],dy=y+diry[i]; if(!check(n,dx,dy)) continue; if(visited[dx][dy]==0) { par[dx][dy]=make_pair(x,y); q.push(make_pair(dx,dy)); visited[dx][dy]=1; } } } if(visited[f.first][f.second]==0){ cout<<"Impossible"<path; point target=f; while(par[target.first][target.second].first!=-1&&par[target.first][target.second].second!=-1) { // cout<ans; while(!path.empty()) { ans.push_back(path.top()); path.pop(); } cout<