#abc225d. [abc225_d]Play Train

[abc225_d]Play Train

问题描述

Takahashi正在玩具火车,连接和断开它们。
NN辆玩具火车车厢,编号为:第1辆车,第2辆车,...,第N辆车。
最初,所有车辆都是分离的。

您将获得QQ个查询。按给定的顺序处理它们。查询有三种类型,如下所示。

  • 1 x y:将车辆yy的前部连接到车辆xx的后部。 可以保证:

    • xyx\neq y
    • 在此查询之前,没有任何火车连接到车辆xx的后部;
    • 在此查询之前,没有任何火车连接到车辆yy的前部;
    • 在此查询之前,车辆xx和车辆yy属于不同的连通分量。
  • 2 x y:断开车辆xx的后部与车辆yy的前部的连接。 可以保证:

    • xyx\neq y
    • 在此查询之前,车辆yy的前部直接连接到车辆xx的后部。
  • 3 x:从前到后打印包含车辆xx的连通分量中的车辆编号。

约束条件

  • 2N1052\leq N\leq 10^5
  • 1Q1051\leq Q\leq 10^5
  • 1xN1\leq x\leq N
  • 1yN1\leq y\leq N
  • 输入中的所有值都是整数。
  • 所有查询满足问题描述中的条件。
  • 格式为3 x的查询要求总共打印最多10610^6个车辆编号。

输入

输入以以下格式从标准输入给出:

NN QQ query1query_1 query2query_2 \vdots queryQquery_Q

ii个查询queryiquery_i以整数cic_i (11, 22, or 33)开始,表示查询的类型,后跟xxyy(如果ci=1c_i=122),且后跟xx(如果ci=3c_i=3)。

简言之,每个查询有以下三种格式之一:

11 xx yy 22 xx yy 33 xx

输出

如果ci=3c_i=3的查询要求打印值j1,j2,,jMj_1, j_2, \ldots, j_M,输出以下行:

MM j1j_1 j2j_2 \ldots jMj_M

您的输出应该包含qq行,其中qqci=3c_i=3查询的数量。 第kk(1kq)(1\leq k\leq q)应包含对第kk个这样的查询的响应。


样例输入 1

7 14
1 6 3
1 4 1
1 5 2
1 2 7
1 3 5
3 2
3 4
3 6
2 3 5
2 4 1
1 1 5
3 2
3 4
3 6

样例输出 1

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

下图显示了处理前55个查询时的车辆情况。 例如,车辆22属于与车辆3,5,6,73, 5, 6, 7相同的连通分量,与包含车辆1,41, 4的连通分量不同。

下图显示了处理前1111个查询时的车辆情况。