var
f,x,y:array[0..4000000]of longint;
proceduresort(l,r:longint);var
i,j,mid,s:longint;
begin
i:=l;j:=r;
mid:=y[(l+r)div2];
repeatwhile y[i]<mid do inc(i);
while y[j]>mid do dec(j);
if i<=j thenbegin
s:=y[i];y[i]:=y[j];y[j]:=s;
s:=x[i];x[i]:=x[j];x[j]:=s;
inc(i);dec(j);
end;
until i>j;
if i<r then sort(i,r);
if l<j then sort(l,j);
end;
functionmax(a,b:longint):longint;
beginif a>b thenexit(a)
elseexit(b);
end;
var
i,j,n,k:longint;
begin
readln(n);
for i:=1to n do
readln(x[i],y[i]);
sort(1,n);j:=1;
for i:=1to y[n] dobegin
f[i]:=f[i-1];
for k:=j to n doif i=y[k] thenbegin
f[i]:=max(f[i],f[x[j]-1]+y[j]-x[j]+1);
inc(j);
endelsebreak;
end;
writeln(f[y[n]]);
end.