#include <bits/stdc++.h>
using namespace std;
long long n, m, k;
long long dp[333][333], cost[333][333];
const long long INF = 999999999999999;
long long mn(long long a, long long b) { return a < b ? a : b; }
long long f(int idx, int filled) {
  if (idx > n) return (filled >= k) ? 0 : INF;
  if (dp[idx][filled] != -1) return dp[idx][filled];
  long long ans = f(idx + 1, filled);
  for (int j = idx; j <= n; j++)
    ans = min(ans, f(j + 1, filled + (j - idx + 1)) + cost[idx][j]);
  return dp[idx][filled] = ans;
}
int main() {
  cin >> n >> m >> k;
  long long a, b, c;
  memset(dp, -1, sizeof dp);
  for (int i = 0; i < 333; i++)
    for (int j = 0; j < 333; j++) cost[i][j] = INF;
  for (int i = 0; i < m; i++) {
    cin >> a >> b >> c;
    cost[a][b] = mn(cost[a][b], c);
  }
  for (int i = 1; i <= n; i++)
    for (int j = i; j <= n; j++)
      for (int k = i; k <= j; k++) cost[i][k] = mn(cost[i][k], cost[i][j]);
  cout << ((f(0, 0) < INF) ? f(0, 0) : -1) << endl;
}
