import sys input = sys.stdin.readline def read_values(): return map(int, input().split()) def read_index(): return map(lambda x: int(x) - 1, input().split()) def read_list(): return list(read_values()) import math def main(): [n,m,a,b,c,d]=read_list() def calc(x): if x<0 or x >= n: return -10**17 return a*x+(c*x+d)//m*b # tmp=list() # for i in range(n): # tmp.append(calc(i)) # print(tmp) ans=list() ans.append(calc(0)) ans.append(calc(n-1)) if c==0: print(max(ans)) return # 最初に上がる v0=(m-d-1)//c ans.append(calc(v0+1)) ans.append(calc(v0)) # 最後に上がる g=math.gcd(c,m) nv = ((n-1)*c+d)%m//c ans.append(calc(n-1-nv)) ans.append(calc(n-2-nv)) v=d%g # 最初にギリギリ上がる vv=pow(c//g,-1,m//g)*(m+v-d)%(m//g) ans.append(calc(vv)) ans.append(calc(vv-1)) # 最後にギリギリ上がる vv2=n//(m//g)*(m//g)+vv vv2+=m//g*5 while vv2>=n: vv2-=m//g ans.append(calc(vv2)) ans.append(calc(vv2-1)) print(max(ans)) return if __name__ == "__main__": t=int(input()) for _ in range(t): main()