#include <bits/stdc++.h>
using namespace std;

int n;
int a[200001];
int dp1[200001]={0},dp2[200001]={0};

int main() {
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    if(a[0]>=0) dp1[0]=a[0];
    else dp2[0]=a[0];
    for(int i=1;i<n;i++)//分别记录前i项正数最大值和负数最小值
    {
        if(a[i]>=0)
        {
            dp1[i]=max(dp1[i-1]*a[i],a[i]);
            dp2[i]=min(dp2[i-1]*a[i],a[i]);
        }
        else
        {
            dp1[i]=dp2[i-1]*a[i];
            dp2[i]=min(dp1[i-1]*a[i],a[i]);
        }
    }
    int max=-100;
    if(n!=1)//大于1的长度中一定存在非负解
    {
        for(int i=0;i<n;i++)
        {
            if(dp1[i]>max) max=dp1[i];
        }
        cout<<max<<endl;
    }
    if(n==1) cout<<a[0]<<endl;//只有一个数时分开讨论
}