#include<bits/stdc++.h>
using namespace std;
int n,m,f[214514],sz[214514],val[214514];
int find(int x){
if(f[x]==x)return x;
return f[x]=find(f[x]);
}
int main(){
while(cin>>n>>m){
for(int i=1;i<=n;i++)f[i]=i+n;
for(int i=n+1;i<=2*n;i++)
f[i]=i,sz[i]=1,val[i]=i-n;
for(int i=1;i<=m;i++){
int k,p,q;
cin>>k;
if(k==1){
cin>>p>>q;
p=find(p),q=find(q);
if(p==q)continue;
f[p]=q;
sz[q]+=sz[p];
val[q]+=val[p];
}else if(k==2){
cin>>p>>q;
int pp=find(p),qq=find(q);
if(pp==qq)continue;
f[p]=qq;
sz[pp]--,sz[qq]++;
val[pp]-=p,val[qq]+=q;
}else{
cin>>p;
cout<<sz[find(p)]<<" "<<val[find(p)]<<"\n";
}
}
}
return 0;
}