# include <cstdio>
long long t, n, m, x[7], y[7],c[4];
long long dist ( long long x1, long long y1, long long x2, long long y2)
{
long long a, b;
a = x1 - x2;
if (a < 0)
a = 0 - a;
b = y1 - y2;
if (b < 0)
b = 0 - b;
return a + b;
}
long long mai_aproape (long long p, long long x1, long long x2)
{
if ( dist (x1, x2, x[2*p-1], y[2*p-1]) < dist( x1, x2, x[2*p], y[2*p]))
return 2*p - 1;
return 2*p;
}
long long cost1 ( long long p, long long cx, long long cy, long long fx, long long fy)
{
long long pr, ult;
pr = mai_aproape (p, cx, cy);
if (pr%2 == 0)
ult = pr -1;
else
ult = pr +1;
return dist(x[pr],y[pr], cx, cy) + c[p] + dist(fx, fy, x[ult], y[ult]);
}
long long cost2 ( long long p1, long long p2, long long cx, long long cy, long long fx, long long fy)
{
long long pr, ult;
pr = mai_aproape (p1, cx, cy);
if (pr%2 == 0)
ult = pr -1;
else
ult = pr +1;
return dist(cx, cy, x[pr], y[pr]) + c[p1] + cost1( p2, x[ult], y[ult], fx, fy);
}
long long cost3 ( long long p1, long long p2, long long p3, long long cx, long long cy, long long fx, long long fy)
{
long long pr, ult;
pr = mai_aproape (p1, cx, cy);
if (pr%2 == 0)
ult = pr -1;
else
ult = pr +1;
return dist(cx, cy, x[pr], y[pr]) + c[p1] + cost2( p2, p3, x[ult], y[ult], fx, fy);
}
int main()
{
freopen ("portal3.in","r",stdin);
freopen ("portal3.out","w", stdout);
long long curent, mi;
scanf ("%lld", &t);
for (long long i =1; i<=t; i++)
{
scanf ("%lld%lld", &n,&m);
for (long long j=1; j<=3; j++)
scanf ("%lld%lld%lld%lld%lld", &x[2*j - 1], &y[j*2 - 1], &x[2*j], &y[2*j], &c[j]);
mi = dist(0, 0, n, m);
for (long long j= 1; j<=3; j++)
{
curent = cost1(j, 0, 0, n, m);
if (curent < mi)
mi = curent;
}
for (long long a=1; a<=3; a++)
for (long long b=1; b<=3; b++)
if (a != b)
{
curent = cost2(a, b, 0, 0, n, m);
if (curent < mi)
mi = curent;
}
for (long long a=1; a<=3; a++)
for (long long b=1; b<=3; b++)
if (a !=b)
for (long long c=1; c<= 3; c++)
if (a !=c && b != c)
{
curent = cost3(a, b, c, 0, 0, n, m);
if (curent < mi)
mi = curent;
}
printf("%lld\n", mi);
}
return 0;
}