#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 1000000000000000000
int n;
int main(){
ll m, k, l, r, c;
cin>>n>>m>>k;
vector<vector<ll>> ra;
for (int i = 1; i <= m; i++){
cin>>l>>r>>c;
ra.push_back({r, l, c, i});
}
ra.push_back({1, 1, 0, 0});
m++;
sort(ra.begin(), ra.end());
vector<vector<int>> v(m + 1);
for (int i = 0; i < m; i++){
for (int j = i + 1; j < m; j++){
if (ra[i][0] <= ra[j][1]) v[ra[j][3]].push_back(i);
}
}
vector<vector<ll>> dp(m + 1, vector<ll>(k + 1, INF)), co(n + 1, vector<ll>(n + 1, 0));
for (int i = 0; i < m; i++){
co[ra[i][1]][ra[i][0]] += ra[i][2];
}
for (int i = n; i >= 1; i--){
for (int j = i + 1; j <= n; j++){
co[i][j] = (co[i][j] + co[i + 1][j] + co[i][j - 1] - co[i + 1][j - 1]);
}
}
vector<int> fr(m + 1, 0);
dp[0][0] = 0;
for (int i = 1; i <= k; i++){
fr.assign(m + 1, 0);
for (auto &el : ra){
int ind = el[3];
dp[ind][i] = min(dp[ind][i], dp[ind][i - 1]);
if (ind == 0) continue;
while (fr[ind] + 1 < v[ind].size()){
ll val = dp[ra[v[ind][fr[ind]]][3]][i - 1] + co[ra[v[ind][fr[ind]]][0]][el[0] - 1];
ll val2 = dp[ra[v[ind][fr[ind] + 1]][3]][i - 1] + co[ra[v[ind][fr[ind] + 1]][0]][el[0] - 1];
if (val < val2) break;
fr[ind]++;
}
dp[ind][i] = min(dp[ind][i], dp[ra[v[ind][fr[ind]]][3]][i - 1] + co[ra[v[ind][fr[ind]]][0]][el[0] - 1]);
}
}
ll ans = INF;
for (int i = 0; i < m; i++){
ll co = 0;
for (int j = i + 1; j < m; j++){
if (ra[i][0] <= ra[j][1]) co += ra[j][2];
}
for (int j = 0; j <= k; j++){
ans = min(ans, dp[ra[i][3]][j] + co);
}
}
cout<<ans;
}