''' ある区間を考える その区間の?を除いた数の合計のmod3が ①0のとき ?の数=kとする すると?の数の合計はk桁の数分とれる (k=3なら0~999) 当然3の倍数のが1個多くとれるので (10 ** k - 1) / 3 + 1 ②1,2のとき (10 ** k - 1) / 3 なので区間の中にある?の数分の10の累乗と10**-1の1の累乗がわかればいい 区間の中の?以外の数の和のmod3==0のときの区間の数を足せばいい(①の最後の+1の部分) ''' mod = 998244353 N = int(input()) S = input() a = [0] for s in S: if s == '?': a.append(a[-1] + 1) else: a.append(a[-1]) A = [] for i in range(N + 1): A.append(pow(10, a[i], mod)) acc = 0 ans = 0 for i in range(N + 1): ans += A[i] * acc acc += pow(A[i], mod - 2, mod) ans %= mod ans -= (N + 1) * N // 2 ans %= mod ans *= pow(3, mod - 2, mod) ans %= mod mod3 = [0 for _ in range(3)] mod3[0] += 1 res = 0 for s in S: if s == '?': x = 0 else: x = int(s) res += x mod3[res % 3] += 1 for x in mod3: ans += x * (x - 1) // 2 ans %= mod print(ans)