小红的排序(easy)
题号:NC316502
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}本题为问题的简单版本,两题的唯一区别在本题保证 x, y \leqq \lfloor\tfrac{n}{2}\rfloor

\hspace{15pt}给定一个长度为 n排列 p_1, p_2, \dots, p_n 与两个正整数 xy,满足 x, y \leqq \lfloor\tfrac{n}{2}\rfloor。你可以进行任意次操作,每次操作可以选择一个下标 i,并执行以下两种交换之一:
\hspace{23pt}\bullet 交换 p_ip_{i + x}(要求 i + x \leqq n);
\hspace{23pt}\bullet 交换 p_ip_{i + y}(要求 i + y \leqq n)。
\hspace{15pt}请你判断是否可以通过若干次操作(可以为 0 次)将排列变成升序排列 [1, 2, \dots, n]

【名词解释】
\hspace{15pt}长度为 n排列:由 1,2,\dots,nn 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如,\{2,3,1,5,4\} 是一个长度为 5 的排列,而 \{1,2,2\}\{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

\hspace{15pt}在几乎全部的情况下,PyPy 的运行速度优于 Python,我们建议您选择对应版本的 PyPy 进行提交、而不是 Python。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 2\times 10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行三个整数 n, x, y (4 \leqq n \leqq 2\times 10^5,\ 1 \leqq x < y \leqq \lfloor\tfrac{n}{2}\rfloor)
\hspace{15pt}第二行包含 n 个整数 p_1, p_2, \dots, p_n,表示给定的排列。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2\times10^5

输出描述:

\hspace{15pt}对于每组测试数据,新起一行。

\hspace{15pt}如果可以排序,输出 \texttt{Yes};否则输出 \texttt{No}
示例1

输入

复制
2
4 1 2
2 3 1 4
8 2 4
1 8 7 4 6 3 2 5

输出

复制
Yes
No