在杜布罗夫尼克市(Dubrovnik)举行了一场 Segway(平衡车)比赛。赛道由三个路段组成,每个路段长 100 米——因此,赛道总长为 300 米。根据其 Segway 电池的限制,每位选手都有一个策略:在第一个 100 米、接下来的 100 米以及最后的 100 米上的骑行速度,除非允许将 Segway 加速到最大速度(在下一段中解释)。
不幸的是,Segway 非常慢,每行驶一米需要 1 到 50 秒。因此,本题中的速度以“秒/米”为单位(而不是“米/秒”)。
沿赛道设有若干个加速点(加速器)。当选手到达加速点时,其 Segway 会获得额外动力,在接下来的 $X \bmod 20$ 米内以 $1$ 秒/米的最大速度骑行,其中 $X$ 是他到达该加速点时,严格领先于他的选手人数(包括已经完赛的选手)。在用完上一个加速器的所有额外动力之前,选手无法使用另一个加速器。此时,如果没有新的加速器,选手将继续以该赛道段对应的默认速度移动。
假设选手总是会使用可用的加速器,即使这可能不是最优策略。一个加速器可以被多位选手同时使用。你的任务是编写一个程序来模拟这场比赛。假设所有 Segway 选手同时出发,请输出每位选手完赛所需的时间(以秒为单位)。
输入格式
第一行包含一个整数 $N$($2 \le N \le 20\,000$),表示选手人数。
接下来的 $N$ 行中,第 $K$ 行包含三个介于 $1$ 和 $50$ 之间的整数:第 $K$ 位选手在赛道前 100 米、中间 100 米和最后 100 米的默认速度。
下一行包含一个整数 $M$($0 \le M \le 299$),表示加速点的数量。
如果 $M > 0$,则下一行包含一个严格递增的序列,由 $M$ 个介于 $1$ 和 $299$ 之间的整数组成:表示各加速器距离赛道起点的距离(以米为单位)。
输出格式
你应该输出 $N$ 行,其中第 $K$ 行包含第 $K$ 位选手完赛所需的时间。
子任务
| 子任务 | 分数 | 附加限制 |
|---|---|---|
| 1 | 15 | $M = 1$ |
| 2 | 40 | $N \le 300$ |
| 3 | 45 | 无附加限制 |
样例
输入样例 1
2 1 2 3 4 5 6 0
输出样例 1
600 1500
输入样例 2
3 5 5 5 6 2 10 10 9 2 2 100 199
输出样例 2
1496 1799 2075
输入样例 3
5 2 2 2 6 6 6 8 8 8 9 9 9 10 10 10 2 297 298
输出样例 3
600 1790 2386 2676 2973
说明
样例 1 说明:没有加速器,两位选手都使用其默认速度。
样例 2 说明:选手 1 没有使用第一个加速器(因为当时没有人领先于他),但使用了第二个加速器,因为在此期间选手 2 超过了他。总的来说,选手 1 以每米 5 秒的速度骑行了 299 米,以每米 1 秒的速度骑行了 1 米。
选手 2 使用了第一个加速器(当时有一位选手领先于他),但没有使用第二个。总的来说,他以每米 6 秒的速度骑行了 100 米,以每米 1 秒的速度骑行了 1 米,以每米 2 秒的速度骑行了 99 米,以每米 10 秒的速度骑行了 100 米。
选手 3 在每个加速器后都以最大速度骑行了 2 米。总的来说,他以每米 10 秒的速度骑行了 100 米,以每米 1 秒的速度骑行了 2 米,以每米 9 秒的速度骑行了 97 米,以每米 1 秒的速度骑行了 2 米,以每米 2 秒的速度骑行了 99 米。
样例 3 说明:在靠近赛道终点的两个加速器中,选手 1 没有使用任何一个。选手 2 两个都使用了(每次持续 1 米),然后以其默认速度又骑行了 1 米。选手 3 使用了第一个加速器(持续 2 米),然后以其默认速度又骑行了 1 米。选手 4 和选手 5 利用第一个加速器的额外动力一直骑行到了终点。