INF = 10**2000 def solve(): n, m, a, b, c, d = map(int, input().split()) def eval(m, a, b, c, d, x: int) -> int: return a * x + b * ((c * x + d) // m) ans = 0 param = (n, m, a, b, c, d) ops = [] def f(ans, param): n, m, a, b, c, d = param if n <= 0: ans = -INF return (True, ans, param) if c < 0 or d < 0: ops.append(("+", b * (d // m))) param = (n, m, a + b * (c // m), b, c % m, d % m) return (False, ans, param) if a >= 0 and b >= 0: ans = eval(m, a, b, c, d, n-1) return (True, ans, param) if a < 0 and b < 0: ans = eval(m, a, b, c, d, 0) return (True, ans, param) if m == 1: ans = max(eval(m, a, b, c, d, 0), eval(m, a, b, c, d, n-1)) return (True, ans, param) if c >= m: c1 = c // m c2 = c % m param = (n, m, a + b * c1, b, c2, d) return (False, ans, param) if d >= m: d1 = d // m d2 = d % m param = (n, m, a, b, c, d2) ops.append(("+", b * d1)) return (False, ans, param) k = (c * (n-1) + d) // m if a < 0: ops.append(("max", eval(m, a, b, c, d, 0))) ops.append(("+", b)) param = (k, c, b, a, m, m - d + c - 1) return (False, ans, param) ops.append(("max", eval(m, a, b, c, d, n-1))) param = (k, c, b, a, m, m - d - 1) return (False, ans, param) while True: b, ans, param = f(ans, param) # print(b, ans, param) if b: break # print(ans) # print(ops) for op, val in ops[::-1]: if op == "+": ans = ans + val else: ans = max(ans, val) print(ans) t = int(input()) for _ in range(t): solve()