using System; using static System.Console; using System.Linq; using System.Collections.Generic; using System.Runtime.Intrinsics.Arm; class Program { static int NN => int.Parse(ReadLine()); static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); static string[] SList(long n) => Enumerable.Repeat(0, (int)n).Select(_ => ReadLine()).ToArray(); public static void Main() { Solve(); } static void Solve() { var t = NN; var ans = new long[t]; for (var i = 0; i < t; ++i) { var c = NList; ans[i] = Kado(c[0], c[1], c[2], c[3], c[4], c[5]); } WriteLine(string.Join("\n", ans)); } static long Kado(int a, int b, int c, long x, long y, long z) { var ans = Math.Min(LHL(a, b, c, x, y, z), HLH(a, b, c, x, y, z)); return ans == INF ? -1 : ans; } static long LHL(int a, int b, int c, long x, long y, long z) { if (a == c && a == 1) return INF; if (b < 3) return INF; var ans = INF; var zcnt = Math.Max(0, Math.Max(a, c) - b + 1 + (a == c ? 1 : 0)); var la = a - zcnt; var lc = c - zcnt; if (la == lc) { if (la > 1) ans = Math.Min(ans, zcnt * z + Math.Min(x, y)); } else { if (la > 0 && lc > 0) ans = Math.Min(ans, zcnt * z); } return ans; } static long HLH(int a, int b, int c, long x, long y, long z) { var ans = INF; var xcnt = Math.Max(0, b - c + 1); var ycnt = Math.Max(0, b - a + 1); var la = a - xcnt; var lb = b - xcnt - ycnt; var lc = c - ycnt; if (la == lc) { if (lb > 1) ans = Math.Min(ans, xcnt * x + ycnt * y + Math.Min(x, y)); } else { if (lb > 0) ans = Math.Min(ans, xcnt * x + ycnt * y); } return ans; } static long INF = long.MaxValue / 2; }