30120 - 跳舞蝇的教练

Byteland 以流浪跳蚤训练师而闻名。驯养的跳蚤被教导跳舞。它们在音乐的节奏中做出精确的跳跃。在桌子上,训练师放了一排编号的硬币,但不假设它们按任何特定顺序排列。每个硬币上都有一个形式的铭文;f(i) 是这个硬币的编号,也是跳蚤如果坐在这个硬币上应该跳到的硬币编号。然后训练师在每个硬币上放一只跳蚤,打开音乐。跳蚤在跳舞时跟随音乐的节奏;即在每一拍音乐中,每只跳蚤直接跳到其所在硬币上写的编号对应的硬币上。在舞蹈过程中,可能发生许多跳蚤坐在同一枚硬币上。在这种情况下,它们继续一起表演。假设我们有 n 个硬币和 n 只跳蚤。只要我们说出硬币上写的编号,表演就完全确定了。然而,两组不同的硬币如果按适当的顺序排列,可能给出相同的表演。

考虑三个硬币上的表演。如果跳跃按以下方式进行:从第一个硬币到第二个硬币,从第二个硬币到第三个硬币,从第三个硬币到第一个硬币(我们记为 2 3 1);那么跳蚤将在一个圆圈中跳舞,且不会有两只跳蚤在同一枚硬币上相遇。例如,舞蹈 2 3 3 是不同的,因为它会使所有跳蚤在两拍音乐后在第三个硬币上相遇,并使它们永远只在第三个硬币上跳跃。

然而,集合 2 3 11 3 2 是相同类型的。如果你把硬币排成一排——第一个集合从左到右,第二个集合从右到左——你会看到相同的表演。

如果跳蚤第二次以同样的方式表演,观众会不满。因此需要一个程序,它能够:

  • 从标准输入读取测试用例的数量,
  • 对于每个测试用例,从标准输入读取两组硬币的描述,并验证是否可以将这些硬币排列在桌子上,使得两组硬币上的跳蚤给出相同的表演,
  • 将结果写入标准输出。

输入

第一行包含一个整数 t,表示测试用例的数量,1 \le t \le 10

接下来的 t 个测试用例,每个用例占三行:

  • 第一行包含一个整数 n1 \le n \le 10^4),表示硬币的数量。
  • 接下来的两行各包含 n 个整数,表示两组硬币的描述。描述由 n 个整数组成,范围在 1n 之间,用空格分隔;第 i 个整数表示坐在第 i 个硬币上的跳蚤应该跳到的硬币编号。

输出

对于每个测试用例,输出一行,包含一个字母:

  • T —— 如果可以排列两组硬币,使跳蚤的表演相同,
  • N —— 否则。

样例

输入

2
3
2 3 1
2 3 3
4
2 3 2 4
1 3 2 3

输出

N
T
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题