## https://yukicoder.me/problems/no/2899 MOD = 998244353 def main(): N = int(input()) S = input() dp = [0] * (N + 1) dp[N] = 1 for used, s in enumerate(S): new_dp = [0] * (N + 1) if s == "0": for v in range(N + 1): total_num = N - used lower = total_num - v if lower < 0: continue new_dp[v] += (dp[v] * lower) % MOD new_dp[v] %= MOD x = 0 for v in reversed(range(N + 1)): new_dp[v] += x new_dp[v] %= MOD x += dp[v] x %= MOD else: for v in range(1, N + 1): new_dp[v - 1] += (dp[v] * v) % MOD new_dp[v - 1] %= MOD dp = new_dp answer = 0 for i in range(N + 1): answer += dp[i] answer %= MOD print(answer) if __name__ == "__main__": main()