1 #include <cstdio>
2 #include <iostream>
3 #include <cstring>
4 using namespace std;
5 int n,ans,f[2000],g[1<<17],len[20];
6 void dp(int sum,int x)
7 {
8 if (sum&1) return;
9 memset(f,0,sizeof(f)),f[0]=1;
10 for (int i=0;i<n;i++) if (x&1<<i) for (int j=sum;j>=len[i];j--) if (f[j-len[i]]) f[j]=1;
11 if (f[sum>>1]) g[x]=1;
12 }
13 void dfs(int k,int x1,int sum1,int x2,int sum2)
14 {
15 if (k==n)
16 {
17 if (g[x1]&&g[x2]) ans=max(ans,sum1*sum2/4);
18 return;
19 }
20 dfs(k+1,x1,sum1,x2,sum2),dfs(k+1,x1+(1<<k),sum1+len[k],x2,sum2),dfs(k+1,x1,sum1,x2+(1<<k),sum2+len[k]);
21 }
22 int main()
23 {
24 scanf("%d",&n);
25 for (int i=0;i<n;i++) scanf("%d",&len[i]);
26 for (int i=1;i<=(1<<n)-1;i++)
27 {
28 int sum=0;
29 for (int j=0;j<n;j++) if (i&1<<j) sum+=len[j];
30 dp(sum,i);
31 }
32 dfs(0,0,0,0,0);
33 if (ans) printf("%d",ans); else printf("No Solution");
34 }