#P5020. Permutation Swap

Permutation Swap

题目描述

给定一个无序的排列 p1,p2,...,pnp_1, p_2, ..., p_n。你可以选择一个常量 k (k1)k\ (k \ge 1) 并且对这个排列做一些操作使得该排列有序。在一次操作中,你可以选择两个整数 i,j(1j<in)i, j (1 \le j < i \le n),然后交换 pip_ipjp_j,其中 ij=ki - j = k

对于给定的排列,请你求出满足条件的 kk 的最大值。

输入格式

每个测试点包含多组测试样例。测试点第一行一个整数 t (1t104)t\ (1 \le t \le 10^4),表示测试样例的组数。

每组样例第一行一个整数 n (2n105)n\ (2 \le n \le 10^5),表示排列的长度。第二行 nn 个整数,表示给定的排列。

保证所有测试样例的总长度不超过 2×1052 \times 10^5

输出格式

对于每个测试样例,输出一个整数,表示满足条件的 kk 的最大值。

7
3
3 1 2
4
3 4 1 2
7
4 2 6 7 5 3 1
9
1 6 7 4 9 2 3 8 5
6
1 5 3 4 2 6
10
3 10 5 2 9 6 7 8 1 4
11
1 11 6 4 8 3 7 5 9 10 2
1
2
3
4
3
2
3

对于第一组样例,满足条件的 kk 的最大值是 11。使得给定排列有序的操作如下:

  • 交换 p2p_2p1(21=1)p=[1,3,2]p_1 (2 - 1 = 1) \to p = [1, 3, 2]
  • 交换 p2p_2p3(32=1)p=[1,2,3]p_3 (3 - 2 = 1) \to p = [1, 2, 3]

对于第二组样例,满足条件的 kk 的最大值是 22。使得给定排列有序的操作如下:

  • 交换 p3p_3p1(31=2)p=[1,4,3,2]p_1 (3 - 1 = 2) \to p = [1, 4, 3, 2]
  • 交换 p4p_4p2(42=2)p=[1,2,3,4]p_2 (4 - 2 = 2) \to p = [1, 2, 3, 4]