#include <bits/stdc++.h>
const int dx[] = {0, -1, 0, 1, 1, 1, -1, -1};
const int dy[] = {1, 0, -1, 0, 1, -1, 1, -1};
const int OO = 0x3f3f3f3f, N = 100000 + 5, mod = 1e9 + 7;
using namespace std;
void run() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
}
long long dp[305][305];
long long cost[305][305];
int n, m, k;
long long solve(int idx, int rem) {
  if (rem <= 0) return 0;
  if (idx == n + 1) return 0x3f3f3f3f3f3f3f3fLL;
  long long &ret = dp[idx][rem];
  if (~ret) return ret;
  ret = solve(idx + 1, rem);
  for (int r = idx; r <= n; ++r) {
    ret = min(ret, solve(r + 1, rem - (r - idx + 1)) + cost[idx][r]);
  }
  return ret;
}
int main() {
  run();
  cin >> n >> m >> k;
  memset(dp, -1, sizeof(dp));
  memset(cost, 0x3f3f3f3f3f3f3f3fLL, sizeof(cost));
  for (int i = 0; i < m; ++i) {
    int l, r;
    long long c;
    cin >> l >> r >> c;
    for (int j = l; j <= r; ++j) {
      cost[j][r] = min(cost[j][r], c);
    }
  }
  for (int i = 1; i <= n; ++i) {
    for (int j = n - 1; j > 0; --j) {
      cost[i][j] = min(cost[i][j], cost[i][j + 1]);
    }
  }
  long long ans = solve(0, k);
  if (ans == 0x3f3f3f3f3f3f3f3fLL) ans = -1;
  cout << ans << '\n';
}
