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.
#   Author: yumtam
#   Created at: 2020-09-12 22:34

from __future__ import division, print_function
_interactive = False

def main():
    for _ in range(int(input())):
        n = int(input())
        ar = input_as_list()

        positives = [x for x in ar if x>=0]
        negatives = [x for x in ar if x<0]

        positives.sort()
        negatives.sort(reverse=True)

        lp = len(positives)
        np = len(negatives)

        ans = -INF

        if lp >= 5:
            lst = positives[-5:]
            a, b, c, d, e = lst
            ans = max(ans, a*b*c*d*e)
        if lp >= 3 and np >= 2:
            lst = positives[-3:]+negatives[-2:]
            a, b, c, d, e = lst
            ans = max(ans, a*b*c*d*e)
        if lp >= 1 and np >= 4:
            lst = positives[-1:]+negatives[-4:]
            a, b, c, d, e = lst
            ans = max(ans, a*b*c*d*e)

        if lp >= 4 and np >= 1:
            lst = positives[:4]+negatives[:1]
            a, b, c, d, e = lst
            ans = max(ans, a*b*c*d*e)
        if lp >= 2 and np >= 3:
            lst = positives[:2] + negatives[:3]
            a, b, c, d, e = lst
            ans = max(ans, a*b*c*d*e)
        if np >= 5:
            lst = negatives[:5]
            a, b, c, d, e = lst
            ans = max(ans, a*b*c*d*e)

        print(ans)


# Constants
INF = float('inf')
MOD = 10**9+7

# Python3 equivalent names
import os, sys, itertools
if sys.version_info[0] < 3:
    input = raw_input
    range = xrange

    filter = itertools.ifilter
    map = itertools.imap
    zip = itertools.izip

# print-flush in interactive problems
if _interactive:
    flush = sys.stdout.flush
    def printf(*args, **kwargs):
        print(*args, **kwargs)
        flush()

# Debug print, only works on local machine
LOCAL = "LOCAL_" in os.environ
debug_print = (print) if LOCAL else (lambda *x, **y: None)

# Fast IO
if (not LOCAL) and (not _interactive):
    from io import BytesIO
    from atexit import register
    sys.stdin = BytesIO(os.read(0, os.fstat(0).st_size))
    sys.stdout = BytesIO()
    register(lambda: os.write(1, sys.stdout.getvalue()))
    input = lambda: sys.stdin.readline().rstrip('\r\n')

# Some utility functions(Input, N-dimensional lists, ...)
def input_as_list():
    return [int(x) for x in input().split()]

def input_with_offset(o):
    return [int(x)+o for x in input().split()]

def input_as_matrix(n, m):
    return [input_as_list() for _ in range(n)]

def array_of(f, *dim):
    return [array_of(f, *dim[1:]) for _ in range(dim[0])] if dim else f()

# Start of external code templates...
# End of external code templates.

main()
