#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <set>
using namespace std;
const int MAXN = 10;
const int INF = 0x3f3f3f3f;
vector< pair<int, int> > G[MAXN];
int Dmin[MAXN];
//#define DIM 8000
#define DIM 8192
char ax[DIM+16];
int idx;
inline void cit(int &x)
{
x=0;
while(ax[idx]<'0' || ax[idx]>'9')
if(++idx==DIM)
fread(ax, 1, DIM, stdin), idx=0;
while(ax[idx]>='0' && ax[idx]<='9')
{
x=x*10+ax[idx]-'0';
if(++idx==DIM)
fread(ax,1, DIM, stdin),idx=0;
}
}
inline int dist(int a,int b, int c, int d)
{
// cerr<<"dist("<<a<<','<<b<<','<<c<<','<<d<<")="<<abs(c-a)+abs(d-b)<<'\n';
return abs(c-a)+abs(d-b);
}
void dijkstra()
{
set< pair<int, int> > T;
T.insert( make_pair(0, 0) );
memset(Dmin, INF, sizeof(Dmin));
while( T.size() > 0 )
{
int val = (*T.begin()).first, nod = (*T.begin()).second;
T.erase(*T.begin());
for (vector< pair<int, int> >::iterator it = G[nod].begin(); it != G[nod].end(); ++it)
if(val + it->second < Dmin[ it->first ] )
Dmin[ it->first ] = val + it->second, T.insert(make_pair(Dmin[it->first],it->first));
}
}
int main()
{
freopen("portal3.in","rt",stdin);
freopen("portal3.out","wt",stdout);
int n,m,x[10],y[10],c[10],T;
cin>>T;
while(T--)
{
cit(n);
cit(m);
for(int i=1;i<=6;i+=2)
{
// cerr<<"-----------\n";
cit(x[i]);
cit(y[i]);
cit(x[i+1]);
cit(y[i+1]);
cit(c[i]);
// cerr<<"0,"<<i<<"\n";
G[0].push_back(make_pair(i,dist(0,0,x[i],y[i])));
// cerr<<"0,"<<i+1<<"\n";
G[0].push_back(make_pair(i+1,dist(0,0,x[i+1],y[i+1])));
// cerr<<i<<","<<i+1<<"\n";
G[i].push_back(make_pair(i+1,c[i]));
// cerr<<i+1<<","<<i<<"\n";
G[i+1].push_back(make_pair(i,c[i]));
// cerr<<i<<","<<7<<"\n";
G[i].push_back(make_pair(7,dist(x[i],y[i],n,m)));
// cerr<<i+1<<","<<7<<"\n";
G[i+1].push_back(make_pair(7,dist(x[i+1],y[i+1],n,m)));
}
// cerr<<"-----------\n";
for(int i=1;i<=6;i+=2)
{
for(int j=i+2;j<=6;j++)
{
// cerr<<i<<","<<j<<"\n";
G[i].push_back(make_pair(j,dist(x[i],y[i],x[j],y[j])));
G[j].push_back(make_pair(i,dist(x[i],y[i],x[j],y[j])));
G[i+1].push_back(make_pair(j,dist(x[i+1],y[i+1],x[j],y[j])));
G[j].push_back(make_pair(i+1,dist(x[i+1],y[i+1],x[j],y[j])));
}
}
G[0].push_back(make_pair(7,dist(0,0,n,m)));
dijkstra();
cout<<Dmin[7]<<'\n';
// for(int i=0;i<8;++i)
// cerr<<Dmin[i]<<'\n';
for(int i=0;i<10;++i)
{
G[i].clear();
}
}
return 0;
}