Almost UnionFind
I hope you know the beautiful UnionFind 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\} , \ldots , \{ n\} $.
As an example, consider the sequence of operations in sample input 1 below.

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\} $
Input
There are several test cases. Each test case begins with a line containing two integers $n$ and $m$ ($1 \leq n,m \leq 100\, 000$), the number of integers, and the number of commands. Each of the next $m$ lines contains a command. For every operation, $1\leq p,q\leq n$. The input is terminated by endoffile (EOF). There are at most $20$ cases, and the size of the input file does not exceed $5$ MB.
Output
For each type$3$ command, output $2$ integers: the number of elements and the sum of elements.
Sample Input 1  Sample Output 1 

5 7 1 1 2 2 3 4 1 3 5 3 4 2 4 1 3 4 3 3 
3 12 3 7 2 8 