#include<bits/stdc++.h>
using namespace std;
int n;
int st[1000], en[1000];
int dp[1000][1000];
int solve(int index, int currentFinishTime){
if(index == n) return 0;
int v1 = 0, v2 = 0;
if(dp[index][currentFinishTime] != -1) return dp[index][currentFinishTime];
//do not choose the current activity
v1 = solve(index+1, currentFinishTime);
//try to choose the current activity
if(st[index] >= currentFinishTime){
v2 = solve(index+1, en[index]) + 1;
}
return dp[index][currentFinishTime] = max(v1, v2);
}
int main(){
cin >> n;
for(int i = 0;i < n;i++) cin >> st[i] >> en[i];
memset(dp, -1, sizeof dp);
cout << solve(0, 0) << endl;
return 0;
}
/*
11
1 4
3 5
0 6
5 7
3 9
5 9
6 10
8 11
8 12
2 14
12 16
*/
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbjsKaW50IHN0WzEwMDBdLCBlblsxMDAwXTsKaW50IGRwWzEwMDBdWzEwMDBdOwoKaW50IHNvbHZlKGludCBpbmRleCwgaW50IGN1cnJlbnRGaW5pc2hUaW1lKXsKCWlmKGluZGV4ID09IG4pIHJldHVybiAwOwoJaW50IHYxID0gMCwgdjIgPSAwOwoJaWYoZHBbaW5kZXhdW2N1cnJlbnRGaW5pc2hUaW1lXSAhPSAtMSkgcmV0dXJuIGRwW2luZGV4XVtjdXJyZW50RmluaXNoVGltZV07CgkKCS8vZG8gbm90IGNob29zZSB0aGUgY3VycmVudCBhY3Rpdml0eQoJdjEgPSBzb2x2ZShpbmRleCsxLCBjdXJyZW50RmluaXNoVGltZSk7CgkKCS8vdHJ5IHRvIGNob29zZSB0aGUgY3VycmVudCBhY3Rpdml0eQoJaWYoc3RbaW5kZXhdID49IGN1cnJlbnRGaW5pc2hUaW1lKXsKCQl2MiA9IHNvbHZlKGluZGV4KzEsIGVuW2luZGV4XSkgKyAxOwoJfQoJcmV0dXJuIGRwW2luZGV4XVtjdXJyZW50RmluaXNoVGltZV0gPSBtYXgodjEsIHYyKTsKfQoKaW50IG1haW4oKXsKCWNpbiA+PiBuOwoJZm9yKGludCBpID0gMDtpIDwgbjtpKyspIGNpbiA+PiBzdFtpXSA+PiBlbltpXTsKCW1lbXNldChkcCwgLTEsIHNpemVvZiBkcCk7CgkKCWNvdXQgPDwgc29sdmUoMCwgMCkgPDwgZW5kbDsKcmV0dXJuIDA7Cn0KCi8qCjExCjEgNAozIDUKMCA2CjUgNwozIDkKNSA5CjYgMTAKOCAxMQo4IDEyCjIgMTQKMTIgMTYKKi8=