/*
 * POJ_3044.cpp
 *
 *  Created on: 2013年10月31日
 *      Author: Administrator
 */

#include <iostream>
#include <cstdio>
#include <cstring>

const int maxn = 50010;
int x[maxn];
int y[maxn];
bool use[maxn];


int main(){
	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF){
		memset(use,false,sizeof(use));

		int i,j;
		for(i = 0 ; i < n ; ++i){
			scanf("%d%d",&x[i],&y[i]);
		}

		int ans = 0;
		for(i = n - 1 ; i >= 0 ; --i){//从后往前扫
			if(!y[i] || use[i]){
				continue;
			}

			for(j = i - 1 ; j >= 0 ; --j){

				if(y[j] == y[i]){//左邻顶点坐标的高度 == 当前坐标的高度,则证明他们是同一栋楼
					use[j] = true;
				}else if(y[j] < y[i]){//左邻顶点坐标的高度 < 当前顶点坐标的高度,是新的一栋楼的开始
					break;
				}
			}

			ans++;
		}

		printf("%d\n",ans);
	}

	return 0;
}