#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int n, m, t;
struct node{
int ts, id;
};
node wm[maxn];
bool cmp(node x, node y){
if(x.id!=y.id) return x.id<y.id;
return x.ts<y.ts;
}
vector<int> p[maxn];
int main(){
int i, j, k, tmp, ans=0, ID;
bool flag;
cin >> n >> m >> t;
for(i=1; i<=m; i++)
cin >> wm[i].ts >> wm[i].id;
sort(wm+1, wm+m+1, cmp);
for(i=1; i<=m;){
ID = wm[i].id;
p[ID].push_back(wm[i].ts);
while(wm[++i].id==ID)
p[ID].push_back(wm[i].ts);
for(j=1, tmp=2, flag=false; j<p[ID].size(); j++){
if(p[ID][j]!=p[ID][j-1]) tmp-=p[ID][j]-p[ID][j-1]-1;
if(tmp<0) tmp=0;
if(tmp<=3) flag=false;
tmp+=2;
if(tmp>5) flag=true;
}
if(flag){
if(t!=p[ID][j-1])
tmp-=t-p[ID][j-1];
if(tmp>3)
ans++;
}
}
cout << ans << endl;
}