著名的电脑游戏“植物大战僵尸”中有一个坚果保龄球模式。 在这个模式中,僵尸从右向左移动,玩家可以向它们发射坚果,坚果在撞击僵尸时会反弹。你的任务是模拟这个坚果保龄球游戏。 请注意,本题中使用的规则与原版游戏不同!
游戏在一个大小为 $M \times N$ 的单元格网格上进行。在任何时刻,场上的某些单元格中可能存在僵尸,且每个单元格内最多只有一个僵尸。 玩家可以从场上的任意单元格发射坚果。发射后,坚果立即水平向右滚动,直到第一次遇到僵尸。 每次与僵尸碰撞后,坚果会反弹并继续沿对角线移动:向右上方或右下方。 如果这不是第一次碰撞,坚果会沿另一条对角线继续移动:如果它之前是从左下方滚来的,那么它会向右下方反弹,反之亦然。如果是第一次碰撞,则根据玩家发射坚果的方式选择两条对角线中的一条。 当坚果滚出场地的右侧、下方或上方时,其运动结束。
因此,坚果在场地上画出一条之字形轨迹。如果玩家从一个有僵尸的单元格发射坚果,那么坚果会立即击中该僵尸并反弹。在本题中,我们假设坚果滚动速度极快,发射过程耗时为零。
所有僵尸以单位速度从右向左移动,即每秒移动一个方格。当僵尸离开场地时,它会进入你的房子并排队准备吃掉你的大脑,此后不再参与游戏。 此外,新的僵尸会不时出现在游戏中。 保护自己免受僵尸侵害的唯一方法是用坚果击败它们! 每个僵尸都有一个护甲值。每次坚果击中僵尸,其护甲值就会减少 1。如果由于撞击,护甲值减为零,则该僵尸倒下,即从游戏中完全消失。
初始场地为空。 你的任务是执行 $Q$ 个以下三种类型的查询: 等待 $t$ 秒,让僵尸向左移动和/或进入房子。 从给定单元格发射坚果,击中并可能摧毁一些僵尸。 * 在给定单元格添加一个新僵尸。
发射坚果和添加僵尸的操作耗时可忽略不计,但所有请求必须严格按照给定的顺序执行。
输入格式
输入的第一行包含三个整数:$M$ 为行数,$N$ 为列数,$Q$ 为查询次数 ($1 \le M, N \le 10^7$, $1 \le Q \le 3 \cdot 10^5$)。 接下来的 $Q$ 行包含查询,按顺序每行一个。每个查询由命令描述及其后的若干整数组成。
time t— 等待 $t$ 秒 ($1 \le t \le 10^7$)。你需要输出一个整数 — 在该时间间隔内离开场地并进入排队准备吃掉你大脑的僵尸数量。deliver r c s— 发射坚果。其中 $r$ 和 $c$ 是坚果起始单元格的行号和列号 ($1 \le r \le M, 1 \le c \le N$),$s$ 决定了反弹方向:$-1$ 表示右上方, $1$ 表示右下方。你需要输出两个整数 — 此次发射的弹跳次数和摧毁的僵尸数量。add r c h— 添加僵尸。其中 $r$ 和 $c$ 是添加僵尸的单元格的行号和列号 ($1 \le r \le M, 1 \le c \le N$),$h$ 是初始护甲值 ($1 \le h \le 10^6$)。
当坚果向下移动时,行索引增加;当坚果向右移动时,列索引增加。
你可以假设僵尸永远不会被添加到已有僵尸的单元格中。你可以假设 time 查询中 $t$ 的总和不超过 $10^9$。
输出格式
在输出的第一行打印文本 stdout ducks,因为这个游戏里的僵尸使用鸭子。
然后打印 time 和 deliver 查询的答案,每个答案占一行。
样例
输入 1
6 8 23 add 2 4 2 add 3 7 1 add 4 6 3 add 5 3 3 add 6 4 3 deliver 1 1 1 deliver 5 1 1 deliver 5 1 -1 deliver 2 4 1 deliver 5 1 1 time 2 add 4 4 3 deliver 2 1 1 deliver 6 1 -1 time 7 add 2 3 1 add 2 6 1 add 3 3 1 add 4 4 1 deliver 2 5 1 add 3 7 10 deliver 3 2 1 time 5
输出 1
stdout ducks 0 0 3 0 1 0 3 1 3 2 0 2 1 2 1 1 1 1 2 2 1
Figure 1. 坚果在场地上画出一条之字形轨迹