Fatima 是一位研究员,她目前正在研究其所在国家河流流域的水循环。她从测量各种气候相关数值的多个气象站收集数据样本。Fatima 随后在这些样本中寻找有趣的模式。她使用一个程序,实时读取传入的样本数据,并输出那些在某种程度上有趣或可疑的样本。判断一个样本是“有趣”还是“可疑”是基于一组固定的条件,例如“该值大于过去两小时的平均值”或“该值低于过去五分钟内的任何其他值”,这些条件很容易编程实现。
今天,Fatima 对她昨天的结果产生了怀疑,她来找你这位经验丰富的程序员。她认为她的程序没有正确评估数据,并请求你帮助她验证结果。具体来说,她带来了完整的样本序列,并向你描述了这组条件。你的程序必须读取这些样本,并根据条件产生输出。Fatima 随后会将你的程序的输出与她程序的输出进行比较,并决定下一步该做什么。
输入格式
输入包含多组测试数据。每组测试数据的第一行包含一个整数 $N$ ($1 \le N \le 10^5$),表示样本的数量。接下来有 $N$ 行,每行描述一个样本。该行包含两个整数 $T_i$ 和 $V_i$ ($1 \le T_i \le 10^9, 1 \le V_i \le 10^4$),表示样本值 $V_i$ 是在时间 $T_i$ 获取的。时间以自过去某个固定时刻起经过的秒数给出,并且它们构成一个严格递增的序列 ($\forall i, k \ 1 \le i < k \le N : T_i < T_k$)。
下一行包含一个整数 $C$ ($1 \le C \le 10$),表示需要评估的条件数量。接下来的 $C$ 行,每行指定一个条件 $C_j$。该行包含三个由空格分隔的标记:
- 关系运算符 $R_j$,为 “gt”(大于)或 “lt”(小于)。
- 聚合函数 $F_j$,为 “min”(最小值)、“max”(最大值)或 “avg”(平均值)之一。
- 一个整数 $L_j$,指定所关注的时间间隔长度(以秒为单位)。
通常,应用于样本值 $V_i$ 的条件会检查 $V_i$ 与在 $V_i$ 之前获取的某些样本的聚合特征之间的关系。函数 $F_j$ 正好指定了该特征。
更具体地说,令 $S_{ij}$ 为在 $V_i$ 之前获取且时间间隔不超过 $L_j$ 秒的所有样本的集合。当且仅当关系 $V_i R_j F_j(S_{ij})$ 成立时,样本值 $V_i$ 满足条件 $C_j$。例如,样本值 800 结合 “lt min 300” 可以解读为“800 是否小于在获取此 800 之前的 5 分钟内获取的最小样本值?”。注意,样本 $V_i$ 本身不属于 $S_{ij}$。
输出格式
对于每个条件,输出一个整数:满足该特定条件的样本数量。如果时间间隔内没有样本,则该条件永远不会被视为满足。
样例
输入 1
10 60 30 120 28 180 35 240 34 300 40 360 31 420 28 480 2 540 42 600 30 2 gt avg 7200 lt min 300
输出 1
4 2