#include <bits/stdc++.h>
using namespace std;
const long long INF = 200000000000000LL;
long long dp[305][305], pri[305][305];
long long n, m, k;
long long cnt(long long pos, long long taken) {
  if (taken <= 0) return 0;
  if (pos == 0) return INF;
  long long &res = dp[pos][taken];
  if (res != -1) return res;
  res = cnt(pos - 1, taken);
  for (long long i = 1; i <= pos; i++)
    res = min(res, pri[i][pos] + cnt(i - 1, taken - pos + i - 1));
  return res;
}
int main() {
  long long i, j, p, q, x, y;
  for (i = 0; i < 305; i++) {
    for (j = 0; j < 305; j++) pri[i][j] = INF;
  }
  cin >> n >> m >> k;
  while (m--) {
    long long l, r, c;
    scanf("%I64d %I64d %I64d", &l, &r, &c);
    for (i = l; i <= r; i++) pri[l][i] = min(pri[l][i], c);
  }
  for (i = 1; i <= n; i++) {
    for (j = n; j; j--)
      pri[i][j] = min(pri[i][j], min(pri[i - 1][j], pri[i][j + 1]));
  }
  memset(dp, -1, sizeof(dp));
  p = cnt(n, k);
  if (p >= INF) p = -1;
  cout << p << endl;
  return 0;
}
