단어의 개수

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

알파벳 소문자로 이루어진 문자열 SS가 주어진다. 이 문자열 SS는 매우 길 수 있기 때문에 '압축 문자열'의 형태로 입력이 주어진다. '압축 문자열'은 (c_i,v_i)(c\_i, v\_i) 형태의 순서 쌍이 여러 개 나열된 형태로 표현된다. 주어진 '압축 문자열'을 문자열 SS로 복원하는 과정은 다음과 같다.

  1. 최초의 문자열 SS 는 비어있다.
  2. i=1,2, ,Ni=1, 2, \cdots , N 에 대하여 차례대로 문자열 SS의 맨 뒤에 문자 c_ic\_i를 연속하여 v_iv\_i 개 덧붙인다.

예를 들어, (a,4)(a,4), (b,3)(b,3), (c,2)(c,2), (d,1)(d,1), (a,1)(a,1) 로 주어진 '압축 문자열'을 복원한 문자열 SSS=aaaabbbccdaS=aaaabbbccda 이다.

이때, SS 의 서로 다른 subsequence 의 개수를 구하여라. 값이 매우 클 수 있으니 998244353으로 나눈 나머지를 출력하도록 한다. subsequence XX, YY가 서로 다르다는 것은, XY|X| \ne |Y| 이거나, X=Y|X| = |Y| 이면서 어떤 ii에 대해 X_iY_iX\_i \ne{} Y\_i, 1iX1 \le{} i \le{} |X|가 성립함을 의미한다.

입력

첫째 줄에 문자열 SS 의 압축 문자열의 순서쌍 개수를 의미하는 N(1N1,000,000)N (1 \le N \le 1,000,000) 이 주어진다.

다음 줄부터 NN 줄에 걸쳐 압축 문자열의 ii번째 순서쌍 (c_i,v_i)(c\_i,v\_i) 가 차례대로 주어진다. c_ic\_i 는 알파벳 소문자이고, v_i(1v_i109)v\_i (1 \le v\_i \le 10^9) 는 개수를 의미한다. 또한 1\<i1\<i 일 때, c_i1c_ic\_{i-1} \ne c\_i 이다.

출력

서로 다른 subsequence 의 개수를 998244353으로 나눈 나머지를 출력하라.

힌트

subsequence 란 주어진 문자열의 일부 항을 원래 순서대로 나열하여 얻을 수 있는 문자열을 의미한다.