전 세계에 걸쳐 첩보 조직망을 운영하는 아이리스의 정체는 베일에 싸여 있다. 조직원들은 평범한 학생부터 학계, 금융계, 정치계의 주요 인물까지 널리 퍼져 있으며, 겉보기에는 평범한 글(영업 사원의 감사 편지, 뉴스 머리기사, 입사 시험 문제지 등) 속에 조직의 암호를 숨겨 서로에게 전달한다.
조직원 '백산'은 텍스트에서 비밀번호를 뽑아내는 방법을 전달받았다. 주어진 단어(word)가 텍스트(text) 안에 몇 번 나타나는지, 그리고 각 등장이 어느 자리에서 끝나는지가 비밀번호가 된다. 비밀번호의 첫 번째 수는 등장 횟수이고, 이어지는 수들은 각 등장의 위치이다.
등장의 정의
판정 방법 (그리디)
텍스트를 왼쪽에서 오른쪽으로 한 번 훑는다. 여러 개의 단어를 동시에 만들어 갈 수 있다. 각 문자를 볼 때:
c와 같고, 바로 앞 글자까지 이미 채워 c를 기다리는 미완성 단어가 있으면, 그중 하나를 이 문자로 한 칸 진행시킨다. 그런 미완성 단어가 없으면 이 문자는 버린다.단어 안에서는 (대소문자를 무시했을 때) 같은 글자가 두 번 나오지 않으므로, 텍스트의 각 문자는 많아야 한 종류의 글자에만 대응한다. 이 규칙에 따라, 마지막 문자로 쓸 수 있는 자리가 여러 개면 항상 가장 앞의 자리가 그 등장의 위치가 된다.
입력은 표준 입력으로 받는다. 첫 줄에 테스트 케이스의 개수 T (1≤T≤20)가 주어진다.
각 테스트 케이스는 두 줄로 이루어진다.
단어의 길이는 최대 10, 텍스트의 길이는 최대 200,000이다. 하나의 단어는 텍스트에서 최대 40,000번까지 등장할 수 있다. 대소문자를 구분하지 않았을 때, 같은 문자는 한 단어 안에서 두 번 이상 나오지 않는다.
각 테스트 케이스마다 한 줄을 표준 출력으로 내보낸다. 그 줄의 첫 번째 정수는 단어의 등장 횟수이고, 이어지는 정수들은 각 등장의 위치(그 등장에서 단어의 마지막 문자가 놓인 자리)이다. 위치는 텍스트의 첫 문자를 1로 두고 센다.
등장 횟수가 3회 이상이면 위치는 앞의 3개만 출력한다. 따라서 등장 횟수가 3 이상인 경우 한 줄에 정수 4개가 출력된다. 등장 횟수가 0이면 그 줄에는 0만 출력한다.