#CF2233D. 货架上的商品

货架上的商品

题目描述

超市货架用数组 aa 描述,其中 aia_i 表示第 ii 个位置上商品的类型。

如果每一种类型的商品都形成一个连续区间,则称货架摆放正确。也就是说,对于任意 i<ji\lt jai=aja_i=a_j,区间 [i,j][i,j] 内的所有商品类型都必须等于 aia_i

你最多可以选择两个不同位置交换一次,也可以不交换。判断是否能让货架摆放正确。

输入格式

第一行包含整数 tt,表示测试组数。

每组测试数据第一行包含整数 nn

第二行包含 nn 个整数 aia_i

输出格式

对每组测试数据,如果可以通过至多一次交换使货架正确,输出 YES;否则输出 NO

大小写任意。

数据范围

  • 1t1041 \le t \le 10^4
  • 2n21052 \le n \le 2\cdot 10^5
  • 1ai1091 \le a_i \le 10^9
  • 所有测试组的 nn 之和不超过 21052\cdot 10^5

样例 1 输入

7
3
1 2 1
2
7 7
6
1 2 3 1 2 3
6
1 1 2 3 2 3
7
1 2 3 1 2 3 4
6
1 2 1 2 1 1
6
1 2 2 3 3 1

样例 1 输出

YES
YES
NO
YES
NO
YES
NO

提示

在第一个示例中,你可以交换位置 1122 上的货物,之后货架将变为:[2,1,1][2, 1, 1]

在第二个示例中,货架已经正确排列。

在第三个示例中,无法通过一次交换将货架正确排列。

在第六个示例中,你可以交换位置 1144 上的货物,之后货架将被正确排列。

来源

Codeforces Round 2233 D - Goods on the Shelf