#abc233f. [abc233_f]Swap and Sort

[abc233_f]Swap and Sort

题目描述

我们有一个排列 P=(P1,P2,ldots,PN)P=(P_1,P_2,\\ldots,P_N),其中 PP(1,2,ldots,N)(1,2,\\ldots,N) 的一个排列。

你可以进行 MM 种操作之一。第 ii 个操作将交换 PP 的第 aia_i 个元素和第 bib_i 个元素。

是否可能通过以任意顺序进行最多 5times1055\\times 10^5 次操作,将 PP 排序为升序?

如果可能,请给出一种操作序列。否则,报告不可能。

约束条件

  • 2leqNleq10002 \\leq N \\leq 1000
  • PP(1,2,ldots,N)(1,2,\\ldots,N) 的一个排列。
  • $1 \\leq M \\leq \\min(2\\times 10^5, \\frac{N(N-1)}{2})$
  • 1leqailtbileqN1 \\leq a_i \\lt b_i \\leq N
  • 如果 ineqji \\neq j,则 (ai,bi)neq(aj,bj)(a_i,b_i) \\neq (a_j,b_j)
  • 输入中的所有值都是整数。

输入

从标准输入读入数据,输入的格式如下:

NN
P1P_1 P2P_2 ldots\\ldots PNP_N
MM
a1a_1 b1b_1
a2a_2 b2b_2
vdots\\vdots
aMa_M bMb_M

输出

如果可以将 PP 排序为升序,请打印如下内容:

KK
c1c_1 c2c_2 ldots\\ldots cKc_K

其中,KK 表示操作的次数,cic_i (1leqileqK)(1 \\leq i \\leq K) 表示第 ii 个操作为第 cic_i 种操作。
注意,必须满足 0leqKleq5times1050 \\leq K \\leq 5\\times 10^5

如果无法将 PP 排序为升序,请打印 -1


示例输入 1

6
5 3 2 4 6 1
4
1 5
5 6
1 2
2 3

示例输出 1

3
4 2 1

PP 的变化过程如下:$(5,3,2,4,6,1)\\to (5,2,3,4,6,1)\\to (5,2,3,4,1,6)\\to (1,2,3,4,5,6)$。


示例输入 2

5
3 4 1 2 5
2
1 3
2 5

示例输出 2

-1

无法将 PP 排序为升序。


示例输入 3

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

示例输出 3

0

PP 可能已经按升序排序。

此外,以下也是一种可接受的输出:

4
5 5 5 5

注意,并不要求最小化操作次数。