수열의 장인

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

승현이는 수열을 찾는 사람들을 위해 길이가 NN인 수열 a1,a2,,aNa_1, a_2, \dots, a_N을 만드는 일을 한다. 경력이 짧아서 각 원소가 2-2 이상 22 이하인 정수 수열만 만들 수 있고, 그래서 찾아오는 고객이 많지 않다.

이를 지켜보던 지학이가 승현이에게 수열을 하나 의뢰했다. 지학이는 완성된 수열에서 연속한 구간 ai,ai+1,,aj1,aja_i, a_{i+1}, \dots, a_{j-1}, a_j (1ijN1 \le i \le j \le N)를 하나 골라, 고른 구간의 원소를 모두 곱한 값 ai×ai+1××aj1×aja_i \times a_{i+1} \times \dots \times a_{j-1} \times a_j를 가장 크게 만들려고 한다. i=ji = j이면 곱은 aia_i로 정의한다.

승현이가 만든 수열이 주어질 때, 지학이가 얻을 수 있는 곱의 최댓값을 구하라.

입력

첫 줄에 테스트 케이스의 수 TT (1T1000001 \le T \le 100000)가 주어진다. 이후 TT개의 테스트 케이스가 이어진다.

각 테스트 케이스의 첫 줄에는 수열의 길이 NN (2N1000002 \le N \le 100000)이 주어진다. 둘째 줄에는 수열의 원소 a1,a2,,aNa_1, a_2, \dots, a_N (2ai2-2 \le a_i \le 2)이 공백을 사이에 두고 주어진다.

모든 테스트 케이스의 NN의 총합은 300000300000을 넘지 않는다.

출력

각 테스트 케이스마다 곱의 최댓값을 1,000,000,0071{,}000{,}000{,}007 (=109+7= 10^9 + 7)로 나눈 나머지를 한 줄에 하나씩 출력한다.

최댓값은 실제 곱한 값끼리 비교해서 고르고, 그렇게 고른 값 하나만 나머지 연산을 적용한다.