#include<stdio.h>
#define max(x,y) (((x)>(y))?(x):(y))
#define MAX_N 50000+16
struct node
{
int a,b,c;
}d[MAX_N];
int n,size,bit[MAX_N],vis[MAX_N];
void qsort(int l,int r)
{
int i,j;
struct node x;
if(l<r)
{
i=l;
j=r;
x=d[i];
while(i<j)
{
while(i<j&&d[j].b>=x.b)
j--;
if(i<j)
d[i++]=d[j];
while(i<j&&d[i].b<x.b)
i++;
if(i<j)
d[j--]=d[i];
}
d[i]=x;
qsort(l,i-1);
qsort(i+1,r);
return ;
}
}
void add(int i,int x)
{
while(i<=size)
{
bit[i]+=x;
i+=i&-i;
}
}
int sum(int i)
{
int ans=0;
while(i>0)
{
ans+=bit[i];
i-=i&-i;
}
return ans;
}
int main()
{
int i,res=0,st,num,tail;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d%d",&d[i].a,&d[i].b,&d[i].c);
size=max(max(d[i].a,d[i].b),size);
}
qsort(0,n-1);
for(i=0;i<n;i++)
{
if(d[i].a>1)
st=sum(d[i].b)-sum(d[i].a-1);
else
st=sum(d[i].b);
num=d[i].c-st;
if(num>0)
{
res+=num;
tail=d[i].b;
while(num)
{
if(!vis[tail])
{
add(tail,1);
vis[tail]=1;
num--;
}
tail--;
}
}
}
printf("%d\n",res);
}
#include<stdio.h>
#define max(x,y) (((x)>(y))?(x):(y))
#define MAX_N 10000+16
struct node
{
int a,b;
}d[MAX_N];
int n,size,bit[MAX_N],vis[MAX_N];
void qsort(int l,int r)
{
int i,j;
struct node x;
if(l<r)
{
i=l;
j=r;
x=d[i];
while(i<j)
{
while(i<j&&d[j].b>=x.b)
j--;
if(i<j)
d[i++]=d[j];
while(i<j&&d[i].b<x.b)
i++;
if(i<j)
d[j--]=d[i];
}
d[i]=x;
qsort(l,i-1);
qsort(i+1,r);
return ;
}
}
void add(int i,int x)
{
while(i<=size)
{
bit[i]+=x;
i+=i&-i;
}
}
int sum(int i)
{
int ans=0;
while(i>0)
{
ans+=bit[i];
i-=i&-i;
}
return ans;
}
int main()
{
int i,res=0,st,num,tail;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&d[i].a,&d[i].b);
size=max(max(d[i].a,d[i].b),size);
}
qsort(0,n-1);
for(i=0;i<n;i++)
{
if(d[i].a>1)
st=sum(d[i].b)-sum(d[i].a-1);
else
st=sum(d[i].b);
num=2-st;
if(num>0)
{
res+=num;
tail=d[i].b;
while(num)
{
if(!vis[tail])
{
add(tail,1);
vis[tail]=1;
num--;
}
tail--;
}
}
}
printf("%d\n",res);
}