小松鼠吃松果
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

小松鼠站在地面上,地面上长了棵松树从左到右排成一排,不妨用一维坐标表示每棵松树的位置,第棵松树的位置为。每棵松树分为树干部分和树叶部分,树叶部分会掉落果实,第棵松树树干的长度为
个松果会从松树上掉落,第个松果会在时刻在第棵松树的树叶上掉落,价值是。小松鼠最开始可以站在任意位置,它单位时间内的移动速度为,松果单位时间内掉落的速度为,如果一个松果掉落到地面,并且小松鼠正好站在松果掉落的地方,小松鼠就会立即把松果吃掉,否则0.5秒后松果就会消失,小松鼠吃坚果不消耗时间。
小松鼠想最大化吃到的松果的价值,但是小松鼠不知道怎么才能吃到,于是这个问题就交个聪明的你了。

输入描述:

第一行两个整数
第二行个整数
第三行个整数
接下来行每行三个整数

输出描述:

输出一个整数表示小松鼠能吃到的松果的总价值最大是多少。
示例1

输入

复制
3 3
1 2 3
1 2 3
1 3 5
2 2 4
3 1 3

输出

复制
5

备注: