2026 年 USACO竞赛 第三场比赛金奖组问题一—Good Cyclic Shifts

For a permutation p1,p2,…,pN of 1…N (1≤N≤2⋅105), let f(p)=. A permutation is good if it can be turned into the identity permutation using at most f(p) swaps of adjacent elements.

Given a permutation, find which cyclic shifts of it are good.

INPUT FORMAT (input arrives from the terminal / stdin):

The input consists of T (1≤T≤105) independent tests. Each test is specified as follows:

The first line contains N.

The second line contains p1,p2,…,pN (1≤piN), which is guaranteed to be a permutation of 1…N.

It is guaranteed that the sum of N over all tests does not exceed 106 .

OUTPUT FORMAT (print output to the terminal / stdout):

For each test, output two lines:

On the first line, output the number of good cyclic shifts k.

Then output a line with k space-separated integers s (0≤s<N) in increasing order, meaning that p is good when cyclically shifted to the right s times.

SAMPLE INPUT:

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

SAMPLE OUTPUT:

0

2
0 1
5
0 1 2 3 4

Consider the second test case, where p=[1,2,4,3].

f(p)=(|1−1|+|2−2|+|4−3|+|3−4|)/2=1. Since p can be turned into the identity permutation in one move by swapping p3 and p4, p is good.

Cyclically shifting p to the right 1 time, we get q=[3,1,2,4]. f(q)(|3−1|+|1−2|+|2−3|+|4−4|)/2=2. Since q can be turned into the identity permutation in two moves by swapping q1 two steps forward, q is good.

It can be seen that the other two cyclic shifts are not good.

SCORING:

Input 2: N≤10
Inputs 3-5: T≤10,N≤2000
Inputs 6-11: No additional constraints.
Problem credits: Akshaj Arora