#include <bits/stdc++.h>
const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, -1, 0, 1};
using namespace std;
int a[310][310];
int N, M, K;
long long f[310][310];
void init() {
  int p, q, c;
  memset(a, -1, sizeof(a));
  scanf("%d%d%d", &N, &M, &K);
  for (int i = 1; i <= M; ++i) {
    scanf("%d%d%d", &p, &q, &c);
    for (int j = p; j <= q; ++j)
      if (a[p][j] == -1 || a[p][j] > c) a[p][j] = c;
  }
}
void dp() {
  memset(f, -1, sizeof(f));
  f[0][0] = 0;
  for (int i = 1; i <= N; ++i)
    for (int j = 0; j <= i; ++j) {
      if ((f[i][j] == -1 || f[i][j] > f[i - 1][j]) && f[i - 1][j] > -1)
        f[i][j] = f[i - 1][j];
      for (int k = 0; k < j; ++k)
        if (f[i - k - 1][j - k - 1] > -1 && a[i - k][i] > -1)
          if (f[i][j] == -1 || f[i][j] > f[i - k - 1][j - k - 1] + a[i - k][i])
            f[i][j] = f[i - k - 1][j - k - 1] + a[i - k][i];
    }
}
void output() {
  long long ans = -1;
  for (int i = K; i <= N; ++i) {
    if (f[N][i] > -1 && (f[N][i] < ans || ans == -1)) {
      ans = f[N][i];
    }
  }
  cout << ans << endl;
}
int main() {
  init();
  dp();
  output();
  return 0;
}
