#include<bits/stdc++.h>
using namespace std;
namespace acac
{
int A[110];
int L[110];
int v[110];
bool f;
int ans=0,n;
bool cmp(int x,int y)
{
return x>y;
}
void dfs(int k,int m)
{
if(f)return ;
if(k==n+1)
{
for(int i=1;i<=m;i++)
{
if(L[i]!=ans)return;
}
f=1;
return ;
}
int cnt=0;
for(int i=1;i<=m;i++)
{
if(L[i]!=ans)cnt++;
}
if(cnt>n-k+1)return ;
for(int i=1;i<=m;i++)
{
if(L[i]!=ans&&L[i]+A[n]>ans)return ;
}
for(int i=1;i<=m;i++)
{
if(L[i]+A[k]>ans)continue;
L[i]+=A[k];
dfs(k+1,m);
L[i]-=A[k];
}
for(int i=1;i<=m;i++)
{
if(L[i]!=ans&&L[i]+A[n]>ans)return ;
}
L[m+1]=A[k];
dfs(k+1,m+1);
L[m+1]=0;
return ;
}
int main()
{
cin>>n;
int h=0;
for(int i=1;i<=n;i++)
{
scanf("%d",&A[i]);
ans=max(ans,A[i]);
h+=A[i];
}
sort(A+1,A+n+1,cmp);
while(1)
{
ans++;
f=0;
memset(L,0,sizeof(L));
dfs(1,0);
if(f)break;
}
cout<<ans;
return 0;
}
}
int main()
{
acac::main();
return 0;
}