#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
vector<int> pos;
vector<int> neg;
int zeros = 0;
int posPtr = 0, negPtr = 0, posSize, negSize, N, i, tmp;
long long answer = 0;
cin >> N;
for (i = 0; i < N; i++) {
cin >> tmp;
if (tmp > 0) pos.push_back(tmp);
else if (tmp == 0) zeros++;
else neg.push_back(tmp);
}
// 절댓값의 내림차순으로 각각 정렬
sort(pos.begin(), pos.end(), greater<int>());
sort(neg.begin(), neg.end());
posSize = pos.size();
negSize = neg.size();
// 1이 나오기 전까지, 그리고 두 개씩 묶을 수 있을 때까지
while (posPtr + 1 < posSize && pos[posPtr] != 1 && pos[posPtr + 1] != 1) {
answer += pos[posPtr] * pos[posPtr + 1];
posPtr += 2;
}
// 두 개씩 묶을 수 있을 때까지
while (negPtr + 1 < negSize) {
answer += neg[negPtr] * neg[negPtr + 1];
negPtr += 2;
}
// 남는 음수가 있는데 그거랑 곱해줄 0이 없는 경우 음수 더해주기
if (negSize % 2 == 1 && zeros == 0) answer += neg[negSize - 1];
// 남는 양수는 싹 다 더해줌
while (posPtr < posSize) {
answer += pos[posPtr];
posPtr++;
}
cout << answer << endl;
return 0;
}