You are given two integers x and y. You can perform two types of operations: 

  1. Pay a dollars and increase or decrease any of these integers by 1. For example, if x = 0 and y = 7 there are four possible outcomes after this operation: 
    * x = 0, y = 6; 
    * x = 0, y = 8; 
    * x = -1, y = 7; 
    * x = 1, y = 7. 

  2. Pay b dollars and increase or decrease both integers by 1. For example, if x = 0 and y = 7 there are two possible outcomes after this operation: 
    * x = -1, y = 6; 
    * x = 1, y = 8. 



Your goal is to make both given integers equal zero simultaneously, i.e. x = y = 0. There are no other requirements. In particular, it is possible to move from x=1, y=0 to x=y=0.

Calculate the minimum amount of dollars you have to spend on it.

Input

The first line contains one integer t (1 ≤ t ≤ 100) — the number of testcases.

The first line of each test case contains two integers x and y (0 ≤ x, y ≤ 10^9).

The second line of each test case contains two integers a and b (1 ≤ a, b ≤ 10^9).

Output

For each test case print one integer — the minimum amount of dollars you have to spend.

Example

Input


2
1 3
391 555
0 0
9 4


Output


1337
0

Note

In the first test case you can perform the following sequence of operations: first, second, first. This way you spend 391 + 555 + 391 = 1337 dollars.

In the second test case both integers are equal to zero initially, so you dont' have to spend money.
# n=int(input())
# if(n%2==0):
#     print("YES")
# else:
#     print("NO")
# for _ in range(int(input())):
#     n=(input())
#     if(len(n)<=10):
#         print(n)
#     else:
#         print(n[0]+str(len(n)-2)+n[len(n)-1])
# a=0
# for _ in range(int(input())):
#     n=list(map(int,input().split()))
#     count=0
    
#     for i in range(len(n)):
#         if(n[i]==1):
#             count+=1
#         else:
#             count-=1
#     if(count>0):
#         a+=1
# print(a)
# n,m=map(int,input().split())
# a=list(map(int,input().split()))
# count=0
# for i in range(len(a)):
#     if(a[i]>=a[m-1] and a[i]>0):
#         count+=1
# print(count)
# n,m=map(int,input().split())
# # if((n*m)%2!=0):
# print((n*m)//2)
# # else:
# #     print((n*m)//2)\
# x=0
# for _ in range(int(input())):
#     n=input()
#     if(n=="X++" or n=="++X"):
#         x=x+1
#     else:
#         x=x-1
# print(x)
# n = input()
# m = input()
# n = n.lower()
# m = m.lower()
# if n == m:
#     print("0")
# elif n > m:
#     print('1')
# elif n <m:
#     print('-1')
# matrix=[]
# min=[]
# one_line=0
# one_column=0
# for l in range(0,5):
#     m=input().split()
#     for col,ele in enumerate()

# a = list(map(int,input().split('+')))
# a.sort()
# print('+'.join([str(c) for c in a]))
# n=list(input())
# # if(n[0].islower()):
#     n[0]=n[0].upper()
# else:
#     pass
# print("".join(str(x)for x in n))
# n=list(input())
# s=input()
# count=0
# for i in range(1,len(s)):
#     if(s[i]==s[i-1]):
#         count+=1
# print(count)
# v=["A","O","Y","E","U","I","a","i","e","o","u","y"]
# n=list(input())
# x=[]
# for i in range(len(n)):
#     if n[i] not in v:
#         x.append(n[i])
# print("."+".".join(str(y.lower())for y in x))
# a=[]
# b=[]
# c=[]
# for _ in range(int(input())):
#     x,y,z=map(int,input().split())
#     a.append(x)
#     b.append(y)
#     c.append(z)
# print("YES" if sum(a)==sum(b)==sum(c)== 0 else "NO") 
# m = "hello"
# n=input()
# j=0
# flag=0
# for i in range(len(n)):
#     if(n[i]==m[j]):
#         j=j+1
#     if(j==5):
#         flag=1
#         break
# if(flag==1):
#     print("YES")
# else:
#     print("NO")
# a=set(list(input()))
# print("CHAT WITH HER!" if len(set(list(input())))%2==0 else "IGNORE HIM!")
# k,n,w=map(int,input().split())
# sum=0
# a=[]
# for i in range(w+1):
#     sum+=k*i
# print((sum-n) if sum>n else 0)
# m,n = 0,0
# for i in range(5):
# 	a = map(int,input().split())
# 	for j in range(5):
# 		if a[j]!=0:
# 			m = i
# 			n = j
# 			break
# print(abs(m-2)+abs(n-2))
# l,b=map(int,input().split())
# c=0
# while(l<=b):
# 	l=l*3
# 	b=b*2
# 	c=c+1
# print(c)
# from math import ceil 
# n,m,a=map(int,input().split()) 
# # print(ceil(n/a),ceil(m/a))
# c=ceil(n/a)*ceil(m/a)  
# print(c) 
# n=int(input())
# if(n%4==0 or n%7==0 or n%44==0 or n%47==0 or n%74==0 or n%444==0 or n%447==0 or n%474==0 or n%477==0):
# 	print("YES")
# else:
# 	print("NO")
# def tramCapacity():
#     n = int(input().strip())
#     pout, pin = map(int, input().strip().split())
#     sm = pin
#     mx = pin
#     for i in range(n-1):
#         pout, pin = map(int, input().strip().split())
#         sm = sm - pout + pin
#         if sm > mx:
#             mx = sm
#     return mx

