#include <stdio.h>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
struct vector_entry
{
       long long vrednost;
       int kraj;
       bool operator < (vector_entry b) const
       {
            return vrednost<b.vrednost;
       }
};
vector <vector_entry> a[2010];
struct heap_entry
{
       long long vrednost;
       int ostajedo;
       bool operator < (heap_entry b) const
       {
            return vrednost<b.vrednost;
       }
};
struct interval
{
       int p,k;
       long long t;
};
interval b[20000];
int main ()
{
    FILE *f=fopen("mede.in","r");
    int n;
    fscanf(f,"%d",&n);
    for (int i=0;i<n;i++)
    {
        b[i].t=0;
        fscanf(f,"%d %d %lld",&b[i].p,&b[i].k,&b[i].t);
        vector_entry novi;novi.vrednost=b[i].t;novi.kraj=b[i].k;
        a[b[i].p].push_back(novi);
        novi.vrednost=-b[i].t;
        a[b[i].k].push_back(novi);
    }
    for (int i=0;i<2000;i++)
    {
        sort(a[i].begin(),a[i].end());
    }
    priority_queue<heap_entry> heap;
    long long res=0;
    int nepop=1;
    int nahipu=0;
    int otvoreno=0;
    for (int i=0;i<2000;i++)
    {
        if (nepop==0) nepop=1;
        int zat=0;
        vector <long long> zatv;
        for (int j=a[i].size()-1;j>=0;j--)
        {
            if (a[i][j].vrednost>0)
            {
                heap_entry novi;
                novi.vrednost=a[i][j].vrednost;
                novi.ostajedo=a[i][j].kraj;
                //printf("%lld\n",novi.vrednost);
                heap.push(novi);
                nahipu++;
                otvoreno++;
            }
            else {zat++;zatv.push_back(-a[i][j].vrednost);otvoreno--;}
            //printf("i=%d\n",i);
        }
        if (zat==0) {if (otvoreno>0)nepop++;}
        else
        {
            if (nepop>=nahipu) while (!heap.empty()) heap.pop();
            else
            {
                sort(zatv.begin(),zatv.end());
                vector <int> izbacivanja;
                int j=zatv.size()-1;
                while (nepop>0)
                {
                      //printf("%d\n",nepop);
                      heap_entry trenutni=heap.top();
                      heap.pop();
                      if (trenutni.ostajedo >=i)
                      {
                          if (trenutni.vrednost == zatv[j]) j--;
                          else
                          {
                              izbacivanja.push_back(trenutni.ostajedo);
                          }
                          nepop--;
                      }
                      else
                      {
                          res+=trenutni.vrednost;
                      }
                }
                sort(izbacivanja.begin(),izbacivanja.end());
                vector <heap_entry> vracam;
                while (!heap.empty()) {vracam.push_back(heap.top());heap.pop();}
                //for (int ii=0;ii<izbacivanja.size();ii++)printf("izbacivanja[%d]=%d\n",ii,izbacivanja[ii]);
                //printf("BZZ2");
                int vrai=0;
                int vremei=0;
                while (j>=0)
                {

                      if (zatv[j]==vracam[vrai].vrednost) {if (vremei<izbacivanja.size())vracam[vrai].ostajedo=izbacivanja[vremei];vremei++;j--;}
                      vrai++;
                }
                for(int j=vracam.size()-1;j>=0;j--)
                {
                     heap.push(vracam[j]);
                }
            }
        }
        if (nepop>=nahipu) while (!heap.empty()) heap.pop();
    }
    FILE *g=fopen("mede.out","w");
    fprintf(g,"%lld\n",res);
}
