#include <bits/stdc++.h>
using namespace std;
unsigned long long cost[310][310];
unsigned long long dp[310][310];
int ind = 0;
int main() {
  int n, m, k;
  scanf("%d %d %d", &n, &m, &k);
  memset(cost, 0x1f, sizeof(cost));
  memset(dp, 0x1f, sizeof(dp));
  for (int i = 1; i <= m; ++i) {
    int l, r;
    unsigned long long c;
    scanf("%d %d", &l, &r);
    cin >> c;
    for (int j = l; j <= r; ++j)
      cost[j][r] = (((cost[j][r]) < (c)) ? (cost[j][r]) : (c));
  }
  for (int i = 0; i <= 300; ++i) {
    dp[i][0] = 0;
    cost[i][0] = 0;
  }
  if (false || false) {
    cout << "\t";
    for (int i = 1; i <= n; ++i) {
      cout << i << "\t";
    }
    cout << "\n";
    for (int i = 1; i <= n; ++i) {
      cout << i << "\t";
      for (int j = 1; j <= n; ++j) {
        if (cost[i][j] == 0x1f1f1f1f1f1f1f1fu)
          cout << "INF\t";
        else
          cout << cost[i][j] << "\t";
      }
      cout << "\n";
    }
  }
  for (long long i = 1; i <= n; i++)
    for (long long j = 1; j <= k && j <= i; j++) {
      dp[i][j] = dp[i - 1][j];
      for (long long kk = 1; kk <= j; kk++)
        if (dp[i][j] > dp[i - kk][j - kk] + cost[i - kk + 1][i])
          dp[i][j] = dp[i - kk][j - kk] + cost[i - kk + 1][i];
    }
  if (false || false) {
    cout << "\t";
    for (int i = 1; i <= n; ++i) {
      cout << i << "\t";
    }
    cout << "\n";
    for (int i = 1; i <= n; ++i) {
      cout << i << "\t";
      for (int j = 1; j <= n; ++j) {
        if (dp[i][j] == 0x1f1f1f1f1f1f1f1fu)
          cout << "INF\t";
        else
          cout << dp[i][j] << "\t";
      }
      cout << "\n";
    }
  }
  if (dp[n][k] == 0x1f1f1f1f1f1f1f1fu) {
    printf("-1\n");
  } else {
    printf("%I64d\n", dp[n][k]);
  }
  return 0;
}
