#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const double eps = 1e-6;
const long long inf = 0x3f3f3f3f;
const long long N = 2e5 + 10;
char s[N];
int main() {
  long long t;
  scanf("%lld", &t);
  while (t--) {
    long long x, y;
    long long v1, v2, v3, v4, v5, v6;
    scanf("%lld%lld", &x, &y);
    scanf("%lld%lld%lld%lld%lld%lld", &v1, &v2, &v3, &v4, &v5, &v6);
    v1 = min(v1, v6 + v2);
    v2 = min(v2, v1 + v3);
    v3 = min(v3, v2 + v4);
    v4 = min(v4, v3 + v5);
    v5 = min(v5, v4 + v6);
    v6 = min(v6, v1 + v5);
    long long ans1 = 0LL;
    long long ans2 = 0LL;
    if (x * y == 0LL) {
      if (x == 0LL) {
        if (y >= 0) {
          ans1 += v2 * abs(y);
        } else {
          ans1 += v5 * abs(y);
        }
      } else {
        if (x >= 0) {
          ans1 += v6 * abs(x);
        } else {
          ans1 += v3 * abs(x);
        }
      }
      printf("%lld\n", ans1);
    } else if (x * y < 0LL) {
      if (x < 0LL) {
        ans1 += v3 * abs(x);
        ans1 += v2 * abs(y);
      } else {
        ans1 += v6 * abs(x);
        ans1 += v5 * abs(y);
      }
      printf("%lld\n", ans1);
    } else {
      if (x < 0LL) {
        if (x < y) {
          ans1 += v4 * abs(y);
          ans1 += v3 * abs(y - x);
        } else {
          ans1 += v4 * abs(x);
          ans1 += v5 * abs(x - y);
        }
      } else {
        if (x < y) {
          ans1 += abs(x) * v1;
          ans1 += v2 * abs(y - x);
        } else {
          ans1 += abs(y) * v1;
          ans1 += v6 * abs(x - y);
        }
      }
      printf("%lld\n", ans1);
    }
  }
  return 0;
}
