1207_A. There Are Two Types Of Burgers_16232
There are two types of burgers in your restaurant — hamburgers and chicken burgers! To assemble a hamburger you need two buns and a beef patty. To assemble a chicken burger you need two buns and a chicken cutlet. 

You have b buns, p beef patties and f chicken cutlets in your restaurant. You can sell one hamburger for h dollars and one chicken burger for c dollars. Calculate the maximum profit you can achieve.

You have to answer t independent queries.

Input

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

The first line of each query contains three integers b, p and f (1 ≤ b, ~p, ~f ≤ 100) — the number of buns, beef patties and chicken cutlets in your restaurant.

The second line of each query contains two integers h and c (1 ≤ h, ~c ≤ 100) — the hamburger and chicken burger prices in your restaurant.

Output

For each query print one integer — the maximum profit you can achieve.

Example

Input


3
15 2 3
5 10
7 5 2
10 12
1 100 100
100 100


Output


40
34
0

Note

In first query you have to sell two hamburgers and three chicken burgers. Your income is 2 ⋅ 5 + 3 ⋅ 10 = 40.

In second query you have to ell one hamburgers and two chicken burgers. Your income is 1 ⋅ 10 + 2 ⋅ 12 = 34.

In third query you can not create any type of burgers because because you have only one bun. So your income is zero.
import java.util.*;
import java.io.*;
import java.math.BigInteger;
public class burger{
public static long mod = 1000000007;
public static int dx[] = {-1,0,1,0,-1,-1,1,1,-1};//primero ady, despues esq
public static int dy[] = {0,1,0,-1,1,1,-1,-1};
public static void main(String args[]) throws IOException{
StringBuilder sb = new StringBuilder("");
BufferedReader lector = new BufferedReader(new InputStreamReader(System.in));
//String tmp[] = lector.readLine().split(" ");
int cas = Integer.parseInt(lector.readLine());
for(int n = 0;n<cas;n++){
String t[] = lector.readLine().split(" ");
long a[] = new long[3];
for(int nn = 0;nn<3;nn++)a[nn]=Long.parseLong(t[nn]);
t = lector.readLine().split(" ");
long b = Long.parseLong(t[0]);
long c = Long.parseLong(t[1]);
int m = b>c?1:2;
int mm = b>c?2:1;
a[0]=a[0]/2;
long tt = Math.min(a[0],a[m])*(b>c?b:c);
long r = Math.min(a[0]-Math.min(a[0],a[m]),a[mm])*(b>c?c:b);
long res =tt+r;
sb.append(res+"\n");
}
System.out.print(sb);
}

}
class p implements Comparable{
public int a;
public p(int a){
this.a = a;
}
public String toString(){
return "";
}
public int compareTo(Object o){
p pp = (p)o;
return (int)Math.signum(a-pp.a);
}
}
//sergio1
