#include<bits/stdc++.h>
#define ll long long
#define reg register
#define mp make_pair
#define ri register int
#define ld long double
using namespace std;
const int mxn=2e5+5;
vector<int>g[mxn];
int n,m;
int a[mxn];
int dp[111][5555][111];//i sum cnt
const ll md=998244353;
ll frac[mxn];
inline void solve(){
	cin>>n;
	for(int i=1;i<=n;++i)cin>>a[i],m=m+a[i];
	if(m%2==1){
		cout<<0<<'\n';
		return;
	}
	m=m/2;
	frac[0]=1;
	for(int i=1;i<=n;++i)frac[i]=(frac[i-1]*i)%md;
	dp[1][0][0]=1;
	for(int i=1;i<=n;++i){
		for(int j=0;j<=m;++j){
			for(int k=0;k<=i;++k){
				if(dp[i][j][k])(dp[i+1][j+a[i]][k+1]+=dp[i][j][k])%=md;
				(dp[i+1][j][k]+=dp[i][j][k])%=md;			
			}
		}
	}
	ll ans=0;
	for(int k=1;k<n;++k){
		if(dp[n+1][m][k]){
			ans=ans+dp[n+1][m][k]%md*frac[k]%md*frac[n-k]%md;
			ans%=md;
		}
	}
	cout<<ans<<'\n';
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	int T=1;//cin>>T;
	for(;T--;)solve();
}
#include<bits/stdc++.h>
using namespace std;
#define debug(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)
typedef long long int ll;
typedef long double ld;
typedef pair<ll,ll> p2;
#define sz(a) ll(a.size())
char s[5005][5005];
ll dp[5005][5005][3],r[5005][5005],c[5005][5005],p[100005],hell=998244353;
map<char,ll> st;
void solve(){
	ll n,m,k;
	cin>>n>>m>>k;
	for(ll i=1;i<=n;i++)
		for(ll j=1;j<=m;j++)
			s[i][j]='0';
	for(ll i=0;i<k;i++){
		ll x,y;
		char c;
		cin>>x>>y>>c;
		s[x][y]=c;
	}
	for(ll i=1;i<=n;i++)
		for(ll j=1;j<=m;j++)
			if(s[i][j]=='0')
				r[i][j]=c[i][j]=1;
	for(ll i=1;i<=n;i++)
		for(ll j=1;j<=m;j++)
			r[i][j]+=r[i][j-1];
	for(ll j=1;j<=m;j++)
		for(ll i=1;i<=n;i++)
			c[i][j]+=c[i-1][j];
	st['R']=0;st['D']=1,st['X']=2;
	if(s[1][1]=='0')
		for(ll k=0;k<3;k++)
			dp[1][1][k]=1;
	else
		dp[1][1][st[s[1][1]]]=1;
	for(ll i=1;i<=n;i++){
		for(ll j=1;j<=m;j++){
			if(i==1&&j==1)
				continue;
			ll val=0,sum=0;
			sum=(dp[i-1][j][1]+dp[i-1][j][2])%hell;
			sum=(sum*(p[r[i-1][m]-r[i-1][j]]))%hell;
			val=(val+sum)%hell;
			sum=(dp[i][j-1][0]+dp[i][j-1][2])%hell;
			sum=(sum*(p[c[n][j-1]-c[i][j-1]]))%hell;
			val=(val+sum)%hell;
			if(s[i][j]=='0')
				for(ll k=0;k<3;k++)
					dp[i][j][k]=val;
			else
				dp[i][j][st[s[i][j]]]=val;
			/*for(ll k=0;k<3;k++)
				cout<<i<<" "<<j<<" "<<k<<" "<<dp[i][j][k]<<endl;*/
		}
	}
	ll res=0;
	for(ll k=0;k<3;k++)
		res=(res+dp[n][m][k])%hell;
	cout<<res;
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    #ifndef ONLINE_JUDGE
    freopen("input.txt", "r" , stdin);
    freopen("output.txt", "w", stdout);
    #endif
    clock_t z=clock();
    ll qc=1;
    //cin>>qc;
    p[0]=1;
    for(ll i=1;i<100005;i++)
    	p[i]=(3*p[i-1])%hell;
    for(ll i=1;i<=qc;i++){
    	//cout<<"Case #"<<i<<": ";
        solve();
    }
    debug("Total Time:%.4Lf\n",(ld)(clock()-z)/CLOCKS_PER_SEC);
}