atcoder#ABC183F. [ABC183F] Confluence

[ABC183F] Confluence

Score : 600600 points

Problem Statement

NN students are about to go to school. Student ii belongs to Class CiC_i.

After leaving home, each student will head to school while repeatedly joining up with a group of other students. Once students join up with each other, they will not separate.

You will be given QQ queries that should be processed in order. There are two kinds of queries, in the following formats, that mean the following:

  • 1 a b: The group containing Student aa and the group containing Student bb merges. (If they are already in the same group, nothing happens.)
  • 2 x y: You are asked to find the number of students belonging to Class yy who are already in the same group as Student xx (including Student xx) at the time of this query.

Constraints

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1Q2×1051 \leq Q \leq 2 \times 10^5
  • 1Ci,a,b,x,yN1 \leq C_i,a,b,x,y \leq N
  • In a query in the format 1 a b, aba \neq b.
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

NN QQ

C1C_1 \ldots CNC_N

Query1Query_1

\vdots

QueryQQuery_Q

Output

Print the answers to the queries in the format 2 x y, each in its own line, in order.

5 5
1 2 3 2 1
1 1 2
1 2 5
2 1 1
1 3 4
2 3 4
2
0

At the time of the 33-rd query, Student 11 has joined up with Student 22 and 55. Among these three students, two belong to Class 11.

At the time of the 55-th query, Student 33 has joined up with Student 44. Among these two students, none belongs to Class 44.

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

There may be queries in the format 1 a b for students who already belong to the same group.

12 9
1 2 3 1 2 3 1 2 3 1 2 3
1 1 2
1 3 4
1 5 6
1 7 8
2 2 1
1 9 10
2 5 6
1 4 8
2 6 1
1
0
0