#include #define int long long using namespace std; const int N=1e5+10; struct Mat{ int n,m,a[5][5]; void build(int N){ n=m=N; for(int i=1;i<=N;i++){ for(int j=1;j<=N;j++) a[i][j]=(i==j); } } Mat operator *(Mat x){ Mat y; y.n=n,y.m=x.m; for(int i=1;i<=n;i++) for(int j=1;j<=x.m;j++) y.a[i][j]=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) for(int k=1;k<=x.m;k++) y.a[i][k]+=a[i][j]*x.a[j][k]; return y; } }a[N],b[N],p; int n,op[N],x[N]; signed main(){ ios::sync_with_stdio(0);cin.tie(0),cout.tie(0); cin>>n>>p.a[1][1]>>p.a[2][1],p.a[3][1]=1,p.n=3,p.m=1; for(int i=1;i<=n;i++){ cin>>op[i]; if(op[i]<=2) cin>>x[i],a[i].build(3); else a[i].n=a[i].m=3; if(op[i]==1) a[i].a[1][3]=x[i]; if(op[i]==2) a[i].a[2][3]=x[i]; if(op[i]==3) a[i].a[1][2]=a[i].a[3][3]=1,a[i].a[2][1]=-1; } b[n+1].build(3); for(int i=n;i;i--) b[i]=b[i+1]*a[i]; for(int i=1;i<=n;i++) cout<<(b[i]*p).a[1][1]<<" "<<(b[i]*p).a[2][1]<<'\n'; return 0; }