#include <bits/stdc++.h>
inline int read() {
  char c = getchar();
  int x = 0, f = 1;
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = x * 10 + c - '0';
    c = getchar();
  }
  return x * f;
}
using namespace std;
long long x, y, t, c[10];
int main() {
  cin >> t;
  while (t--) {
    long long ans = 0;
    cin >> x >> y;
    for (int i = 1; i <= 6; i++) {
      cin >> c[i];
    }
    if (x >= 0 && y < 0) {
      if (c[6] < c[1] + c[5]) {
        ans += x * c[6];
      } else {
        ans += x * (c[1] + c[5]);
      }
      if (c[5] < c[4] + c[6]) {
        ans += (-y) * c[5];
      } else {
        ans += (-y) * (c[4] + c[6]);
      }
    }
    if (x < 0 && y >= 0) {
      if (c[2] < c[1] + c[3]) {
        ans += y * c[2];
      } else {
        ans += y * (c[1] + c[3]);
      }
      if (c[3] < c[4] + c[2]) {
        ans += (-x) * c[3];
      } else {
        ans += (-x) * (c[4] + c[2]);
      }
    }
    if (x >= 0 && y >= 0) {
      if (c[1] < c[2] + c[6]) {
        ans += min(x, y) * c[1];
      } else {
        ans += min(x, y) * (c[2] + c[6]);
      }
      if (x >= y) {
        if (c[6] < c[1] + c[5]) {
          ans += (x - y) * c[6];
        } else {
          ans += (x - y) * (c[1] + c[5]);
        }
      } else {
        if (c[2] < c[1] + c[3]) {
          ans += (y - x) * c[2];
        } else {
          ans += (y - x) * (c[1] + c[3]);
        }
      }
    }
    if (x < 0 && y < 0) {
      if (c[4] < c[3] + c[5]) {
        ans += min(-x, -y) * c[4];
      } else {
        ans += min(-x, -y) * (c[3] + c[5]);
      }
      if (x < y) {
        if (c[3] < c[4] + c[2]) {
          ans += (y - x) * c[3];
        } else {
          ans += (y - x) * (c[2] + c[4]);
        }
      } else {
        if (c[5] < c[4] + c[6]) {
          ans += (x - y) * c[5];
        } else {
          ans += (x - y) * (c[4] + c[6]);
        }
      }
    }
    cout << ans << '\n';
  }
  return 0;
}
