#include #include #include #include using namespace std; using mint=atcoder::modint998244353; int N,Q; struct dat{ vectorVs; mint cnt[30]; }; int pr[2<<17]; dat V[2<<17]; int XOR[2<<17]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N,X,Q; cin>>N>>X>>Q; for(int i=0;i>op; if(op==1) { int v,w;cin>>v>>w; { int pu=pr[X],pv=pr[v]; if(V[pu].Vs.size()>j&1)V[pu].cnt[j]++; } } } else if(op==2) { int u,v;cin>>u>>v; int pu=pr[u],pv=pr[v]; if(pu!=pv)cout<<"-1\n"; else { int d=XOR[u]^XOR[v]; cout<>v; v=pr[v]; mint ans=0; for(int j=30;j--;) { mint c=V[v].cnt[j]; mint d=mint::raw(V[v].Vs.size())-c; ans=ans+ans+c*d; } cout<>v; X+=v; X%=N; } } }