#include using namespace std; //だるすぎ. vector solve(vector S,long long sx,long long sy){ long long H = S.size(),W = S.at(0).size(),N = H*W; vector dist(N,1001001001); dist.at(sx*W+sy) = 0; queue Q; Q.push(sx*W+sy); while(Q.size()){ auto v = Q.front(); Q.pop(); long long d = dist.at(v); long long x = v/W,y = v%W; for(long long dx=-1; dx<=1; dx++) for(long long dy=-1; dy<=1; dy++){ if(dx == 0 && dy == 0) continue; long long nx = x+dx,ny = y+dy; while(nx >= 0 && ny >= 0 && nx < H && ny < W && S.at(nx).at(ny) == '.'){ long long to = nx*W+ny; if(dist.at(to) > d+1) dist.at(to) = d+1,Q.push(to); nx += dx,ny += dy; } } } return dist; } random_device rnd; mt19937 mt(rnd()); int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); long long T; cin >> T; bool submit = true; if(T > 1000000) submit = false; while(T--){ long long H = mt()%3+2,W = mt()%4+2,x = mt()%H,y = mt()%W,p = mt()%H,q = mt()%W; if(submit) cin >> H >> W >> x >> y >> p >> q,x--,y--,p--,q--; if(x == p && y == q) continue; if(q == y) swap(H,W),swap(x,y),swap(p,q); if(q < y) y = W-1-y,q = W-1-q; vector S; vector dist; if(!submit){ S = vector(H,string(W,'.')); S.at(p).at(q) = '#'; dist = solve(S,x,y); } long long N = H*W,answer = 0; if(x != p && y != q){ long long X = p-x,Y = q-y,g = gcd(abs(X),abs(Y)); X /= g,Y /= g; for(long long dx=-1; dx<=1; dx++) for(long long dy=-1; dy<=1; dy++){ if(dx == 0 && dy == 0) continue; long long one = 1001001001,two = 1001001001; if(X == dx && Y == dy){ if(dx == -1) one = x-p-1; else if(dx == 1) one = p-x-1; if(dy == -1) two = y-q-1; else if(dy == 1) two = q-y-1; } else{ if(dx == -1) one = x; else if(dx == 1) one = H-1-x; if(dy == -1) two = y; else if(dy == 1) two = W-1-y; } answer += min(one,two); } answer += (N-2-answer)*2; } else{ long long X = p-x,Y = q-y,g = gcd(abs(X),abs(Y)); X /= g,Y /= g; for(long long dx=-1; dx<=1; dx++) for(long long dy=-1; dy<=1; dy++){ if(dx == 0 && dy == 0) continue; long long one = 1001001001,two = 1001001001; if(X == dx && Y == dy){ if(dx == -1) one = x-p-1; else if(dx == 1) one = p-x-1; if(dy == -1) two = y-q-1; else if(dy == 1) two = q-y-1; } else{ if(dx == -1) one = x; else if(dx == 1) one = H-1-x; if(dy == -1) two = y; else if(dy == 1) two = W-1-y; } answer += min(one,two); } answer += (N-2-answer)*2; long long D = max(H-1-x,x); long long left = W-1-(y+D); long long ly,ry; if(left >= 0 && D%2) ly = y+D+1,ry = y+D+D; else if(left >= 0) ly = y+D+2,ry = y+D+D; if(ly <= q) ly += (q-ly)/2*2+2; if(ry >= W) ry -= (ry-W)/2*2+2; if(left >= 0 && ly <= ry) answer += min(left,(W-1-q))-((ry-ly)/2+1); else if(left >= 0) answer += min(left,W-1-q); } long long jury = 0; if(!submit) for(long long i=0; i