#include<bits/stdc++.h>
#define ALL(x) x.begin(),x.end()
using namespace std;
int n,cnt[51],sum,minval=0x3f3f3f3f,maxval;
vector<int>vec;
bool dfs(int left,int curleft,int ans,int last){
if(!left)
return!(curleft^ans);
for(int i=min(maxval,curleft),t;i>=max(minval,last+1);i--){
if(cnt[i]){
cnt[i]--;
t=dfs(left-1,(curleft^i)?curleft-i:ans,ans,(curleft^i)?0:i);
if(t)
return 1;
cnt[i]++;
}
}
return 0;
}
int main(){
ios::sync_with_stdio(0);
cin>>n;
for(int i=1,j;i<=n;i++){
cin>>j;
cnt[j]++,sum+=j,minval=min(minval,j),maxval=max(maxval,j);
}
for(int i=maxval;i*i<=sum;i++){
if(sum%i)
continue;
vec.push_back(i);
}
for(int i=1;i*i<sum;i++){
if(sum%i)
continue;
vec.push_back(sum/i);
}
sort(ALL(vec));
vec.pop_back();
for(auto p:vec)
if(dfs(n,p,p,minval-1)){
cout<<p;
return 0;
}
cout<<sum;
return 0;
}