#XMOJ10632. 生成和移动

生成和移动

说明

时间限制:1 Sec 内存限制:256 MB 输入文件createmove.in 输出文件createmove.out

小点点是可以站在 XY 平面整数坐标上的角色。

初始状态下,XY 平面上不存在任何小点点。小点点会重复执行“生成”与“移动”操作,总共执行 NN 次。

操作规则

  1. 会在整数坐标 (Px,Py)(P_x, P_y) 处生成 11 个小点点。

  2. 所有已存在的小点点都会遵循指定的 XY 平面移动指令进行移动。

移动指令类型

指定的移动指令为以下 33 种中的任意 11 种:

  • 指令 11:向 X 轴正方向(右侧)移动 DxD_x 个单位。

  • 指令 22:向 Y 轴正方向(上方)移动 DyD_y 个单位。

  • 指令 33:以原点为中心,顺时针旋转 9090 度。

最终 XY 坐标上会存在 NN 个小点点。请依次输出从第一个生成的小点点开始,每个小点点最终所在的坐标。

输入格式

第一行三个整数 N,Px,PyN,P_x,P_y

接下来 NN 行,每行表示一个指令,格式如下:

11 DxD_x:表示指令 11

22 DyD_y:表示指令 22

33:表示指令 33

输出格式

输出 NN 行,第 ii 行两个整数 (xi,yi)(x_i,y_i) 表示第 ii 个生成的小点点最终所在的坐标。

样例

样例 1

2 0 1
1 3
1 4
7 1
4 1

样例说明:00 号小点点在 (0,1)(0,1) 处生成,先向 XX 轴方向移动 33 个单位,再向 XX 轴方向移动 44 个单位。

11 号小点点在 (0,1)(0,1) 处生成,向 X 轴方向移动 44 个单位。

00 号小点点最终会位于 (7,1)(7,1) 处。

11 号小点点最终会位于 (4,1)(4,1) 处。

样例 2

3 1 2
1 2
2 1
3
3 -3
3 -1
2 -1

样例说明:00 号小点点在 (1,2)(1,2) 处生成,先向 X 轴方向移动 22 个单位,再向 Y 轴方向移动 11 个单位,最后以原点为中心顺时针旋转 9090 度。

11 号小点点在 (1,2)(1,2) 处生成,先向 Y 轴方向移动 11 个单位,再以原点为中心顺时针旋转 9090 度。

22 号小点点在 (1,2)(1,2) 处生成,仅以原点为中心顺时针旋转 9090 度。

00 号小点点最终会位于 (3,3)(3,-3) 处。

11 号小点点最终会位于 (3,1)(3,-1) 处。

22 号小点点最终会位于 (2,1)(2,-1) 处。

样例 3

4 2 3
3
3
3
3
2 3
-3 2
-2 -3
3 -2

样例说明:00 号小点点最终回到了它出生的位置。

样例 4

5 0 0
1 0
2 0
1 0
1 0
2 0
0 0
0 0
0 0
0 0
0 0

样例说明:所有小点点都在原点处生成,且生成后没有进行任何移动。

数据范围

对于 30% 的数据,N1000N \le 1000

对于 100% 的数据,1N1051 \le N \le 10^5Px,Py109|P_x|,|P_y| \le 10^90Dx,Dy100000 \le D_x,D_y \le 10000