#include<bits/stdc++.h>
using namespace std;
#define int long long
#define double long double
#define endl '\n'
#define pii pair<int, int>
#define MAXN 45
#define mod 10007
struct triangle {
int a, b, c;
double S;
};
triangle dp[MAXN];
int l[MAXN];
int ans = 0;
double Helen(int a, int b, int c) {
double p = (a + b + c) / 2;
double S = sqrt(p * (p - a) * (p - b) * (p - c));
return S;
}
int Ahelen(int a, int b, int c) {
return Helen(a, b, c) * 100;
}
void dfs(int i, int a, int b, int c) {
if(i == 0) {
if(a == 0 || b == 0 || c == 0 || a + b < c || b + c < a || a + c < b)
return ;
ans = max(ans, Ahelen(a, b, c));
return ;
}
dfs(i - 1, a + l[i], b, c);
dfs(i - 1, a, b + l[i], c);
dfs(i - 1, a, b, c + l[i]);
}
signed main() {
int N;
cin >> N;
for(int i = 1; i <= N; i++) {
cin >> l[i];
}
dp[0] = {0, 0, 0, 0};
for(int i = 1; i <= N; i++) {
dp[i] = dp[i - 1];
int A = Ahelen(dp[i - 1].a + l[i], dp[i - 1].b, dp[i - 1].c);
int B = Ahelen(dp[i - 1].a, dp[i - 1].b + l[i], dp[i - 1].c);
int C = Ahelen(dp[i - 1].a, dp[i - 1].b, dp[i - 1].c + l[i]);
if(A >= B && A >= C) {
dp[i].S = A;
dp[i].a += l[i];
} else if(B >= A && B >= C) {
dp[i].S = B;
dp[i].b += l[i];
} else if(C >= A && C >= B) {
dp[i].S = C;
dp[i].c += l[i];
}
}
cout << dp[N].S;
return 0;
}