#include #define ll long long int #define pb push_back #define mp make_pair #define ss second #define ff first using namespace std; map,int> mark;; map,pair > parent; bool possible; long int dp[502][502]; int dx[] ={-2,-2,0,2,2,0}; int dy[] = {-1,1,2,1,-1,-2}; string dir[] = {"UL","UR","R","LR","LL","L"}; int solve(int a,int b,int x,int y,int n,vector &vec) { int siz,level=0; queue > q; q.push(mp(a,b)); siz = q.size(); mark[mp(a,b)]=1; while(!q.empty()) { pair u = q.front(); if(u.ff==x && u.ss==y) { possible=1; //return level; } q.pop(); siz--; for(int i=0;i<6;i++) { int p= u.ff + dx[i]; int r= u.ss + dy[i]; if(p>=0 && r>=0 && p vec; vec.clear(); parent.clear(); cin>>n; cin>>a>>b>>x>>y; possible=0; int ans = solve(a,b,x,y,n,vec); //cout< par = parent[mp(x,y)]; p=par.ff; q=par.ss; //cout<<"p="<