#include //#include //namespace mp = boost::multiprecision; using namespace std; #define ll long long int #define dbl double #define si set #define vi vector #define vs vector #define vii vector #define vll vector #define vdbl vector #define mii map #define pii pair #define pff pair #define fr(i,n) for(int i=0;i split(string str,char delimeter) { vector res; istringstream iss(str); string token; while(getline(iss,token,delimeter)) { if(token.length()>0) res.push_back(token); } return res; } void randomize (vi &arr) { srand (time(NULL)); for (int i = arr.size()-1; i > 0; i--) { int j = rand() % (i+1); swap(arr[i], arr[j]); } } #define mxx 200 #define sqmxx 317 #define mmm INT_MAX #define mymod 1000000000 #define pcal 1e-19 #define pi 3.1415926535897932384 bool is_visited[mxx][mxx]; int parent[mxx][mxx]; int show_value[mxx*mxx]; int n,x2,y2; bool is_valid(int x,int y) { if(x>=0 && x=0 && y q; q.push(x1*n+y1); is_visited[x1][y1] = 1; while(!q.empty()) { int val = q.front(); q.pop(); int x3 = val/n; int y3 = val%n; if(x3==x2 && y3==y2) return; //cout< "; fr(i,6) { int x = x3+dx[i]; int y = y3+dy[i]; if(is_valid(x,y) && !is_visited[x][y]) { // cout<>n>>x1>>y1>>x2>>y2; //x1--;y1--;x2--;y2--; memset(is_visited,0,sizeof is_visited); bfs(x1,y1); if(!is_visited[x2][y2]) cout<<"Impossible"; else { vi v; int i = x2,j=y2; while(i*n+j != x1*n+y1) { //cout<