#include <bits/stdc++.h>
using namespace std;
int INP, AM, REACHEOF;
const int BUFSIZE = (1 << 12) + 17;
char BUF[BUFSIZE + 1], *inp = BUF;
int n, m, k;
long long c[311][311], f[311][311];
inline void update(long long &a, long long b) {
  if (b < 0) return;
  if (a < 0)
    a = b;
  else
    a = min(a, b);
}
int main() {
  ios ::sync_with_stdio(false);
  while (cin >> n >> m >> k) {
    memset(c, -1, sizeof c);
    memset(f, -1, sizeof f);
    for (int i = (1), _b = (m); i <= _b; i++) {
      int l, r, cost;
      cin >> l >> r >> cost;
      for (int x = (l), _b = (r); x <= _b; x++) update(c[x][r], cost);
    }
    f[0][0] = 0;
    for (int i = (1), _b = (n); i <= _b; i++)
      for (int j = (0), _b = (n); j <= _b; j++) {
        update(f[i][j], f[i - 1][j]);
        for (int l = (1), _b = (i); l <= _b; l++)
          if (c[l][i] >= 0) {
            int can = i - l + 1;
            if (can <= j && f[l - 1][j - can] >= 0)
              update(f[i][j], f[l - 1][j - can] + c[l][i]);
          }
      }
    long long res = -1;
    for (int x = (k), _b = (n); x <= _b; x++) update(res, f[n][x]);
    cout << res << endl;
  }
  return 0;
}
