inlineint __read() { intx(0), t(1); charo(getchar()); while (o < '0' || o > '9') { if (o == '-') t = -1; o = getchar(); } for (; o >= '0' && o <= '9'; o = getchar()) { x = (x << 1) + (x << 3) + (o ^ 48); } return x * t; }
int f[maxn][maxn][maxn]; int g[maxn][maxn];
signedmain() { int n = __read(), m = __read(); while (m--) { int w = __read(), l = __read(), r = __read(); for (int p = l; p <= r; ++p) f[p][l][r] = w; }
for (int p = 1; p <= n; ++p) for (int l = p; l >= 1; --l) for (int r = p; r <= n; ++r) f[p][l - 1][r] = max(f[p][l - 1][r], f[p][l][r]), f[p][l][r + 1] = max(f[p][l][r + 1], f[p][l][r]);
for (int r = 1; r <= n; ++r) for (int l = r; l; --l) for (int k = l; k <= r; ++k) g[l][r] = max(g[l][r], g[l][k - 1] + g[k + 1][r] + f[k][l][r]); printf ("%d\n", g[1][n]); system("pause"); }