#include <bits/stdc++.h>
using namespace std;
const int MAX = 305;
const long long oo = 1LL << 60;
int N, M, K;
vector<pair<int, int> > L[MAX];
long long cost[MAX];
long long dp[MAX][MAX];
int main() {
  scanf("%d%d%d", &N, &M, &K);
  while (M--) {
    int l, r, c;
    scanf("%d%d%d", &l, &r, &c);
    L[r].push_back(pair<int, int>(l, c));
  }
  for (int i = 0; i <= N; i++)
    for (int j = 0; j <= N; j++) dp[i][j] = oo;
  dp[0][0] = 0;
  for (int i = 1; i <= N; i++) {
    for (int k = 0; k <= i; k++) {
      for (int j = 1; j <= i; j++) cost[j] = oo;
      for (int j = 0; j < (int)L[i].size(); j++)
        cost[L[i][j].first] =
            min(cost[L[i][j].first], (long long)L[i][j].second);
      for (int j = 2; j <= i; j++) cost[j] = min(cost[j], cost[j - 1]);
      dp[i][k] = dp[i - 1][k];
      for (int j = i - 1; j >= 0 && k - (i - j) >= 0; j--) {
        if (cost[j + 1] == oo) break;
        dp[i][k] = min(dp[i][k], dp[j][k - (i - j)] + cost[j + 1]);
      }
    }
  }
  long long ans = oo;
  for (int k = K; k <= N; k++) ans = min(ans, dp[N][k]);
  if (ans < oo)
    cout << ans << endl;
  else
    cout << "-1\n";
  return 0;
}
