접두사 없는 질의
시간 제한2초메모리 제한256 MB
문자열의 부분 문자열 목록이 주어지면, 각 질의마다 접두사가 없는 부분집합의 개수를 m으로 나눈 나머지로 구합니다.
문제
는 다중집합 에서 접두사 없는 집합을 만드는 방법의 수이다. 접두사 없는 집합은 서로 다른 문자열들의 집합이며, 어떤 문자열도 다른 문자열의 접두사가 아니어야 한다. 빈 집합도 유효한 접두사 없는 집합이다. 예를 들어 인 모든 에 대해 가 의 접두사가 아니라면 이다.
여기서 세는 것은 집합 자체가 아니라 만드는 방법이다. 즉, 의 добав 인덱스 부분집합 중 해당 인덱스의 문자열들이 접두사 없는 집합을 이루는 경우의 수를 센다. 예를 들어 ("aa", "aa", "a", "a") 이다. 다섯 가지 방법은 빈 집합, 첫 번째 문자열만 담은 집합, 두 번째 문자열만 담은 집합, 세 번째 문자열만 담은 집합, 네 번째 문자열만 담은 집합이다.
길이가 인 영소문자 문자열 와 개의 질의가 주어진다. 을 부분 문자열 이라 하자. 각 질의 " "에 대해 를 으로 나눈 나머지를 출력하라.
입력
첫 번째 줄에 두 정수 과 가 주어진다 (, ). 두 번째 줄에는 길이 의 문자열 가 주어진다. 이어지는 개의 줄에 각각 " " 형식의 질의가 하나씩 주어진다. 여기서 , , 이다. 모든 질의의 를 합하면 를 넘지 않는다.
출력
각 질의에 대해 를 으로 나눈 나머지를 한 줄에 출력한다.