#include<iostream>
#include<vector>
using namespace std;
#define MAX 10000
inline long long max(long long a,long long b){return a>b?a:b;}
inline long long min(long long a,long long b){return a>b?b:a;}
int main()
{
vector<int> data;
int number,n;
long long pMax[3][MAX]={0};
long long pMin[3][MAX]={0};
cin >> n;
for(int i=0;i<n;i++)
{
cin>>number;
data.push_back(number);
}
int size = data.size();
for(int i=0;i<3;i++)
{
for(int j=0;j<size;j++)
{
if(i==0)
pMax[i][j]=pMin[i][j]=data[j];
else
{
for(int k=j-1;k>=0;k--)
{
pMax[i][j]=max(pMax[i][j],max(pMax[i-1][k]*data[j],pMin[i-1][k]*data[j]));
pMin[i][j]=min(pMin[i][j],min(pMax[i-1][k]*data[j],pMin[i-1][k]*data[j]));
}
}
}
}
long long res = 0;
for(int i=0;i<size;i++)
res = max(res,pMax[2][i]);
cout << res<<endl;
return 0;
}