#include int memo[101][5001],done[101][5001]; int N,W[100],s; int max(int a,int b){ if(a>b){return a;}else{return b;} } int dp(int a,int b){ if(done[a][b] == 1){return memo[a][b];} memo[a][b] = 0; if(b+W[a]<=s){ memo[a][b] = dp(a+1,b+W[a]); } memo[a][b] = max(memo[a][b],dp(a+1,b)); done[a][b] = 1; return memo[a][b]; } int main(void){ int i,j; scanf("%d",&N); s = 0; for(i=0;i