#include <climits>
class Solution {
public:
    long long solve(vector<int>& A) {
       //维护三个大的元素,两个小的元素
        int max1  = INT_MIN, max2 = INT_MIN, max3 = INT_MIN;
        int min1 = INT_MAX,min2 = INT_MAX;
        for(int i = 0; i < A.size(); i++){
            int temp = A[i];
            if(temp > max1){
                max3 = max2;
                max2 = max1;
                max1 = temp;
            }
            else if(max2 <temp ){
                max3 = max2;
                max2 =temp;
            }
            else if(max3 < temp) max3 = temp;

            if(temp < min1){
                min2 = min1;
                min1 = temp;
            }
            else if(temp < min2) min2 = temp;
        }
        long ans = (long) max1 * (long)max2 * (long)max3;
        long ans2 = (long)max1 * (long) min1 *(long)min2;
    
        return max(ans, ans2);
       
    }
};
//看懂别人解析后写的