#include using namespace std; #define rep(i, l, n) for(int i = int(l); i < int(n); i++) #define ll long long #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() template bool chmin(T &a, T b) {if(a > b) {a = b; return true;} return false;} template bool chmax(T &a, T b) {if(a < b) {a = b; return true;} return false;} template using spq = priority_queue, greater>; // bool -> Yes/No string answer(bool b) {return b ? "Yes" : "No";} void fix(int k) {cout << fixed << setprecision(k);} const int inf = 2e9; const long long INF = 2e18; const long double eps = 1e-12; const long double pi = acos(-1); int dx[] = {0, -1, 0, 1, -1, -1, 1, 1}, dy[] = {1, 0, -1, 0, 1, -1, -1, 1}; void main_program() { int n; cin >> n; long a[n]; rep(i, 0, n) cin >> a[i]; multiset s; rep(i, 0, n) s.insert(a[i]); long ans = INF; long type[] = {INF, -INF}; rep(i, 0, n) { s.erase(s.find(a[i])); if(a[i] >= 0) chmin(ans, (*prev(s.end())) * a[i]), chmin(type[0], a[i]); else chmin(ans, (*s.begin()) * a[i]), chmax(type[1], a[i]); s.insert(a[i]); } if(type[0] != INF && type[1] != -INF) { chmin(ans, type[0] * type[1]); } cout << ans << "\n"; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T = 1; cin >> T; while(T--) { main_program(); } }