[NFLSPC #6] 9.pop_book();

题目背景

*Alek 岁*在操场上跑圈。他看到有人超过他,很不爽。于是他采取了以下策略:

题目描述

在长度为 $m$ 的环形操场上有 $n$ 个人,第 $i$ 个人在 $t_i$ 时刻从位置 $p_i$ 出发以 $v_i$ 单位长度每秒的速度移动。现在 $0$ 时刻 *Alek 岁*在位置 $0$ 处,速度为 $0$,会跟着经过他的速度最快的人移动。$q$ 次询问 $T_i$ 时刻 *Alek 岁*的移动距离。可以证明这是一个整数。 注:从位置 $0$ 出发逆时针方向 $x$($0\leq x < m$)单位长度的位置称为位置 $x$。所有人的运动方向都是逆时针。 多组数据。

输入输出格式

输入格式


第一行一个整数 $T$ 表示数据组数。对于每组数据: - 第一行三个整数 $n, m, q$,分别表示人数,操场长度和询问个数。 - 接下来 $n$ 行,每行三个整数 $p_i, v_i, t_i$,分别表示第 $i$ 个人出发时的位置,移动速度(单位长度每秒)和出发时间。 - 接下来 $q$ 行,每行一个整数 $T_i$ 表示一次询问。

输出格式


对于每个询问,输出一行一个整数表示答案。

输入输出样例

输入样例 #1

1
3 30 8
0 2 1
6 5 2
25 4 4
1
5
9
10
11
12
13
14

输出样例 #1

0
8
16
19
23
27
31
36

说明

对于所有数据,$1\leq T\leq 10 ^ 3$,$1\leq n, \sum n\leq 5\times 10 ^ 5$,$1\leq m, q, \sum q \leq 10 ^ 6$,$1\leq v_i, t_i, T_i\leq 10 ^ 9$,$0\leq p_i < m$。保证 $t_i$ 单调不降,$T_i$ 单调递增。 - 子任务 1($10$ 分):$n\leq 5$。 - 子任务 2($10$ 分):$n\leq 50$。 - 子任务 3($20$ 分):$n\leq 500$。 - 子任务 4($20$ 分):$n\leq 5\times 10 ^ 3$。 - 子任务 5($20$ 分):$n\leq 5\times 10 ^ 4$。 - 子任务 6($20$ 分):无特殊限制。 **请注意,子任务并没有保证 $\sum q$ 的数量级**。 本题 IO 量较大,建议使用 `scanf/printf` 或关闭流同步的 `cin/cout` 或快速读入和快速输出。 Source:NFLSPC #6 I by Alex_Wei