#J1056d. # 能找到吗(find)

# 能找到吗(find)

题目描述

小 C 是数据结构爱好者。

小 C 现在给了你 22 种操作。

初始有一张空的图。每个点都可以到达自己本身。

  1. 操作 111 u v 表示将图中点 uu 和点 vv 之间添加一条无向边。
  2. 操作 222 u k 表示查询 uu 所能到达的所有点中,编号第 kk 大的那一个编号。如果 uu 所能到达的点不足 kk 个,请输出 1-1

输入格式

第一行两个正整数 nnqq,表示图中的点数和操作数量。保证 1n,q2×1051\leq n,q\leq 2\times 10^5

接下来 qq 行每行三个正整数,格式为 1 u v2 u k,表示操作类型。

对于操作 11 保证 1u,vn1\leq u,v\leq n

对于操作 22 保证 1un1\leq u\leq n1k101\leq k\leq \color{red}{10}

输出格式

若干行,对于每个操作 22 输出一个数表示答案。

样例 #1

样例输入 #1

4 10
1 1 2
2 1 1
2 1 2
2 1 3
1 1 3
1 2 3
1 3 4
2 1 1
2 1 3
2 1 5

样例输出 #1

2
1
-1
4
2
-1

样例 #2

样例输入 #2

6 20
1 3 4
1 3 5
2 1 1
2 3 1
1 1 5
2 6 9
2 1 3
2 6 1
1 4 6
2 2 1
2 6 2
2 4 7
1 1 4
2 6 2
2 3 4
1 2 5
2 4 1
1 1 6
2 3 3
2 1 3

样例输出 #2

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

提示

对于前 20%20\% 的数据满足 1n,q2001\leq n,q\leq 200

对于前 50%50\% 的数据满足 1n,q50001\leq n,q\leq 5000

对于 100%100\% 的数据满足 1n,q2×1051\leq n,q\leq 2\times 10^51k101\leq k\leq 10