#include <bits/stdc++.h>
using namespace std;
int mx[] = {1, 0, -1, -1, 0, 1};
int my[] = {1, 1, 0, -1, -1, 0};
long long c[7];
long long x, y;
long long f(int a, int b) {
  if (mx[a] + mx[b] == 0 && my[a] + my[b] == 0) return LLONG_MAX;
  long long sa = 0, sb = 0;
  long long X = 0, Y = 0;
  long long cost = 0;
  if (mx[a] == 0) {
    sb = llabs(x);
    X += sb * mx[b];
    Y += sb * my[b];
    sa = llabs(Y - y);
  } else if (my[a] == 0) {
    sb = llabs(y);
    X += sb * mx[b];
    Y += sb * my[b];
    sa = llabs(X - x);
  } else if (mx[b] == 0) {
    sa = llabs(x);
    X += sa * mx[a];
    Y += sa * my[a];
    sb = llabs(Y - y);
  } else if (my[b] == 0) {
    sa = llabs(y);
    X += sa * mx[a];
    Y += sa * my[a];
    sb = llabs(X - x);
  } else {
    sa = llabs(x);
    sb = 0;
    X += sa * mx[a];
    Y += sb * mx[b];
  }
  if (sa * mx[a] + sb * mx[b] != x || sa * my[a] + sb * my[b] != y)
    return LLONG_MAX;
  cost = sa * c[a] + sb * c[b];
  return cost;
}
int main() {
  int t;
  scanf("%d", &t);
  while (t--) {
    scanf("%lld %lld", &x, &y);
    for (int i = 0; i < 6; i++) scanf("%lld", &c[i]);
    long long best = LLONG_MAX;
    if (x == 0 && y == 0) {
      printf("0\n");
      continue;
    }
    for (int i = 0; i < 6; i++) {
      for (int j = i; j < 6; j++) {
        best = min(best, f(i, j));
      }
    }
    printf("%lld\n", best);
  }
  return 0;
}
