给定一个包含 $n$ 个顶点和 $m$ 条边的图:该图是无向的,没有自环,也没有重边。已知该图是通过以下两种方式之一生成的:
- 图是随机生成的:过程从一个没有边的图开始,然后 $m$ 次随机均匀地选择一条不存在的边并将其加入图中。 在这种情况下,需要在图上留下标记。为此,你可以执行 0 到 5 次以下操作:选择一对顶点并改变它们之间边的状态,如果边不存在则添加它,如果存在则删除它。
- 图包含一个标记,换句话说,它是通过上述过程生成的随机图。但在该过程之后,顶点被随机重新编号,边也以随机顺序给出。每条边的两个顶点也可以以任意顺序给出。 在这种情况下,无需执行其他操作。
交互
在本题中,你的程序在每个测试点上会被运行两次。在输入和输出中,同一行上的数字由空格分隔。每行输入均以换行符结束。
在每次运行中,程序都会接收一个图作为输入。第一行包含两个整数 $n$ 和 $m$:图中顶点和边的数量。接下来的 $m$ 行,每行包含两个整数 $u$ 和 $v$,表示图中顶点 $u$ 和 $v$ 之间的一条边($1 \le u, v \le n, u \neq v$,所有双向边均不相同)。
第一次运行
在第一次运行中,给定的图是根据题目描述预先随机生成的($n = 1000, 2000 \le m \le 5000$)。在第一行输出单词 “mark”,在第二行输出操作次数 $k$($0 \le k \le 5$)。接下来的 $k$ 行,每行必须包含两个整数 $u$ 和 $v$,表示改变顶点 $u$ 和 $v$ 之间边的状态($1 \le u, v \le n, u \neq v$)。
第二次运行
在第二次运行中,给定的图是第一次运行后得到的图。然而,顶点被随机重新编号,边以随机顺序给出,且每条边的两个顶点也以随机顺序给出。所有的洗牌操作在每个测试点中都是预先确定的,因此,如果程序在第一次运行中做出相同的选择,它们将在第二次运行中获得相同的输入。在这种情况下,在第一行输出单词 “ok”。
样例
对于每个测试点,第二次运行的输入取决于程序在第一次运行中的输出。下面展示了某个程序在第一个测试点上的两次运行。为了简洁,图中仅显示了部分内容。样例的完整版本可在 samples.zip 中查看。
样例 1
输入 1
1000 3560 603 151 415 20 102 569 895 552 <...> 224 267 651 506
输出 1
mark 3 763 968 572 286 453 139
样例 2
输入 2
1000 3561 192 768 693 994 786 238 351 329 <...> 100 66 54 819
输出 2
ok