#CF1905F. 田地不应为空
田地不应为空
F. 田地不应为空
时间限制:$2$ 秒
内存限制:$256$ MB
给定一个长度为 的排列 。
如果下标 满足:
- 对于所有 ,都有 ;
- 对于所有 ,都有 。
那么称下标 是一个好的下标。
记 为排列 中好的下标个数。
你可以执行如下操作恰好一次:
- 选择两个不同的下标 和 ;
- 交换 与 。
求在恰好执行一次上述操作后, 的最大可能值。
排列的定义:长度为 的排列是一个由 到 这 个互不相同的整数按任意顺序组成的数组。例如, 是一个排列,而 不是排列(因为 出现了两次), 也不是排列(因为当 时,数组中出现了 )。
输入格式
每个输入包含多组测试数据。
第一行包含一个整数 (),表示测试数据组数。
对于每组测试数据:
第一行包含一个整数 (),表示排列 的长度。
第二行包含 个互不相同的整数 (),表示排列 。
保证所有测试数据中 的总和不超过 。
输出格式
对于每组测试数据,输出一个整数,表示在恰好执行一次交换操作后, 的最大值。
样例输入
5
5
1 2 3 4 5
5
2 1 3 4 5
7
2 1 5 3 7 6 4
6
2 3 5 4 1 6
7
7 6 5 4 3 2 1
样例输出
3
5
2
3
2
说明
在第一组测试数据中,,此时 ,已经达到了可能的最大值。但题目要求必须执行一次操作,因此我们可以选择 、,交换后得到 ,此时 。
在第二组测试数据中,我们可以选择 、,将排列变为 ,从而得到 。