//

//写得很乱,三个for循环是可以合并的,但是当时忘记改了....时间复杂度O(n),空间复杂度O(1)

//

#include <stdio.h>

#include <iostream>

#include <vector>

#include <deque>

#include <set>

#include <stack>

#include <map>

#include<math.h>

#include<algorithm>

#include<string>

#include <queue>

using namespace std;

int main(){

    int len;

    while(cin>>len){

        vector<long long>num(len,0);

        bool f=false;

        for(int i=0;i<len;i++)

        {    cin>>num[i];

            if(num[i]==0)

                f=true;

            

            

        }

        if(len<3)

            cout<<-1<<endl;

        else{

            long long max1=-99999999;long long max2=-999999999;long long max3=-999999999;

            long long min1=10000000;long long min2=100000000;long long min3=100000000;

            for(int i=0;i<len;i++){

                if(num[i]>max1)

                {   max3=max2;

                    max2=max1;

                    max1=num[i];

                    

                }

                else if(num[i]>max2)

                {

                    max3=max2;

                    max2=num[i];

                }

                else if(num[i]>max3)

                {

                    max3=num[i];

                    

                }

            }  // 遍历一遍求出最大的三个数

            

            for(int i=0;i<len;i++){

                if(num[i]<min1)

                {   min3=min2;

                    min2=min1;

                    min1=num[i];

                    

                }

                else if(num[i]<min2)

                {

                    min3=min2;

                    min2=num[i];

                }

                else if(num[i]<min3)

                {

                    min3=num[i];

                    

                }

            }//遍历一遍,求出最小的三个数

        

            long long res=-999999999;

            res=max(res,min1*min2*min3);

            res=max(res,min1*min2*max1);

            res=max(res,max1*max2*max3);

            res=max(res,max1*max2*min1);//四种情况求最大值

            if(f&&res<0)

                res=0;//考虑是不是有0存在且结果为负数

            cout<<res<<endl;

        }

    }

    

    

    

}