#include<stdio.h>
int main()
 {
    int n;
    long long arr[1000000];//定义一个足够大的数组
    scanf("%d",&n);
    getchar();
    for(int i=0;i<n;i++)
    {
        scanf("%lld ",&arr[i]);
    }

    for(int i=0;i<n;i++)//冒泡排序,外层循环排序的次数
    {
        for(int j=0;j<n-i-1;j++)//比较的次数
        {
           if(arr[j]>arr[j+1])
           {
                int temp=arr[j];
                arr[j]=arr[j+1];
                arr[j+1]=temp;
           }
        }
    }
    long long ji=0;
     if(arr[0]<0&&arr[1]<0)//两种情况:比较最小的两个的乘积与第三大的数与第二大数的乘积比较大小
     {
       long long a=arr[0]*arr[1];
        long long b=arr[n-3]*arr[n-2];
        ji=a>b?a:b;
     }
     else 
     {
        ji=arr[n-3]*arr[n-2];
     }
   
   printf("%lld\n",arr[n-1]*ji);

}