할 일이 없어진 밍구는 복사 붙여넣기 놀이를 하고 있다! 복사 붙여넣기 놀이는 파일을 복사 붙여넣기하면서 생기는 이름을 살펴보는 놀이이다.
파일의 이름은 0 이상 2w 미만의 정수로 이루어진 길이 1 이상의 수열이다. 한 번의 복사 붙여넣기는 다음 절차로 이루어진다.
복사 과정: 폴더에 있는 모든 파일을 선택한다.
붙여넣기 과정: 각 선택된 파일 S에 대해서 다음을 반복한다. 이때 새로 생성한 파일은 선택되지 않는다.
붙여넣기 과정이 끝난 후, 모든 선택된 파일을 선택 해제한다.
예를 들어, w = 2이고, 폴더에 파일이 [0] 하나만 있을 때 복사 붙여넣기를 반복하면 폴더의 내용물은 다음과 같이 변한다.
복사 붙여넣기 고수 밍구는 여러분에게 다음과 같은 문제를 주었다. 폴더에 파일이 [0] 하나만 있는 상황에서 K번 복사 붙여넣기를 했을 때, 밍구가 주는 파일의 이름 A가 사전 순으로 몇 번째에 위치하는지 구하는 것이다!
밍구를 위해 A가 사전 순으로 위치하는 순서를 998 244 353으로 나눈 나머지를 구해주자!
첫째 줄에 정수 w, K가 공백으로 구분되어 주어진다. (1 ≤ w ≤ 60; 1 ≤ K ≤ 100 000)
둘째 줄에 찾고자 하는 파일의 이름 A의 길이 N이 주어진다. (1 ≤ N ≤ 100 000)
셋째 줄에 A의 i번째 원소 A**i들이 공백으로 구분되어 주어진다. (1 ≤ i ≤ N; 0 ≤ A**i < 2w)
복사 붙여넣기를 K번 했을 때 A의 이름을 가지는 파일이 존재하는 경우만 입력으로 주어진다.
사전순으로 가장 앞서는 파일의 순서를 1이라고 할 때, A가 사전순으로 위치하는 순서를 998 244 353으로 나눈 나머지를 출력한다.
수열 a = [a1, a2, ⋯, a**n]이 수열 b = [b1, b2, ⋯, b**m]보다 사전순으로 앞선다는 것은 다음을 모두 만족시키는 양의 정수 i가 존재한다는 뜻이다.