#include<stdio.h>
using namespace std;
long long x1,y1,c,mini,n,m,t10,i1,i,k,p1[5],p2[5],q1[5],q2[5],co[5],x[5];
int abs(int q1)
{
if(q1>=0) return q1;
else return q1*-1;
}
int dist(int x11,int y11,int x21,int y21)
{
return abs(y21-y11)+abs(x21-x11);
}
int valid(int k)
{
for(i=1;i<k;i++)
if(x[i]==x[k]) return 0;
return 1;
}
void back()
{
k=1;
x[k]=0;
while(k>0)
{
while(k<=3&&x[k]<3)
{
x[k]++;
if(valid(k)==1)
{
x1=0;
y1=0;
c=0;
for(i=1;i<=k;i++)
{
c=c+dist(x1,y1,p1[x[i]],q1[x[i]])+co[x[i]];
x1=p2[x[i]];
y1=q2[x[i]];
}
c=c+dist(x1,y1,n,m);
if(c<mini) mini=c;
k++;
x[k]=0;
}
}
k--;
}
}
int main()
{
freopen("portal3.in","r",stdin);
freopen("portal3.out","w",stdout);
scanf("%d",&t10);
for(i1=1;i1<=t10;i1++)
{
scanf("%d",&n);
scanf("%d",&m);
for(i=1;i<=3;i++)
{
scanf("%I64d",&p1[i]);
scanf("%I64d",&q1[i]);
scanf("%I64d",&p2[i]);
scanf("%I64d",&q2[i]);
scanf("%I64d",&co[i]);
}
mini=dist(0,0,n,m);
back();
printf("%I64d\n",mini);
}
return 0;
}