谢谢谢谢谢谢谢谢谢谢
#include<bits/stdc++.h>
//#include<graphics.h>
//#define fo(1,j,k) for(int i=j;i<=k;i++)
using namespace std;
/*
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<='0'||ch>'9'){
if(ch=='-') w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
*/
int n,sum,mn=65,mx,d;
int len[66],a[66],pre[66];
int ans=999999;
void dfs(int u,int k,int p){
if(u==0){
dfs(d,k-1,a[n]);
return;
}
if(k==0){
cout<<d;
exit(0);
}
p=min(p,u);
while(p){
if(len[p]){
--len[p];
dfs(u-p,k,p);
++len[p];
if((u==p) || (u==d)) return;
p=pre[p];
}else p=pre[p];
}
}
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
//std::ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
len[a[i]]++;
}
ans=sum;
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
if(a[i]!=a[i-1]) pre[a[i]]=a[i-1];
}
for(d=a[n];(d<<1)<=sum;++d) if((sum%d)==0) dfs(d,sum/d,a[n]);
cout<<sum;
return 0;
}