#P2918. Watching Fireworks is Fun

Watching Fireworks is Fun

题目描述

一个节日将在城镇的主街道上举行。主街道被划分为 nn 个区域,这些区域从左到右依次编号为 11nn。相邻区域之间的距离为 11 单位长度。

节日期间将发射 mm 个烟花。第 ii 次(1im1≤i≤m)发射将在时间 tit_i 于区域 aia_i 进行。如果你在第 ii 次发射时位于区域 xx1xn1≤x≤n),你将获得幸福值 biaixb_i-|a_i-x|(注意幸福值可能为负数)。

你可以在单位时间间隔内移动最多 dd 单位长度,但禁止移动到主街道之外。你可以在初始时刻(时间等于 11 时)处于任意位置,目标是最大化观看烟花获得的总幸福值。求可能的最大总幸福值。

注意多个烟花可能在同一时间发射。

输入格式

第一行包含三个整数 nnmmdd1n1500001≤n≤1500001m3001≤m≤3001dn1≤d≤n)。

接下来 mm 行,每行包含三个整数 aia_ibib_itit_i1ain1≤a_i≤n1bi1091≤b_i≤10^91ti1091≤t_i≤10^9)。第 ii 行描述第 ii 次发射的信息。

保证满足 titi+1t_i≤t_{i+1}1im1≤i≤m)的条件。

输出格式

输出一个整数,表示观看所有烟花所能获得的最大幸福值总和。

输入数据 1

50 3 1
49 1 1
26 1 4
6 1 10

输出数据 1

-31

输入数据 2

10 2 1
1 1000 4
9 1000 4

输出数据 2

1992