#ATagc068c. [AGC068C] Ball Redistribution

[AGC068C] Ball Redistribution

题目描述

NN 个盒子,编号从 11NN ,有 NN 个球,编号从 11NN

你给 Snuke 布置了以下程序作为家庭作业。

  • 将每个球放入他喜欢的任何盒子中。同一个盒子里可以放多个球,也可以有盒子里不放球。
  • 按顺序对 i=1,2,,Ni = 1, 2, \cdots, N 进行以下操作。
    • 如果盒子 ii 中没有球,则什么也不做。
    • 否则如果盒子 ii 中有球,则取出所有的球,按任意顺序排列。假设 kk 是取出的球数, (x1,x2,,xk)(x_1, x_2, \cdots, x_k) 是排成一行的球的编号。对于每个 1jk1 \leq j \leq k ,将球 xjx_j 放入盒子 xj+1x_{j+1} 。这里, xk+1x_{k+1} 表示 x1x_1 。所有这些将球放入盒子的操作都是同时进行的。

Snuke 说他已经完成了作业,并向你报告了最终状态。具体地说,他说操作完成后,球 ii 在盒子 AiA_i 中。

你怀疑他是否正确执行了程序。请判断他报告的状态是否是程序的可能结果。

11 个输入有 TT 个测试用例。

制约

  • 1T2500001 \leq T \leq 250000
  • 1N2500001 \leq N \leq 250000
  • 1AiN1 \leq A_i \leq N
  • 每个测试点中所有测试用例的 NN 之和最多为 250000250000
  • 所有输入值均为整数。

输入格式

输入内容由标准输入提供,格式如下

TT
case1case_1
case2case_2
\vdots
caseTcase_T

每个测试用例的格式如下:

NN
A1A_1 A2A_2 \cdots ANA_N

输出格式

对于每个测试用例,如果 Snuke 报告的状态是程序的可能结果,则打印 Yes,否则打印 No

样例 1 解释

样本输出 1

下面的步骤产生了 Snuke 报告的状态,所以答案是 Yes

  • 将球 1,2,31, 2, 3 分别放入盒子 1,1,21, 1, 2 中。
  • 取出盒子 11 中的球,并将它们排列为 (2,1)(2, 1)
    • 将球 22 放入盒子 11
    • 将球 11 放入盒子 22
  • 从盒子 22 中取出球,摆成 (1,3)(1, 3) 的样子。
    • 将球 11 放入盒子 33
    • 将球 33 放入盒子 11
  • 从盒子 33 中取出球,按 (1)(1) 的方式摆放。
    • 将球 11 放入盒子 11
  • 现在再把球 1,2,31, 2, 3 全部放入盒子 11

样例 1

输入

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

输出

Yes
No
Yes
No
Yes