#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int num=1,t;
int N,stick[100],usable[100],ans;
bool dfs(int snum,int len){
if(snum==0) return 1;
for(int i=1;i<=N;i++){
if(len-stick[i]>0) dfs(snum-1,len);
else
dfs(snum-1,len-stick[i]);
}
}
int main(){
cin>>N;
for(int i=1;i<=N;i++){
cin>>stick[i];
ans+=stick[i];
}
for(int factor=1;factor<=sqrt(ans);factor++){
if(ans%factor==0){
t=ans/factor;
usable[num]=factor;
num++;
usable[num]=t;
num++;
}
}
for(int j=1;j++;j<=num;j++){
dfs(N,usable[j]);
}
return 0;
}
#include <cstdio>
#include <cmath>
using namespace std;
int num=1,t;
int N,stick[100],usable[100],ans;
bool dfs(int snum,int len){
if(snum==0) return 1;
for(int i=1;i<=N;i++){
if(len-stick[i]>0) dfs(snum-1,len);
else
dfs(snum-1,len-stick[i]);
}
}
int main(){
cin>>N;
for(int i=1;i<=N;i++){
cin>>stick[i];
ans+=stick[i];
}
for(int factor=1;factor<=sqrt(ans);factor++){
if(ans%factor==0){
t=ans/factor;
usable[num]=factor;
num++;
usable[num]=t;
num++;
}
}
for(int j=1;j++;j<=num;j++){
dfs(N,usable[j]);
}
return 0;
}