#include <bits/stdc++.h>
//qwerty47924692
using namespace std;
using ll = int;
const ll N=250000+3;
const ll mod=1e9+7;
const string br="617283";
ll n,tot,a[505],nxt[N],sz,s,cnt[N];
ll dp[N];
vector<ll>pos[N];
void solve(ll i,ll sum){
    ll prv=0;
    for(ll w=a[i];w<=tot;w++){
        dp[w]-=dp[w-a[i]];
    }
    for(ll x=1;x<=250000;x++){
        ll need=(sum+x)>>1;
//        if(x==1){
//            cout<<need<<' ';
//            return ;
//        }
        if(((sum+x+1)&1) && dp[need]){
           // cout<<x<<' '<<(dp[need/2])<<'\n';
            cnt[x]++;
            if(cnt[x]==n)sz++;
            continue;
        }
    }
    for(ll w=tot;w>=a[i];w--){
        dp[w]+=dp[w-a[i]];
    }
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin>>n;
    for(ll i=1;i<=n;i++){
        cin>>a[i];
        tot+=a[i];
    }
    dp[0]=1;
    for(ll i=1;i<=n;i++){
        for(ll w=tot;w>=a[i];w--){
            dp[w]+=dp[w-a[i]];
        }
    }
    if(!dp[tot/2]||tot&1){
        cout<<0;
        return 0;
    }
    for(ll i=1;i<=n;i++){
        solve(i,tot-a[i]);
//        return 0;
//        cout<<'\n';
    }
    cout<<sz<<'\n';
    for(ll x=1;x<=250000;x++){
        if(cnt[x]==n)cout<<x<<' ';
    }
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |