#include #include #include #include #include #include #include #include #include #include using namespace std; #define int long long int MOD = 1000000007; int N; vector > matmatmul(vector >&A, vector > &B) { vector > C(3, vector(3, 0)); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { for (int k = 0; k < 3; k++) { C[i][j] += A[i][k] * B[k][j]; } } } return C; } vector matvecmul(vector > &A, vector &B) { vector C(3, 0); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { C[i] += B[j] * A[i][j]; } } return C; } signed main() { cin.tie(0); ios::sync_with_stdio(false); int N, X, Y; cin >> N >> X >> Y; vector A(N); vector B(N, -1); for (int i = 0; i < N; i++) { cin >> A[i]; if (A[i] < 3) { cin >> B[i]; } } vector > mm(3, vector(3, 0)); vector vec(3, 0); mm[0][0] = 1; mm[1][1] = 1; mm[2][2] = 1; vec[0] = X; vec[1] = Y; vec[2] = 1; vector > res(N); for (int i = N - 1; i >= 0; i--) { vector > mat(3, vector(3, 0)); if (A[i] == 1) { mat[0][0] = 1; mat[1][1] = 1; mat[2][2] = 1; mat[0][2] = B[i]; } else if (A[i] == 2) { mat[0][0] = 1; mat[1][1] = 1; mat[2][2] = 1; mat[1][2] = B[i]; } else { mat[0][1] = 1; mat[1][0] = -1; mat[2][2] = 1; } mm = matmatmul(mm, mat); res[i] = matvecmul(mm, vec); } for (int i = 0; i < N; i++) { cout << res[i][0] << " " << res[i][1] << endl; } }