#include<cstdio>
int n;
int w[105];
int dp[105][21000];
int ndp[105][21000];
int mod = 998244353;
int dpbase = 10500;
long long int fct[105];
int main() {
	scanf("%d", &n);
	for (int i = 0; i < n; i++) {
		scanf("%d", &w[i]);
	}
	dp[0][dpbase] = 1;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j <= i; j++) {
			for (int k = dpbase - 100 * i; k <= dpbase + 100 * i; k++) {
				ndp[j][k - w[i]] += dp[j][k];
				ndp[j][k - w[i]] %= mod;
				ndp[j + 1][k + w[i]] += dp[j][k];
				ndp[j + 1][k + w[i]] %= mod;
			}
		}
		for (int j = 0; j <= (i + 1); j++) {
			for (int k = dpbase - 100 * (i + 1); k <= dpbase + 100 * (i + 1); k++) {
				dp[j][k] = ndp[j][k];
				ndp[j][k] = 0;
			}
		}
	}
	fct[0] = 1;
	for (int i = 1; i <= n; i++) {
		fct[i] = fct[i - 1] * i%mod;
	}
	long long int ans = 0;
	for (int i = 0; i <= n; i++) {
		ans += dp[i][dpbase] * fct[i] % mod*fct[n - i] % mod;
		ans %= mod;
	}
	printf("%lld\n", ans);
	return 0;
}

#include<bits/stdc++.h>
typedef unsigned long long ull;
typedef long long ll;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define nep(i,r,l) for(int i=r;i>=l;i--)
void sc(int &x){scanf("%d",&x);}
void sc(int &x,int &y){scanf("%d%d",&x,&y);}
void sc(int &x,int &y,int &z){scanf("%d%d%d",&x,&y,&z);}
void sc(ll &x){scanf("%lld",&x);}
void sc(ll &x,ll &y){scanf("%lld%lld",&x,&y);}
void sc(ll &x,ll &y,ll &z){scanf("%lld%lld%lld",&x,&y,&z);}
void sc(char *x){scanf("%s",x);}
void sc(char *x,char *y){scanf("%s%s",x,y);}
void sc(char *x,char *y,char *z){scanf("%s%s%s",x,y,z);}
void out(int x){printf("%d\n",x);}
void out(ll x){printf("%lld\n",x);}
void out(int x,int y){printf("%d %d\n",x,y);}
void out(ll x,ll y){printf("%lld %lld\n",x,y);}
void out(int x,int y,int z){printf("%d %d %d\n",x,y,z);}
void out(ll x,ll y,ll z){printf("%lld %lld %lld\n",x,y,z);}
using namespace std;
const int N=105,mod=998244353;
int n,a[N],dp[N][N*N];
ll f[N];
int main()
{
    f[0]=1;
    rep(i,1,N-1) f[i]=f[i-1]*i%mod;
    sc(n);
    int sum=0;
    rep(i,1,n) sc(a[i]),sum+=a[i];
    if(sum&1) {out(0);return 0;}
    sum/=2;
    dp[0][0]=1;
    int s=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=i-1;j>=0;j--)
        for(int k=s;k>=0;k--)
        dp[j+1][k+a[i]]=(dp[j+1][k+a[i]]+dp[j][k])%mod;
        s+=a[i];
    }
    ll ans=0;
    for(int i=1;i<=n;i++) ans=(ans+dp[i][sum]*f[i]%mod*f[n-i]%mod)%mod;
    out(ans);
}
