#include <bits/stdc++.h>
using namespace std;
const int N = 3e4 + 1;

int n , dp[N];
vector < int > e[N];

int recur ( int time ){

   if ( time >= N ) return 0;

   int &ret = dp[time];

   if ( ~ret ) return ret;

   ret = recur ( time + 1 );

   for ( auto child : e[time] ){
     ret = max ( ret , 1 + recur ( child + 1 ) );
   }

   return ret;
}

void Solution ( int tc ){

  cin >> n;

  for ( int i = 1 ; i <= n ; i++ ){
    int st;
    int en;
    cin >> st >> en;
    e[st].push_back ( en );
  }

  cout << recur ( 1 ) << "\n";

  return;
}

int main()
{
    /// MUHAMMAD
    ios::sync_with_stdio(0);
    cin.tie(0);

    /// AE;

    /*
    #ifdef OJ
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif
    */

    int testcase = 1 , tc = 0;

    for ( int i = 0 ; i < N ; ++i ){
        dp[i] = -1;
    }

    /// cin >> testcase;

    for ( int i = 1 ; i <= testcase ; ++i ){
       Solution( ++tc );
    }

    return 0;
}
