#include<stdio.h>
#define MaxN 5
#define MaxP 3
#define ll long long
typedef struct
{
int x,y;
} xy;
int T,N,M,C[MaxN],V[MaxN],viz[MaxN];
xy A[MaxN][MaxP];
int MIN;
int min(int a,int b)
{
return a<b ? a:b;
}
int Dist(int a,int b)
{
if(a > b)
return a-b;
return b-a;
}
void BackSubm(int k,int D,int nr,int p)
{
if(k == p+1)
{
if(D < MIN)
MIN = D;
return ;
}
BackSubm(k+1,D+Dist(A[V[k]][0].x,A[V[k-1]][nr].x)+Dist(A[V[k]][0].y,A[V[k-1]][nr].y)+C[V[k]],1,p);
BackSubm(k+1,D+Dist(A[V[k]][1].x,A[V[k-1]][nr].x)+Dist(A[V[k]][1].y,A[V[k-1]][nr].y)+C[V[k]],0,p);
}
void BackAranj(int k,int p)
{
if(k == p+1)
{
V[k] = 4;
BackSubm(1,0,0,p+1);
return ;
}
for(int i=1;i<=3;i++)
if(!viz[i])
{
V[k] = i;
viz[i] = 1;
BackAranj(k+1,p);
viz[i] = 0;
}
}
int main()
{
FILE *f = fopen("portal3.in","r");
FILE *g = fopen("portal3.out","w");
fscanf(f,"%d",&T);
for(int i=1;i<=T;i++)
{
MIN = 2000000000;
fscanf(f,"%d %d",&N,&M);
A[4][0].x = A[4][1].x = N;
A[4][0].y = A[4][1].y = M;
for(int j=1;j<=3;j++)
fscanf(f,"%d %d %d %d %d",&A[j][0].x,&A[j][0].y,&A[j][1].x,&A[j][1].y,&C[j]);
for(int j=1;j<=3;j++)
BackAranj(1,j);
fprintf(g,"%d ",min(MIN,N+M));
}
fclose(g);
fclose(f);
return 0;
}