/* N=1000のとき 異なる2つを選ぶ方法は499*500通り */ #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const int inf=1<<30; const ll INF=1LL<<62; typedef pair P; typedef pair PP; const ll MOD=998244353; int main(){ int N; cin>>N; ll totA=0; vector A(N); for(int i=0;i>A[i]; totA+=A[i]; } int K=5000; if(N<=20){ K=5000*N; }else if(N<=200){ K=5000*10; }else{ //N>200 K=5000*2; } vector> dp(N+1,vector(K+1,0)); dp[0][0]=1;//[0,i),和が0 for(int i=0;i0){ dp[i+1][j]+=dp[i][j]; if(j+A[i]<=K){ dp[i+1][j+A[i]]+=dp[i][j]; } } } } int t=-1; for(int j=1;j<=min(1LL*K,totA/2-1);j++){ if(dp[N][j]>=2){ cout<