```cpp
#include<bits/stdc++.h>
using namespace std;
int n,a[65],cnt=0,len=0,minn=0,sum=0,visit[65];
bool cmp(int x,int y){
return x>y;
}
bool dfs(int ok,int now,int k){
if(ok>cnt) return true;
if(now==len) return dfs(ok+1,0,1);
int rongyu=-1;
for(int i=k;i<=n;i++){
if(now+a[i]<=len&&visit[i]==0&&rongyu!=a[i]){
visit[i]=1;
if(dfs(ok,now+a[i],i+1)==true) return true;
rongyu=a[i];
visit[i]=0;
if(now+a[i]==len) break;
if(now==0) break;
}
}
return false;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
sum+=a[i];
minn=max(minn,a[i]);
}
sort(a+1,a+n+1,cmp);
for(len=minn;len<=sum/2;len++){
if(sum%len!=0){
continue;
}
cnt=sum/len;
if(dfs(1,0,1)==true){
cout<<len;
return 0;
}
}
cout<<sum;
return 0;
}
```
by EXC_X @ 2022-07-16 08:11:08