#pragma GCC optimize("O3,inline")
#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<pair<pair<int, int>, int>> vals;
vector<vector<int>> mem;
int dp(int m, int k) {
if (k < 0) return 1e15;
if (m == vals.size() - 1) return 0;
if (mem[m][k] != -1) return mem[m][k];
int crnt = 1e15, crntv = 0;
for (int i = m + 1; i < vals.size(); i++) {
if (vals[i].first.second < vals[m].first.first) continue;
crnt = min(crnt, dp(i, k - 1) + crntv);
crntv += vals[i].second;
}
return mem[m][k] = crnt;
}
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int N, M, K, a, b, c; cin >> N >> M >> K;
for (int i = 0; i < M; i++) {
cin >> a >> b >> c; a--, b--;
vals.push_back({ {b, a}, c });
}
vals.push_back({ { -1, -1}, 0 });
sort(vals.begin(), vals.end());
vals.push_back({ { N, N}, 0 });
mem.resize(M + 1, vector<int>(K + 2, -1));
cout << dp(0, K + 1) << '\n';
}