아이리스 (비밀번호)

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

문제

전 세계에 걸쳐 첩보 조직망을 운영하는 아이리스의 정체는 베일에 싸여 있다. 조직원들은 평범한 학생부터 학계, 금융계, 정치계의 주요 인물까지 널리 퍼져 있으며, 겉보기에는 평범한 글(영업 사원의 감사 편지, 뉴스 머리기사, 입사 시험 문제지 등) 속에 조직의 암호를 숨겨 서로에게 전달한다.

조직원 '백산'은 텍스트에서 비밀번호를 뽑아내는 방법을 전달받았다. 주어진 단어(word)가 텍스트(text) 안에 몇 번 나타나는지, 그리고 각 등장이 어느 자리에서 끝나는지가 비밀번호가 된다. 비밀번호의 첫 번째 수는 등장 횟수이고, 이어지는 수들은 각 등장의 위치이다.

등장의 정의

  • 단어의 문자들이 텍스트 안에서 왼쪽에서 오른쪽 순서대로 나타나면 한 번 등장한 것으로 센다. 문자들이 서로 붙어 있을 필요는 없고(중간에 다른 문자가 있어도 된다), 순서만 지키면 된다.
  • 대소문자는 구분하지 않는다.
  • 한 등장의 위치는 그 등장에서 단어의 마지막 문자가 놓인 자리로 나타낸다. 자리는 텍스트의 첫 문자를 1로 두고 세며, 공백도 한 자리로 센다.
  • 서로 다른 등장은 텍스트의 같은 문자를 두 번 쓸 수 없다. 즉 각 등장은 서로 겹치지 않는 문자들로 이루어진다. 이런 등장을 최대한 많이 만들 때의 개수가 등장 횟수이다.

판정 방법 (그리디)

텍스트를 왼쪽에서 오른쪽으로 한 번 훑는다. 여러 개의 단어를 동시에 만들어 갈 수 있다. 각 문자를 볼 때:

  • 그 문자가 단어의 첫 글자와 같으면, 새 단어 만들기를 하나 시작한다.
  • 그 문자가 단어의 어떤 글자 c와 같고, 바로 앞 글자까지 이미 채워 c를 기다리는 미완성 단어가 있으면, 그중 하나를 이 문자로 한 칸 진행시킨다. 그런 미완성 단어가 없으면 이 문자는 버린다.
  • 어떤 미완성 단어가 마지막 글자까지 채워지면 등장을 한 번 세고, 방금 그 문자의 위치를 그 등장의 위치로 기록한다.

단어 안에서는 (대소문자를 무시했을 때) 같은 글자가 두 번 나오지 않으므로, 텍스트의 각 문자는 많아야 한 종류의 글자에만 대응한다. 이 규칙에 따라, 마지막 문자로 쓸 수 있는 자리가 여러 개면 항상 가장 앞의 자리가 그 등장의 위치가 된다.

입력

입력은 표준 입력으로 받는다. 첫 줄에 테스트 케이스의 개수 TT (1T201 \le T \le 20)가 주어진다.

각 테스트 케이스는 두 줄로 이루어진다.

  • 첫 줄: 단어. 영문자와 숫자만 포함한다.
  • 둘째 줄: 텍스트. 영문자, 숫자, 공백을 포함할 수 있으며 첫 문자는 공백이 아니다.

단어의 길이는 최대 10, 텍스트의 길이는 최대 200,000이다. 하나의 단어는 텍스트에서 최대 40,000번까지 등장할 수 있다. 대소문자를 구분하지 않았을 때, 같은 문자는 한 단어 안에서 두 번 이상 나오지 않는다.

출력

각 테스트 케이스마다 한 줄을 표준 출력으로 내보낸다. 그 줄의 첫 번째 정수는 단어의 등장 횟수이고, 이어지는 정수들은 각 등장의 위치(그 등장에서 단어의 마지막 문자가 놓인 자리)이다. 위치는 텍스트의 첫 문자를 1로 두고 센다.

등장 횟수가 3회 이상이면 위치는 앞의 3개만 출력한다. 따라서 등장 횟수가 3 이상인 경우 한 줄에 정수 4개가 출력된다. 등장 횟수가 0이면 그 줄에는 0만 출력한다.