# できることは 0を右に伸ばす と 1を左に伸ばす # 101 なら 101, 111, 100 # 1001: 1001, 1011, 1111, 1000 # 00111 00111, 00011, 00001, 00000, 01111, 11111 # 可逆 どの順でもいい? # 再起関数? """ 0101を考える 0000: o 1 0001: o 2 0010: x 0011: o 3 0100: o 4 0101: o 5 0110: x 0111: o 6 1000: x 1001: x 1010: x 1011: x 1100: o 7 1101: o 8 1110: x 1111: o 9 01 と 01 で分けて,00,01,11の3種 ^2 = 9 001なら000,001,011,111の4種 00011なら6種→文字数+1 """ N = int(input()) A = input() zero_or_one = 0 len_zero_to_one = 0 existence_zero = False existence_one = False end = False answer = 1 """ import random A = "" for i in range(2): if random.random() < 0.5: A += "0" else: A += "1" print(A) """ for i in A: if i == "0": existence_zero = True if i == "1": existence_one = True if not (existence_zero and existence_one): answer = 1 print(answer) end = True if end == False: while A[0] == "1": A = A.pop(0) while A != "" and A[-1] == "0": A = A.pop(-1) if end == False: for i in A: # print(i, zero_or_one, len_zero_to_one, answer) ########### if i == "0" and zero_or_one == 0: len_zero_to_one += 1 elif i == "1" and zero_or_one == 0: zero_or_one = 1 len_zero_to_one += 1 elif i == "1" and zero_or_one == 1: len_zero_to_one += 1 elif i == "0" and zero_or_one == 1: zero_or_one = 0 answer *= len_zero_to_one + 1 answer %= 998244353 len_zero_to_one = 1 # print(i, zero_or_one, len_zero_to_one, answer) ########### answer *= len_zero_to_one + 1 answer %= 998244353 print(answer)