#9回コールド勝ちなので #9回ウラの得点は0でないといけない? mod = 998244353 N = int(input()) A = list(map(str,input().split())) B = list(map(str,input().split())) C = [] for i,v in enumerate(B): if v[-1] == "X": tmp2 = ["X"] for j in range(len(v)-1): tmp2.append(v[j]) C.append(["".join(tmp2),A[i]]) else: C.append([B[i],A[i]]) C.sort() #print(C) dp = [] for i in range(N+1): dp.append([]) for j in range(10): dp[i].append([]) for k in range(5): dp[i][j].append([0]*34) dp[0][0][0][0] = 1 #i番目まで見た #j個選んで #表がk点で裏がkk点の場合の数 ans = 0 for i in range(N): tmpa = int(C[i][1]) flg = False if C[i][0][0] == "X": if len(C[i][0]) == 1: tmpb = 0 else: tmpb = int(C[i][0][1:]) flg = True else: tmpb = int(C[i][0]) for j in range(9): for k in range(5): for kk in range(34): if dp[i][j][k][kk] != 0: dp[i+1][j][k][kk] += dp[i][j][k][kk] dp[i+1][j][k][kk] %= mod if j <= 7 and not flg: if k+tmpa <= 4 and kk + tmpb <= 33: dp[i+1][j+1][k+tmpa][kk+tmpb] += dp[i][j][k][kk] dp[i+1][j+1][k+tmpa][kk+tmpb] %= mod elif j == 8 and flg: if k+tmpa == 4 and kk + tmpb == 33 and tmpb == 0: ans += dp[i][j][k][kk] ans %= mod print(ans)