# print(tramCapacity())
# n,k=map(int,input().split())
# for i in range(k):
# 	if(str(n)[-1]=="0"):
# 		n=n//10
# 	else:
# 		n=n-1
# print(n)
# n=int(input())
# n=int(input())
# if(n%5==0):
# 	print(n//5)
# else:
# 	print((n//5)+1)
# n=int(input())
# if(n%2==0):
#     print(n//2)
# else:
#     print("-"+str(n-((n-1)//2)))
# n=int(input())
# arr=list(map(int,input().split()))
# sum=sum(arr)
# deno=len(arr)*100
# print(format(((sum/deno)*100),'.12f'))
# k=int(input())
# l=int(input())
# m=int(input())
# n=int(input())
# d=int(input())
# count=0
# # if(d%k==0):
# #     print(d)
# # elif(d%l==0):
# #     print(d//l)
# # elif(d%m==0):
# #     print(d//m)
# # elif(d%n==0):
# #     print(d//n)
# # else:
# for i in range(1,d+1):
#     if(i%k==0 or i%l==0 or i%m==0 or i%n==0):
#         count+=1
# print(count)

# a,b=map(int,input().split())
# # if(n%m==0):
# #     print(0)    
# # else:
# #     for i in range(m):
# #         n=n+i
# #         if(n%m==0):
# #             print(i-1)
# #             break
# #         else:
# #             continue
# x=((a+b)-1)/b
# print((b*x)-1)
# for _ in range(int(input())):
#     a, b = map(int,input().split(" "))
#     x=(a + b - 1) // b
#     # print(x)
#     print((b * x) - a)
# for _ in range(int(input())):
#     n=int(input())
#     print((n-1)//2)
# n=int(input())
# # n = int(input())
# if n%2 == 0:
#     print(8, n-8)
# else:
#     print(9, n-9)
# n=int(input())
# a=[]
# for i in range(len(n)):
#     x=int(n)-int(n)%(10**i)
#     a.append(x)
# print(a)
# # b=max(a)
# print(a[-1])
# for i in range(len(a)):
#     a[i]=a[i]-a[-1]
# print(a)
# for _ in range(int(input())):
#     n=int(input())
#     p=1
#     rl=[]
#     x=[]
#     while(n>0):
#         dig=n%10
#         r=dig*p
#         rl.append(r)
#         p*=10
#         n=n//10
#     for i in rl:
#         if i !=0:
#             x.append(i)
#     print(len(x))
#     print(" ".join(str(x)for x in x))
# n,m=map(int,input().split())
# print(str(min(n,m))+" "+str((max(n,m)-min(n,m))//2))
# arr=sorted(list(map(int,input().split())))
# s=max(arr)
# ac=arr[0]
# ab=arr[1]
# bc=arr[2]
# a=s-bc
# b=ab-a
# c=bc-b
# print(a,b,c)
# x=0
# q,t=map(int,input().split())
# for i in range(1,q+1):
#     x=x+5*i
#     if(x>240-t):
#         print(i-1)
#         break
# if(x<=240-t):
#     print(q)       
# # print(q)
# print(z)
# print(x)
# l=(240-t)-x
# print(l)
# if(((240-t)-x)>=0):
#     print(q)
# else:
#     print(q-1)
# n, L = map(int, input().split())
# arr = [int(x) for x in input().split()]
# arr.sort()

# x = arr[0] - 0
# y = L - arr[-1]

# r = max(x, y) * 2

# for i in range(1, n):
#     r = max(r, arr[i] - arr[i-1])

# print(format(r/2,'.12f'))

# n,m=map(int,input().split())
# print(((m-n)*2)-1)
# for _ in range(int(input())):
#     n=int(input())
#     x=360/(180-n)
#     # print(x)
#     if(n==60 or n==90 or n==120 or n==108 or n==128.57 or n==135 or n==140 or n==144 or n==162 or n==180):
#         print("YES")
#     elif(x==round(x)):
#         print("YES")
#     else:
#         print("NO")
# n,m=map(int,input().split())
# if(n<2 and m==10):
#     print(-1)
# else:
#     x=10**(n-1)
#     print(x+(m-(x%m)))
# for _ in range(int(input())):
#     n,k=map(int,input().split())
#     a=list(map(int,input().split()))
#     a.sort()
#     c=0
#     for i in range(1,n):
#         c = (k-a[i])//a[0]
#         print(c)
for _ in range(int(input())):
    x,y=map(int,input().split())
    a,b=map(int,input().split())
    q=(a*(x+y))
    p=(b*(min(x,y))+a*(abs(x-y)))
    print(min(p,q))