#include <bits/stdc++.h>
using namespace std;
int a[105];
bool vis[105];
int n,cnt;
bool flag;
void dfs(int w,int l,int l1){
if (flag) return;
if (l1==l) {
flag=1;return;
}
if (l1>l) return;
for(int i=w+1;i<=n;i++){
if (l-l1<a[i]) break;
vis[i]=1;
dfs(i,l,l1+a[i]);
if (flag) return;
vis[i]=0;
}
}
bool ok(int k){
int l=cnt/k;
for(int i=1;i<=k;i++){
int s=1;
while(vis[s]) s++;
vis[s]=1;
flag=0;
dfs(s,l,a[s]);
if (!flag) return false;
}
return true;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++) {
cin>>a[i];
cnt+=a[i];
}
sort(a+1,a+1+n);
for(int i=cnt;i>=1;i--){
if (cnt%i!=0) continue;
if (ok(i)) {
cout<<i<<endl;
return 0;
}
}
return 0;
}