#include<bits/stdc++.h>
#define f1(i, n) for(ll i=1;i<=n;++i)
#define f0(i, n) for(ll i=0;i<n;++i)
#define ull unsigned long long
#define ll long long
#define rev(a) reverse(a.begin(),a.end())
#define all(x) x.begin(),x.end()
#define so(A, n) sort(A+1, A+n+1)
using namespace std;
const int maxn = 200010;
const int N = 2e5 + 5;
vector<int> am, duong, zero;
ll A[N];
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n;
cin >> n;
f1(i, n) {
cin >> A[i];
if (A[i] < 0) am.push_back(A[i]);
else if (A[i] == 0) zero.push_back(A[i]);
else duong.push_back(A[i]);
}
ll sum = 0;
sort(all(am), greater<int>());
sort(all(duong));
for (int i = 1; i <= 3; ++i) {
ll a;
if (am.size() < 2) {
if (duong.size() >= 3) {
sum += duong[duong.size() - 1] * duong[duong.size() - 2] * duong[duong.size() - 3];
duong.pop_back(); duong.pop_back(); duong.pop_back();
}
else if (zero.size() >= 3) {
sum += 0;
zero.pop_back(); zero.pop_back(); zero.pop_back();
}
continue;
}
if (am.size() >= 2 && duong.size() >= 1) {
a = am[am.size() - 1] * am[am.size() - 2] * duong[duong.size() - 1];
if (duong.size() >= 3) {
if (a >= duong[duong.size() - 1] * duong[duong.size() - 2] * duong[duong.size() - 3]) {
sum += a;
am.pop_back(); am.pop_back();
duong.pop_back();
}
else {
sum += duong[duong.size() - 1] * duong[duong.size() - 2] * duong[duong.size() - 3];
duong.pop_back(); duong.pop_back(); duong.pop_back();
}
}
else {
sum += a;
am.pop_back(); am.pop_back();
duong.pop_back();
}
}
else if (am.size() == 1) {
if (zero.size() >= 2) {
sum += 0;
zero.pop_back(); zero.pop_back();
}
}
}
cout << sum;
return 0;
}