Prefix와 Suffix

S의 접두사이면서 접미사인 각 문자열에 대해, 그 길이와 S에서 부분 문자열로 나타나는 횟수를 출력한다.

보통7문자열 매칭누적 합문자열아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

문자열 S=S1S2SSS = S_1 S_2 \dots S_{|S|}가 주어진다. S|S|SS의 길이이고, SiS_iii번째 글자다.

  • SS의 부분 문자열 S[i..j]S[i..j] (1ijS1 \le i \le j \le |S|)는 SiSi+1SjS_i S_{i+1} \dots S_j다.
  • 길이가 ll (1lS1 \le l \le |S|)인 SS의 Prefix는 S[1..l]S[1..l]이다.
  • 길이가 ll (1lS1 \le l \le |S|)인 SS의 Suffix는 S[Sl+1..S]S[|S|-l+1..|S|]이다.

SS의 Prefix이면서 동시에 Suffix인 문자열을 모두 찾고, 각각이 SS의 부분 문자열로 몇 번 등장하는지 세는 프로그램을 작성하시오. 등장 위치는 서로 겹쳐도 된다.

입력

첫째 줄에 문자열 SS가 주어진다. (1S1000001 \le |S| \le 100\,000)

출력

첫째 줄에 SS의 Prefix이면서 동시에 Suffix인 문자열의 개수 KK를 출력한다.

이어지는 KK개의 줄에는 lil_icic_i를 공백으로 구분해 출력한다. 길이가 lil_i인 Prefix가 길이가 lil_i인 Suffix와 같고, 그 문자열이 SS의 부분 문자열로 cic_i번 등장한다는 뜻이다.

lil_i가 증가하는 순서로 출력한다.