1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <bits/stdc++.h>

using namespace std;

int n, mod=1e9+7, odp;
int t[5001];
int dp[5001];

int main()
{
	scanf("%d", &n);
	for(int i=1; i<=n; ++i)
	{
		scanf("%d", &t[i]);
	}
	sort(t+1, t+1+n);
	dp[0]=1;
	for(int i=1; i<=n; ++i)
	{
		for(int j=5000; j>=t[i]-1; --j)
		{
			dp[min(5000, j+t[i])]+=dp[j];
			if(dp[min(5000, j+t[i])]>=mod) dp[min(5000, j+t[i])]-=mod;
		}
	}
	for(int i=1; i<=5000; ++i)
	{
		odp+=dp[i];
		if(odp>=mod) odp-=mod;
	}
	printf("%d\n", odp);
	return 0;
}