冬奥会即将到来,熊猫先生一直在刻苦训练以参加滑雪比赛。这项比赛在高度为 $H$ 的 Rar 山上进行。每个人都可以沿着中心路径从山顶滑到山脚。为了增加难度,赛道上设置了 $N$ 个旗门,每个旗门都有相应的得分,它们位于不同的高度,且分布在中心路径的左侧或右侧。目标是从山顶滑到山脚,并通过其中的一部分旗门以获得尽可能高的得分。
第 $i$ 个旗门位于高度 $Y_i$ 处,且在中心路径右侧 $X_i$ 单位长度处。如果 $X_i$ 为负数,则表示它在中心路径的左侧。通过第 $i$ 个旗门可以获得 $S_i$ 分。你可以多次通过同一个旗门,但只有第一次通过时才能获得分数。没有两个旗门位于同一个位置。
熊猫先生希望最大化他的得分。此外,熊猫先生深知自己不是一个优秀的滑雪者,可能会漏掉一些旗门。为了避免尴尬,熊猫先生对这些旗门进行了分析,并根据坡度、积雪量等因素,给每个旗门评定了一个易行度 $E_i$(评分越高越容易)。
具体来说,熊猫先生计算出,如果满足 $\max(|X_j - X_i|, Y_i - Y_j) \le E_i$ 且 $Y_i \ge Y_j$,他就可以从第 $i$ 个旗门移动到第 $j$ 个旗门。此外,从山顶可以到达任何旗门,从任何旗门也可以到达山脚。
面对下山时繁多的可能路径,熊猫先生感到有些无从下手,他需要你的帮助来找到一条能让他获得最大得分的路径。
输入格式
你的程序必须从标准输入中读取数据。
输入的第一行包含两个正整数 $N$ 和 $H$。
接下来的 $N$ 行,每行包含 4 个整数。其中第 $(i + 1)$ 行表示 $X_i, Y_i, S_i, E_i$。
输出格式
你的程序必须向标准输出输出一行,包含一个整数,表示熊猫先生可以获得的最大得分。
样例
输入样例 1
5 5 0 5 5 1 3 4 4 3 -2 3 3 2 1 1 4 4 -1 2 3 1
输出样例 1
8
说明
熊猫先生只有 3 条可选的路径:
- 山顶 $\to (0, 5) \to$ 山脚,得分:$5$
- 山顶 $\to (3, 4) \to (1, 1) \to$ 山脚,得分:$4 + 4 = 8$
- 山顶 $\to (-2, 3) \to (-1, 2) \to$ 山脚,得分:$3 + 3 = 6$
因此,最佳得分是 8。
子任务
每个测试点的最大运行时间为 1.0 秒。你的程序将在以下输入实例集上进行测试:
| 子任务 | 分值 | $N$ | 其他限制 |
|---|---|---|---|
| 1 | 7 | $1 \le N \le 300$ | 对于所有 $i$,$E_i = 200000$ |
| 2 | 8 | $1 \le N \le 300$ | 对于所有 $i$,$X_i = 0$;对于所有 $i, j$,$E_i = E_j$ |
| 3 | 11 | $1 \le N \le 300$ | 对于所有 $i \neq j$,$Y_i \neq Y_j$ |
| 4 | 13 | $1 \le N \le 2000$ | 对于所有 $i \neq j$,$Y_i \neq Y_j$ |
| 5 | 15 | $1 \le N \le 50000$ | 对于所有 $i \neq j$,$Y_i \neq Y_j$;对于所有 $i, j$,$E_i = E_j$ |
| 6 | 13 | $1 \le N \le 50000$ | 对于所有 $i, j$,$E_i = E_j$ |
| 7 | 16 | $1 \le N \le 50000$ | 对于所有 $i \neq j$,$Y_i \neq Y_j$ |
| 8 | 17 | $1 \le N \le 200000$ | 对于所有 $i \neq j$,$Y_i \neq Y_j$ |
对于所有测试用例:$-50000 \le X_i \le 50000$,$1 \le Y_i \le H \le 200000$,$1 \le S_i \le 10^6$,$1 \le E_i \le 200000$。