#include <stdio.h>
#include <algorithm>
using namespace std;

struct meda {
    long long p,k;
    long long v;
} m[20222];

bool cmp(meda a, meda b) {
    return (a.k < b.k || (a.k==b.k && a.p < b.p) || (a.k==b.k && a.p==b.p && a.v<b.v));
}

bool cmp2(meda a, meda b) {
    return (a.p < b.p || (a.p==b.p && a.k < b.k) || (a.k==b.k && a.p==b.p && a.v<b.v));
}

long long max(long long a, long long b) {
    if (a>b) return a; else return b;
}

long long d[5][2222];

int main() {

    long long n,i,j,s,p,q,pret,maxk;
    FILE *ff=fopen("mede.in","r"), *gg=fopen("mede.out","w");

    fscanf(ff,"%lld", &n);
    maxk=0; s=0;
    for(i=1; i<=n; i++) {
        fscanf(ff,"%lld%lld%lld", &m[i].p, &m[i].k, &m[i].v);
        if (m[i].k > maxk) maxk=m[i].k;
        s+=m[i].v;
    }
    sort(m+1,m+n+1,cmp);

    for(i=1; i<=maxk; i++) d[0][i]=0;

    for(i=1; i<=n; i++) {
       q=i%2; pret=1-q;
       for(j=1; j<m[i].p; j++) d[q][j]=d[pret][j];
       for(j=m[i].p; j<=m[i].k; j++) d[q][j]=max(d[pret][j-1]+m[i].v, d[pret][j]);
       if (d[q][m[i].k] > d[pret][m[i].k]) p=d[q][m[i].k] - d[pret][m[i].k]; else p=0;
       for(j=m[i].k+1; j<=maxk; j++) d[q][j]=max(d[q][j-1],d[pret][j]+p);
    }

    fprintf(gg,"%lld\n", s - d[n%2][maxk]);

    fclose(ff); fclose(gg);
    return 0;
}
