#include<stdio.h>
#include<string.h>
long long max(long long a,long long b)
{
return a>b?a:b;
}
long long min(long long c,long long d)
{
return c<d?c:d;
}
int main()
{
int n;
int sum=-9999999;
while(scanf("%d",&n)!=EOF)
{
long long dp1[200001];
long long dp2[200001];
long long ret[200001];
for(int i=1;i<=n;i++)
{
scanf("%lld",&ret[i]);
}
dp1[0]=1;
dp2[0]=1;
for(int i=1;i<=n;i++)
{
dp1[i]=max(dp1[i-1]*ret[i],max(ret[i],dp2[i-1]*ret[i]));
dp2[i]=min(dp2[i-1]*ret[i],min(ret[i],dp1[i-1]*ret[i]));
sum=max(sum,dp1[i]);
}
printf("%d",sum);
}
return 0;
}
#include<string.h>
long long max(long long a,long long b)
{
return a>b?a:b;
}
long long min(long long c,long long d)
{
return c<d?c:d;
}
int main()
{
int n;
int sum=-9999999;
while(scanf("%d",&n)!=EOF)
{
long long dp1[200001];
long long dp2[200001];
long long ret[200001];
for(int i=1;i<=n;i++)
{
scanf("%lld",&ret[i]);
}
dp1[0]=1;
dp2[0]=1;
for(int i=1;i<=n;i++)
{
dp1[i]=max(dp1[i-1]*ret[i],max(ret[i],dp2[i-1]*ret[i]));
dp2[i]=min(dp2[i-1]*ret[i],min(ret[i],dp1[i-1]*ret[i]));
sum=max(sum,dp1[i]);
}
printf("%d",sum);
}
return 0;
}