//poj 1201 Intervals(1716为简单版) 差分约束
/*
题解: 第一道差分约束,转化为求最长路径。
引用:http://www.cppblog.com/initiate/archive/2010/04/03/111530.aspx
*/
#include <iostream>
#include <vector>
using namespace std;
const int size = 50000;
const int inf = 1<<28;
int n,m;
struct node
{
int adj;
int len;
node(){}
node(int a,int l):adj(a),len(l){}
};
vector<node> e[size+10];
int mark[size+10],wt[size+10],Q[size*20+10];
void spfa(int l,int r)
{
int head=0,tail=0;
Q[tail++]=l;
memset(mark,0,sizeof(mark));
mark[l]=1;
for (int i=l;i<=r;i++) wt[i]=-inf;
wt[l]=0;
while (head<tail)
{
int k=Q[head++];
mark[k]=0;
for (int i=0;i<e[k].size();i++)
{
int j=e[k][i].adj;
if (wt[j]<wt[k]+e[k][i].len)
{
wt[j]=wt[k]+e[k][i].len;
if (!mark[j]){
Q[tail++]=j;
mark[j]=1;
}
}
}
}
}
int main()
{
while (scanf("%d",&n)!=EOF)
{
int a,b,c;
int l=inf,r=0;
for(int i=0;i<n;i++)
{
scanf("%d%d%d",&a,&b,&c);
if (a>b) swap(a,b);
e[a].push_back(node(b+1,c));
l=min(l,a);
r=max(r,b+1);
}
for (int i=l;i<=r;i++)
{
e[i].push_back(node(i+1,0));
e[i+1].push_back(node(i,-1));
}
spfa(l,r);
printf("%d/n",wt[r]);
for (int i=l;i<=r;i++) e[i].clear();
}
system("pause");
return 0;
}