CF827E.Rusty String

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Grigory loves strings. Recently he found a metal strip on a loft. The strip had length nn and consisted of letters "V" and "K". Unfortunately, rust has eaten some of the letters so that it's now impossible to understand which letter was written.

Grigory couldn't understand for a long time what these letters remind him of, so he became interested in the following question: if we put a letter "V" or "K" on each unreadable position, which values can the period of the resulting string be equal to?

A period of a string is such an integer dd from 11 to the length of the string that if we put the string shifted by dd positions to the right on itself, then all overlapping letters coincide. For example, 33 and 55 are periods of "VKKVK".

输入格式

There are several (at least one) test cases in the input. The first line contains single integer — the number of test cases.

There is an empty line before each test case. Each test case is described in two lines: the first line contains single integer nn ( 1<=n<=51051<=n<=5·10^{5} ) — the length of the string, the second line contains the string of length nn , consisting of letters "V", "K" and characters "?". The latter means the letter on its position is unreadable.

It is guaranteed that the sum of lengths among all test cases doesn't exceed 51055·10^{5} .

For hacks you can only use tests with one test case.

输出格式

For each test case print two lines. In the first line print the number of possible periods after we replace each unreadable letter with "V" or "K". In the next line print all these values in increasing order.

输入输出样例

  • 输入#1

    3
     
    5
    V??VK
     
    6
    ??????
     
    4
    ?VK?
    

    输出#1

    2
    3 5
    6
    1 2 3 4 5 6
    3
    2 3 4
    

说明/提示

In the first test case from example we can obtain, for example, "VKKVK", which has periods 33 and 55 .

In the second test case we can obtain "VVVVVV" which has all periods from 11 to 66 .

In the third test case string "KVKV" has periods 22 and 44 , and string "KVKK" has periods 33 and 44 .

首页