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
#include<bits/stdc++.h>
using namespace std;
#define rep(a, b) for(int a = 0; a < (b); ++a)
const int LIM=5e3+7, MOD=1e9+7;
int dp[LIM], T[LIM];
int main() {
	ios_base::sync_with_stdio(0); cin.tie(0);
	int n;
	cin >> n;
	rep(i, n) cin >> T[i];
	sort(T, T+n);
	dp[0]=1;
	rep(i, n) {
		dp[5001]*=2;
		if(dp[5001]>=MOD) dp[5001]-=MOD;
		for(int j=5000; j>=T[i]-1; --j) {
			dp[min(j+T[i], 5001)]+=dp[j];
			if(dp[min(j+T[i], 5001)]>=MOD) dp[min(j+T[i], 5001)]-=MOD;
		}
	}
	long long ans=0;
	rep(i, 5001) {
		ans+=dp[i+1];
		if(ans>=MOD) ans-=MOD;
	}
	cout << ans;
}