#include <bits/stdc++.h>
using namespace std;
int dp[1501];
struct node {
int t, a, b;
} work[1001];
int main() {
// freopen("work.in", "r", stdin);
// freopen("work.out", "w", stdout);
int n, m = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> work[i].t >> work[i].a >> work[i].b;
m = max(m, work[i].b);
}
memset(dp, 0x3f3f3f3f, sizeof dp);
dp[0] = 0;
for (int i = 1; i <= m; i++) {
int f = 0;
for (int j = 1; j <= n; j++) {
if (i - work[j].t >= work[j].a && work[j].b >= i) dp[i] = min(dp[i], dp[i - work[j].t] + work[j].t), f = 1;
}
if (!f) dp[i] = min(dp[i], dp[i - 1]);
}
cout << dp[m];
return 0;
}
调对必关