/*                  INT.CPP - by Zeljko Svedic (59 lines)                  */

#include <stdio.h>
#include <stdlib.h>

#define FLAG -15555

typedef struct interval{ int a,b; };

interval in[10001];
int n,brpo[10005]={0},brpot=0,potrebno,max,maxj,i,j,k;

int sort_function(const void *x, const void *y)
{
	if( ((interval *)x)->a > ((interval *)y)->a ) return 1;
	if( ((interval *)x)->a < ((interval *)y)->a ) return -1;
	return 0;
}

void main(void)
{
	FILE *fp=fopen("int.in","rt");

	fscanf(fp,"%i",&n);
	for(i=0;i<n;i++) fscanf(fp,"%i%i",&in[i].a,&in[i].b);
	fclose(fp);

	qsort(in, n, sizeof(in[0]), sort_function);

	for(i=0;i<n-1;i++)
		for(j=i+1;j<n;j++)
		{
			if(in[j].b>in[i].b) { if(in[j].a>=in[i].b) break; else continue; }

			for(n--,k=i--;k<n;k++) in[k]=in[k+1];
		}

	for(i=0;i<n;i++) for(j=in[i].a;j<=in[i].b;j++) brpo[j]++;

	for(i=0;i<n;i++)
	{
		for(potrebno=2,j=in[i].a;j<=in[i].b;j++) if(brpo[j]<FLAG) potrebno--;

		for(k=0;k<potrebno;k++)
		{
			for(max=FLAG,j=in[i].a;j<=in[i].b;j++)
				if(brpo[j]>max) { max=brpo[j]; maxj=j; }

			brpo[maxj]=FLAG-1;
			brpot++;
		}

		for(j=in[i].a;j<=in[i].b;j++) brpo[j]--;
	}

	fp=fopen("int.out","wt");
	fprintf(fp,"%i",brpot);
	fclose(fp);
}