#include <bits/stdc++.h>
using namespace std;
bool isCompleted=false;
struct stick{
int l;
bool ic;
stick(){
l=0;
ic=0;
}
};
stick s[66];
int cn=0,tn=0,aim=0;
void out(){
for(int i=0;i<tn;i++){
cout<<s[i].l<<' '<<s[i].ic<<" | ";
}
cout<<endl;
cout<<"aim:"<<aim<<endl;
}
void dfs(int completed){
if(isCompleted)return;
int left;
int le;
bool flag;
if(completed==aim)completed=0;
left=aim-completed;
if(cn==tn&&completed==0&&!isCompleted){
cout<<aim<<endl;
isCompleted=true;
return;
}
for(int i=0;s[i].l!=0&&i<tn;i++){
le=s[i].l;
while(s[i].ic==1)i++;
if(s[i].l!=le){
i--;
continue;
}
if(s[i].ic==1||s[i].l>left)continue;
le=s[i].l;
s[i].ic=true;
cn++;
dfs(completed+le);
s[i].ic=false;
cn--;
if(isCompleted)return;
while(s[i+1].l==le)i++;
}
}
bool cmp(stick a,stick b){
return a.l>b.l;
}
int main(){
cin>>tn;
int total=0;
for(int i=0;i<tn;i++){
cin>>s[i].l;
total+=s[i].l;
}
sort(s,s+tn,cmp);
for(aim=s[0].l;aim<total/2+1;aim++){
if(total%aim==0){
dfs(0);
}
}
if(!isCompleted)
cout<<total<<endl;
return 0;
}