#include using namespace std; #define ll long long #define ull unsigned long long #define ld long long #define pi pair #define pii vector > #define v vector #define vi vector #define f(a,i,n) for(int i=a;i>= 1) {if (k & 1) r = r * n % p; n = n * n % p;} return r;} int inv(int a, int p = MOD) {return fpow(a, p - 2, p);} ll spf[MAX+1]; void sieve()//complexity = approx 3*10^6 { f(1,i,MAX) {spf[i]=i;} for(ll i=2;i >vis; pii ans; ll flag; bool isvalid(ll i11,ll j11) { bool v1=(i11-1 and j11>-1); if(v1) return(!vis[i11][j11]); else return false; } bool isvalid2(ll i11,ll j11,v >vis2) { bool v2=(i11-1 and j11>-1); if(v2) return(!vis2[i11][j11]); else return false; } void bfs() { queue >q; q.pb(mp(mp(i1,jg),(ll)0)); vis=v< v >(n,v(n,false)); d=MOD; while(!q.empty()) { pair tt=q.front(); q.pop(); ll it=tt.first.first; ll jt=tt.first.second; vis[it][jt]=true; //cout< >vis2) { if(flag) return; //cout< > & vis2) { pii dummy; ans=dummy; vis2=v >(n,v(n,false)); } int main() { cin>>n; cin>>i1>>jg>>i2>>j2; swap(i1,jg);swap(i2,j2); bfs(); if(d==MOD) { cout<<"Impossible\n"; return 0; } v >vis2; cout<-1;i--) { i1=ans[i+1].first; jg=ans[i+1].second; //cout<