修改
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

scimoon 有一个长度为 n 的数列

一个不幸的事实是,这个数列里的数非常地混乱,scimoon 想让它变得工整

scimoon 现在有 m 种操作,第 i 种操作可以把 之间的数全部加一或减一,但是,要使用它就必须先支付 w_i 的费用,然后就可以无限制次数地使用这种操作

scimoon 想要知道,对于任意长度为 n 的数列,是否存在一种选择操作的方式,可以通过使用这些操作,使得所有数列中的数都等于 0

scimoon 并不富有,因此如果有解,他还想要知道最少支付多少费用

输入描述:

第一行两个整数 n,m,表示数列长度和操作个数

接下来 m 行,每行三个整数 l_i,r_i,w_i,意义见题目描述

输出描述:

如果不存在一种选择操作的方式,输出 -1 

否则输出最少支付的费用
示例1

输入

复制
2 3
1 2 3
1 1 100
2 2 101

输出

复制
103
示例2

输入

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

输出

复制
-1

备注: