#include <cstdio>
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
const int MAXN = 10;
const int INF = 0x3f3f3f3f;
vector< pair<int, int> > G[MAXN];
int Dmin[MAXN];
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 bellman_ford() {
bool InQueue[MAXN];
queue<int> Q;
memset(Dmin, INF, sizeof(Dmin));
memset(InQueue, false, sizeof(InQueue));
Dmin[0] = 0;
Q.push(0);
InQueue[0] = true;
while (!Q.empty()) {
int nod = Q.front();
Q.pop();
InQueue[nod] = false;
for (vector< pair<int, int> >::iterator it = G[nod].begin(); it != G[nod].end(); ++it)
if (Dmin[nod] + it->second < Dmin[it->first]) {
Dmin[it->first] = Dmin[nod] + it->second;
if (!InQueue[it->first]) {
Q.push(it->first);
InQueue[it->first] = true;
}
}
}
}
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--)
{
cin>>n>>m;
for(int i=1;i<=6;i+=2)
{
// cerr<<"-----------\n";
cin>>x[i]>>y[i]>>x[i+1]>>y[i+1]>>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)));
bellman_ford();
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;
}