#include <bits/stdc++.h>
using namespace std;
vector<pair<int, long long> > a[301];
long long dp[301][301];
long long curMax[301][301];
long long f[301][301];
int main() {
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < m; i++) {
    int l, r;
    long long c;
    scanf("%d%d%lld", &l, &r, &c);
    if (f[l][r] != 0)
      f[l][r] = (((f[l][r]) > (c)) ? (c) : (f[l][r]));
    else
      f[l][r] = c;
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= i; j++)
      if (f[j][i] != 0) a[i].push_back(make_pair(j, f[j][i]));
  dp[0][0] = 0;
  for (int i = 0; i <= n; i++) {
    for (int j = 1; j <= n; j++) dp[i][j] = -1;
    dp[i][0] = 0;
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) {
      dp[i][j] = dp[i - 1][j];
      for (int t = 0; t < a[i].size(); t++) {
        int l = a[i][t].first;
        long long c = a[i][t].second;
        if (dp[i][j] != -1 && c >= dp[i][j]) continue;
        int hM = i - l + 1;
        if (dp[l - 1][(((j - hM) > (0)) ? (j - hM) : (0))] != -1) {
          if (dp[i][j] != -1)
            dp[i][j] =
                (((dp[i][j]) >
                  (dp[l - 1][(((j - hM) > (0)) ? (j - hM) : (0))] + c))
                     ? (dp[l - 1][(((j - hM) > (0)) ? (j - hM) : (0))] + c)
                     : (dp[i][j]));
          else
            dp[i][j] = dp[l - 1][(((j - hM) > (0)) ? (j - hM) : (0))] + c;
        }
        for (int tmp = l; tmp < i; tmp++)
          if (dp[tmp][(((j - (i - tmp)) > (0)) ? (j - (i - tmp)) : (0))] !=
              -1) {
            if (dp[i][j] != -1)
              dp[i][j] =
                  (((dp[i][j]) >
                    (dp[tmp]
                       [(((j - (i - tmp)) > (0)) ? (j - (i - tmp)) : (0))] +
                     c))
                       ? (dp[tmp][(((j - (i - tmp)) > (0)) ? (j - (i - tmp))
                                                           : (0))] +
                          c)
                       : (dp[i][j]));
            else
              dp[i][j] =
                  dp[tmp][(((j - (i - tmp)) > (0)) ? (j - (i - tmp)) : (0))] +
                  c;
          }
      }
    }
  cout << dp[n][k];
}
