//Autor: Bartłomiej Czarkowski
#include <bits/stdc++.h>
#pragma GCC optimize "O3"

using namespace std;

#define M 1010

int n, m, ost, ostn;
int t[M];
long long odp, w=1, wn=1;

long long ilo(int a)
{
	while(ost>=a)
	{
		w=w*ost%998244353;
		--ost;
	}
	return w;
}

long long ilon(int a)
{
	while(ostn>=a)
	{
		wn=wn*ostn%998244353;
		--ostn;
	}
	return wn;
}

long long rev(long long a)
{
	long long ret=1, b=998244353-2;
	while(b)
	{
		if(b&1) ret=ret*a%998244353;
		a=a*a%998244353;
		b>>=1;
	}
	return ret;
}

long long f(long long a)
{
	return (long long)n*(998244353-2)%998244353*rev(n-1)%998244353*(ilo(2*n-a)*rev(ilon(n-a+1))%998244353-1+998244353)%998244353;
}

int main()
{
	scanf("%d", &m);
	for(int i=1; i<=m; ++i)
	{
		scanf("%d", &t[i]);
		n+=t[i];
	}
	ost=2*n-1;
	ostn=n;
	sort(t+1, t+1+m);
	for(int i=1; i<=m; ++i) odp=(odp+f(t[i]))%998244353;
	odp=odp+998244353-f(n);
	odp%=998244353;
	printf("%lld\n", odp);
	return 0;
}
