#include <bits/stdc++.h>
#define el '\n'
#define fi first
#define sec second
#define pb push_back
#define ll long long
#define sz(v) (int)(v).size()
#define all(v) (v).begin(),(v).end()
using namespace std;
const int MAX_N = 1e5 + 1;
struct Segment_Tree{
ll tree[4 * MAX_N + 5];
void update(int id, int l, int r, int pos, ll val){
if(l == r){
tree[id] = min(tree[id], val);
return;
}
int m = (l + r) / 2;
if(pos <= m) update(id * 2, l, m, pos, val);
else update(id * 2 + 1, m + 1, r, pos, val);
tree[id] = min(tree[id * 2], tree[id * 2 + 1]);
}
ll query(int id, int tl, int tr, int l, int r){
if(tl > tr || l > r || r < tl || tr < l) return 1e18;
if(l <= tl && tr <= r) return tree[id];
int tm = (tl + tr) / 2;
return min(query(id * 2, tl, tm, l, r),
query(id * 2 + 1, tm + 1, tr, l, r));
}
}seg;
struct Hao{
int in, out, cost;
bool operator <(const Hao &other){
if(in != other.in) return in < other.in;
return in < other.in; // sort theo in
}
};
Hao a[MAX_N + 5];
ll dp[MAX_N + 5];
int n, m;
// mình không thích thời gian bắt đầu từ 0 nên mình sẽ cộng 1 ở mọi chỗ để thời gian bắt đầu từ 1(không làm cũng được)
void Input(){
cin >> n >> m;
n++;
for(int i = 1; i <= m; i++){
cin >> a[i].in >> a[i].out >> a[i].cost;
a[i].in++;
a[i].out = min(a[i].out + 1, n); // sẽ có 1 số cái lớn hơn n nên phải lấy min(a[i].out, n)
}
sort(a + 1, a + m + 1);
}
void Solve(){
// khởi tạo ban đầu mọi thứ lớn vô cùng
memset(dp, 0x3f, sizeof(dp));
memset(seg.tree, 0x3f, sizeof(seg.tree));
//gán thời gian ban đầu 1 là 0
seg.update(1, 1, n, 1, 0);
dp[1] = 0;
for(int i = 1; i <= m; i++){
//tìm dp bé nhất trong đoạn a[i].in -> a[i].out
//lấy từ a[i].in chứ không phải a[i].in - 1 là do tất cả các đoạn phải nối nhau
// ví dụ như [3, 4] và [5, 6] thì không được nhưng [3, 4] và [4, 6] mới được
ll best = seg.query(1, 1, n, a[i].in, a[i].out);
//tính dp
dp[a[i].out] = min(dp[a[i].out], best + a[i].cost);
//update lại
seg.update(1, 1, n, a[i].out, dp[a[i].out]);
}
//cout kết quả
cout << dp[n];
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
Input();
Solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGVsICdcbicKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlYyBzZWNvbmQKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBzeih2KSAoaW50KSh2KS5zaXplKCkKI2RlZmluZSBhbGwodikgKHYpLmJlZ2luKCksKHYpLmVuZCgpCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWF9OID0gMWU1ICsgMTsKCnN0cnVjdCBTZWdtZW50X1RyZWV7CiAgICBsbCB0cmVlWzQgKiBNQVhfTiArIDVdOwoKICAgIHZvaWQgdXBkYXRlKGludCBpZCwgaW50IGwsIGludCByLCBpbnQgcG9zLCBsbCB2YWwpewogICAgICAgIGlmKGwgPT0gcil7CiAgICAgICAgICAgIHRyZWVbaWRdID0gbWluKHRyZWVbaWRdLCB2YWwpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpbnQgbSA9IChsICsgcikgLyAyOwogICAgICAgIGlmKHBvcyA8PSBtKSB1cGRhdGUoaWQgKiAyLCBsLCBtLCBwb3MsIHZhbCk7CiAgICAgICAgZWxzZSB1cGRhdGUoaWQgKiAyICsgMSwgbSArIDEsIHIsIHBvcywgdmFsKTsKCiAgICAgICAgdHJlZVtpZF0gPSBtaW4odHJlZVtpZCAqIDJdLCB0cmVlW2lkICogMiArIDFdKTsKICAgIH0KCiAgICBsbCBxdWVyeShpbnQgaWQsIGludCB0bCwgaW50IHRyLCBpbnQgbCwgaW50IHIpewogICAgICAgIGlmKHRsID4gdHIgfHwgbCA+IHIgfHwgciA8IHRsIHx8IHRyIDwgbCkgcmV0dXJuIDFlMTg7CiAgICAgICAgaWYobCA8PSB0bCAmJiB0ciA8PSByKSByZXR1cm4gdHJlZVtpZF07CgogICAgICAgIGludCB0bSA9ICh0bCArIHRyKSAvIDI7CiAgICAgICAgcmV0dXJuIG1pbihxdWVyeShpZCAqIDIsIHRsLCB0bSwgbCwgciksCiAgICAgICAgICAgICAgICAgICBxdWVyeShpZCAqIDIgKyAxLCB0bSArIDEsIHRyLCBsLCByKSk7CiAgICB9Cn1zZWc7CgpzdHJ1Y3QgSGFvewogICAgaW50IGluLCBvdXQsIGNvc3Q7CgogICAgYm9vbCBvcGVyYXRvciA8KGNvbnN0IEhhbyAmb3RoZXIpewogICAgICAgIGlmKGluICE9IG90aGVyLmluKSByZXR1cm4gaW4gPCBvdGhlci5pbjsKICAgICAgICByZXR1cm4gaW4gPCBvdGhlci5pbjsgLy8gc29ydCB0aGVvIGluCiAgICB9Cn07CgpIYW8gYVtNQVhfTiArIDVdOwpsbCBkcFtNQVhfTiArIDVdOwppbnQgbiwgbTsKCi8vIG3DrG5oIGtow7RuZyB0aMOtY2ggdGjhu51pIGdpYW4gYuG6r3QgxJHhuqd1IHThu6sgMCBuw6puIG3DrG5oIHPhur0gY+G7mW5nIDEg4bufIG3hu41pIGNo4buXIMSR4buDIHRo4budaSBnaWFuIGLhuq90IMSR4bqndSB04burIDEoa2jDtG5nIGzDoG0gY8WpbmcgxJHGsOG7o2MpCnZvaWQgSW5wdXQoKXsKICAgIGNpbiA+PiBuID4+IG07CiAgICBuKys7CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBtOyBpKyspewogICAgICAgIGNpbiA+PiBhW2ldLmluID4+IGFbaV0ub3V0ID4+IGFbaV0uY29zdDsKICAgICAgICBhW2ldLmluKys7CiAgICAgICAgYVtpXS5vdXQgPSBtaW4oYVtpXS5vdXQgKyAxLCBuKTsgLy8gc+G6vSBjw7MgMSBz4buRIGPDoWkgbOG7m24gaMahbiBuIG7Dqm4gcGjhuqNpIGzhuqV5IG1pbihhW2ldLm91dCwgbikKICAgIH0KICAgIHNvcnQoYSArIDEsIGEgKyBtICsgMSk7Cn0KCnZvaWQgU29sdmUoKXsKCS8vIGto4bufaSB04bqhbyBiYW4gxJHhuqd1IG3hu41pIHRo4bupIGzhu5tuIHbDtCBjw7luZwogICAgbWVtc2V0KGRwLCAweDNmLCBzaXplb2YoZHApKTsKICAgIG1lbXNldChzZWcudHJlZSwgMHgzZiwgc2l6ZW9mKHNlZy50cmVlKSk7CiAgICAKICAgIC8vZ8OhbiB0aOG7nWkgZ2lhbiBiYW4gxJHhuqd1IDEgbMOgIDAKICAgIHNlZy51cGRhdGUoMSwgMSwgbiwgMSwgMCk7CiAgICBkcFsxXSA9IDA7CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBtOyBpKyspewogICAgCS8vdMOsbSBkcCBiw6kgbmjhuqV0IHRyb25nIMSRb+G6oW4gYVtpXS5pbiAtPiBhW2ldLm91dAogICAgCS8vbOG6pXkgdOG7qyBhW2ldLmluIGNo4bupIGtow7RuZyBwaOG6o2kgYVtpXS5pbiAtIDEgbMOgIGRvIHThuqV0IGPhuqMgY8OhYyDEkW/huqFuIHBo4bqjaSBu4buRaSBuaGF1CiAgICAJLy8gdsOtIGThu6UgbmjGsCBbMywgNF0gdsOgIFs1LCA2XSB0aMOsIGtow7RuZyDEkcaw4bujYyBuaMawbmcgWzMsIDRdIHbDoCBbNCwgNl0gbeG7m2kgxJHGsOG7o2MKICAgICAgICBsbCBiZXN0ID0gc2VnLnF1ZXJ5KDEsIDEsIG4sIGFbaV0uaW4sIGFbaV0ub3V0KTsKICAgICAgICAKICAgICAgICAvL3TDrW5oIGRwCiAgICAgICAgZHBbYVtpXS5vdXRdID0gbWluKGRwW2FbaV0ub3V0XSwgYmVzdCArIGFbaV0uY29zdCk7CiAgICAgICAgCiAgICAgICAgLy91cGRhdGUgbOG6oWkKICAgICAgICBzZWcudXBkYXRlKDEsIDEsIG4sIGFbaV0ub3V0LCBkcFthW2ldLm91dF0pOwogICAgfQoKCS8vY291dCBr4bq/dCBxdeG6owogICAgY291dCA8PCBkcFtuXTsKfQoKaW50IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwoKICAgIElucHV0KCk7CiAgICBTb2x2ZSgpOwp9Cg==