#include<stdio.h>
int max1(int x,int y)
{
if(x>y)
return x;
else
return y;
}
int max(int a,int b,int c)
{
int t;
t=max1(a,max1(b,c));
return c;
}
int main()
{
int n,i,j,k,a[500],sum,len,l,ans=0;
while(~scanf("%d",&n))
{
for(i=0; i<n; i++)
scanf("%d",&a[i]);
//利用冒泡法先让n根棍子从小到大排序
for(i=0; i<n-1; i++)
for(j=0; j<n-1-i; j++)
if(a[j]>a[j+1])
{
int t;
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
int t=0;
for(i=0; i<n; i++)
for(j=i+1; j<n; j++)
for(k=j+1; k<n; k++)//让i<j<k,这样棍子就不会重复选中
{
sum=a[i]+a[j]+a[k];//周长
len = max(a[i],a[j],a[k]);//三边中的最长的
l=sum-len;//剩余的两边
if(l>len)//判断是否能够组成三角形
ans=max1(ans,sum);//利用函数将周长最长的赋值给ans
}
printf("%d\n",ans);
}
return 0;
}