悬关
#include<bits/stdc++.h>
using namespace std;
int n,a[70],sum,s[70],f,sk;
inline int read() {
register int x = 0,f = 1;register char ch;
ch = getchar();
while(ch > '9' || ch < '0'){if(ch == '-') f = -f;ch = getchar();}
while(ch <= '9' && ch >= '0'){x = x * 10 + ch - 48;ch = getchar();}
return x * f;
}
inline bool pd(int t,int k){
if(t>n){
for(int i=1;i<k;i++)if(s[i]!=s[i+1])return 0;
return 1;
}
int ans=0;
for(int i=1;i<=k;i++){
if(s[i]+a[t]<=sk){
s[i]+=a[t];
bool p=pd(t+1,k);
ans=ans||p;
f=ans;
s[i]-=a[t];
}
}
return ans;
}
bool cmp(int a,int b){
return a>b;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
sum+=a[i]=read();
}
sort(a+1,a+n+1,cmp);
int l=1,r=n;
while(l<r){
f=0;
memset(s,0,sizeof(s));
int mid=l+r+1>>1;
sk=sum/mid;
if(sum%mid==0&&pd(1,mid)){
l=mid;
}else{
r=mid-1;
}
}
cout<<sum/l;
}