#include #ifndef ONLINE_JUDGE #define gc getchar #define pc putchar #else #define gc getchar_unlocked #define pc putchar_unlocked #endif using namespace std; #define vi vector #define si set #define vs vector #define pii pair #define vpi vector #define pri priority_queue #define rev_pri priority_queue,greater > #define mpi map #define i64 long long int #define endl '\n' #define pi acos(-1) #define all(v) v.begin(),v.end() #define pb push_back #define mp make_pair #define mod 1000000007 #define inf INT_MAX/2 #define infll LLONG_MAX/3 #define For(i,n) for(int i=0;i33){*a=*a*10+c-'0';c=gc();}} //inline void fastWrite(int a){char snum[20];int i=0;do{snum[i++]=a%10+48;a=a/10;}while(a!=0);i=i-1;while(i>=0)pc(snum[i--]);pc('\n');} //i64 bigmod(i64 num,i64 n){if(n==0)return 1;i64 x=bigmod(num,n/2);x=x*x%mod;if(n%2==1)x=x*num%mod;return x;} //i64 modinverse(i64 num){return bigmod(num,mod-2)%mod;} //i64 po(i64 a,i64 b){i64 ans=1;while(b--)ans *= a;return ans;} //i64 ncr(i64 n,i64 r){if(n==r)return 1;if(r==1)return n;if(dp[n][r]!=-1)return dp[n][r];return dp[n][r]=ncr(n-1,r)+ncr(n-1,r-1);} // bit manipulations //bool checkbit(int mask,int bit){return mask & (1<=0 && x=0 && y q; q.push(st); while(!q.empty()) { pii u = q.front(); // cout << u.ff << " " << u.ss << endl; q.pop(); For(i,6) { int x = u.ff + dx[i]; int y = u.ss + dy[i]; // cout << x << " " << y << endl; if(valid(x,y) && dis[x][y]==-1) { dis[x][y] = 1 + dis[u.ff][u.ss]; par[x][y] = name[i]; pargg[x][y] = u; q.push(mp(x,y)); } } } if(dis[c][d]==-1) { puts("Impossible"); return; } cout << dis[c][d] << endl; vs v; pii now = mp(c,d); while(now!=st) { v.pb(par[now.ff][now.ss]); now = pargg[now.ff][now.ss]; } reverse(all(v)); For(i,v.sz) cout << v[i] << " "; cout << endl; } int main() { int a,b; sf(n); sff(a,b); sff(c,d); bfs(mp(a,b)); return 0; }