#include #include #include #include #define rep(i,a,b) for(int i=(a);i<(b);i++) #define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--) #define all(x) begin(x),end(x) #define sz(x) (int)(x).size() using namespace std; using namespace atcoder; using ll=long long; using ld=long double; using vll=vector; using vvll=vector; using vi=vector; using vvi=vector; using pll=pair; using pi=pair; using mint=modint998244353; // using mint=modint1000000007; // using mint2=static_modint<2>; // using BoostPoint=boost::polygon::point_data; // using Voronoi=boost::polygon::voronoi_diagram; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; cin>>N; int lim=1e5+1; vectorq(lim); q[1]=mint(N-2)*mint(N-1).inv(); rep(i,2,lim)q[i]=q[i-1]*q[1]; mint U=0,F=0,W=0,P=0; ll T=0; rep(i,0,N){ string S; int A; cin>>S>>A; T+=A; if(S=="U")U+=mint(1)-q[A]; else if(S=="F")F+=mint(1)-q[A]; else if(S=="W")W+=mint(1)-q[A]; else P++; } cout<<(mint(N-1).pow(T)*U*F*W*P).val()<<'\n'; }