eolymp
bolt
Try our new interface for solving problems
Problems

Almost Union-Find

Almost Union-Find

I hope you know the beautiful Union-Find structure. In this problem, you're to implement something similar, but not identical.

The data structure you need to write is also a collection of disjoint sets, supporting 3 operations:

  • 1 p q Union the sets containing p and q. If p and q are already in the same set, ignore this command;

  • 2 p q Move p to the set containing q. If p and q are already in the same set, ignore this command;

  • 3 p Return the number of elements and the sum of elements in the set containing p.

Initially, the collection contains n sets: {1}, {2}, {3}, ..., {n}.

Input

There are several test cases. Each test case begins with a line containing two integers n and m (1n, m100000), the number of integers, and the number of commands. Each of the next m lines contains a command. For every operation, 1p, qn. The size of input file does not exceed 5MB.

Output

For each type 3 command, output two integers: the number of elements and the sum of elements.

Explanation

Initially: {1}, {2}, {3}, {4}, {5}

Collection after operation 1 1 2: {1,2}, {3}, {4}, {5}

Collection after operation 2 3 4: {1,2}, {3,4}, {5} (we omit the empty set that is produced when taking out 3 from {3})

Collection after operation 1 3 5: {1,2}, {3,4,5}

Collection after operation 2 4 1: {1,2,4}, {3,5}

Time limit 1 second
Memory limit 128 MiB
Input example #1
5 7
1 1 2
2 3 4
1 3 5
3 4
2 4 1
3 4
3 3
Output example #1
3 12
3 7
2 8
Source Rujia Liu`s Present 3 A Data Structure Contest Celebrating the 100th Anniversary of Tsinghua University