#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000000 #define Inf64 4000000000000000001 int M = 999630629; int main() { int n; cin>>n; vector a(n); int S = 0; rep(i,n){ cin>>a[i]; S += a[i]; } mint ans; if(S < M){ ans = S; ans /= 2; ans *= mint(2).pow(n); } else{ queue> Q; rep(i,n){ int t = 10000 - a[i]; vector x(t+1,0); x[0] = 1; x.back() = 1; Q.push(x); } while(Q.size()>=2){ auto x = Q.front(); Q.pop(); auto y = Q.front(); Q.pop(); Q.push(convolution(x,y)); } rep(i,Q.front().size()){ int D = 1000000000 - i; D %= M; ans += Q.front()[i] * D; } } cout<