dp[i][j]; // dp[i][j] 表示前i个砝码,能表示j克的重量吗?
// 初始状态: dp[0][0] = 1;
// 转台转移: dp[i][j] = dp[i-1][j] || dp[i-1][a[i]+j] || dp[i-1][abs(a[i]-j)];
表示不放第 i 个砝码,放第 i 个砝码在左边,放第 i 个砝码在右边
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 2e5 + 10;
int a[110], dp[110][N];
int main()
{
int n, sum = 0;
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i], sum += a[i];
dp[0][0] = 1;
for(int i = 1; i <= n; i++)
{
for(int j = 0; j <= sum; j++)
{
dp[i][j] = dp[i-1][j] || dp[i-1][j+a[i]] || dp[i-1][abs(j-a[i])];
}
}
long long ans = 0;
for(int i = 1; i <= sum; i++)
if(dp[n][i]>0) ans++;
cout << ans;
return 0;
}