#include <cstdio>
#include <cstdlib>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int n,m,minim=0;
pair<int,int> x,y,z;
int dist(pair<int,int> x,pair<int,int> y)
{
return (abs(x.first-y.first)+abs(x.second-y.second))-2;
}
void citire()
{
minim=1<<30;
scanf("%d %d",&n,&m);
for(int i=0;i<3;i++)
{
int k;
scanf("%d %d %d %d %d",&x.first,&x.second,&y.first,&y.second,&k);
//cout<<x.first<<" "<<x.second<<" "<<y.first<<" "<<y.second<<" "<<k<<endl;
//cout<< " SI distanta prin portal : "<<dist( make_pair(0,0),x ) + k + dist(make_pair(n,m),y)<<endl ;
//cout<<" Distanta 1 : "<< dist( make_pair(0,0),x ) << " Distanta 2 : "<<dist(make_pair(n,m),y) <<endl;
//cout<<" Varianta 2 : " << dist( make_pair(n,m),x ) <<" "<< dist(make_pair(0,0),y)<<endl;
minim=min(minim, min ( ( dist( make_pair(0,0),x ) + k + dist(make_pair(n,m),y) ) ,
( dist( make_pair(n,m),x ) + k + dist(make_pair(0,0),y) ) ) );
}
}
int main()
{
freopen("portal3.in","r", stdin);
freopen("portal3.out","w", stdout);
int t;
scanf("%d",&t);
for(int i=1;i<=t;i++)
{
citire();
//printf("%d\n",dist( make_pair(0,0),make_pair(n,m) ) );
minim=min(minim,dist( make_pair(0,0),make_pair(n,m) ) );
printf("%d\n",minim);
}
/*for(int i=1;i<=n;i++)
{
cout<<endl;
for(int j=1;j<=m;j++)
cout<<h[i][j]<<" ";
}*/
return 0;
}