You are given an array of integers a_1,a_2,…,a_n. Find the maximum possible value of a_ia_ja_ka_la_t among all five indices (i, j, k, l, t) (i<j<k<l<t).

Input

The input consists of multiple test cases. The first line contains an integer t (1≤ t≤ 2 ⋅ 10^4) — the number of test cases. The description of the test cases follows.

The first line of each test case contains a single integer n (5≤ n≤ 10^5) — the size of the array.

The second line of each test case contains n integers a_1,a_2,…,a_n (-3× 10^3≤ a_i≤ 3× 10^3) — given array.

It's guaranteed that the sum of n over all test cases does not exceed 2⋅ 10^5.

Output

For each test case, print one integer — the answer to the problem.

Example

Input


4
5
-1 -2 -3 -4 -5
6
-1 -2 -3 1 2 -1
6
-1 0 0 0 -1 -1
6
-9 -7 -5 -3 -2 1


Output


-120
12
0
945

Note

In the first test case, choosing a_1,a_2,a_3,a_4,a_5 is a best choice: (-1)⋅ (-2) ⋅ (-3)⋅ (-4)⋅ (-5)=-120.

In the second test case, choosing a_1,a_2,a_3,a_5,a_6 is a best choice: (-1)⋅ (-2) ⋅ (-3)⋅ 2⋅ (-1)=12.

In the third test case, choosing a_1,a_2,a_3,a_4,a_5 is a best choice: (-1)⋅ 0⋅ 0⋅ 0⋅ (-1)=0.

In the fourth test case, choosing a_1,a_2,a_3,a_4,a_6 is a best choice: (-9)⋅ (-7) ⋅ (-5)⋅ (-3)⋅ 1=945.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class MaximumProduct {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int tests = sc.nextInt();
		for(int t=0; t<tests; t++) {
			int size = sc.nextInt();
			long[] arr = new long[size];
			for(int i=0; i<size; i++) {
				arr[i]=sc.nextLong();
			}
			Arrays.sort(arr);
			ArrayList<Long> negative = new ArrayList<>();
			ArrayList<Long> positive = new ArrayList<>();
			long ans = Long.MIN_VALUE;
			for(int i=0; i<size; i++) {
				if(arr[i]<0) {
					negative.add(arr[i]);
				}
				else {
					if(arr[i]==0) {
						ans=0;
					}
					positive.add(0,arr[i]);
				}
			}
			int pos = 5;
			int neg = 0;
			while(pos>=0) {
				long curr = 1;
				if(positive.size()>=pos && negative.size()>=neg) {
					for(int j=0; j<pos; j++) {
						curr*=positive.get(j);
					}
					for(int j=0; j<neg; j++) {
						curr*=negative.get(j);
					}
					ans=Math.max(ans,curr);
				}
				pos--;
				neg++;
			}
			if(negative.size()>=5) {
				long curr=1;
				for(int j=negative.size()-1; j>=negative.size()-5; j--) {
					curr*=negative.get(j);
				}
				ans=Math.max(ans, curr);
			}
			System.out.println(ans);
		}
		sc.close();
	}

}
