#include <iostream>
#include <algorithm>
using namespace std;
const int n = 100010;
int N, M, T;
int order[n];// order[id] 第id号外卖店上一次订单
int prior[n];// prior[id] 第id号外卖店的优先级
int flag[n];// flag[id] 第id号外卖店是否在优先缓存中
struct node
{
int time;
int id;
}f[n];
// 结构体排序,优先time
bool cmp(node a, node b) {
if (a.id == b.id)
return a.time < b.time;
return a.id < b.id;
}
int main()
{
cin >> N >> M >> T;
for (int i = 1; i <= M; i++) {
cin >> f[i].time >> f[i].id;
}
// 根据time排序
sort(f + 1, f + M + 1, cmp);
for (int i = 1; i <= M; i++) {
int tt = f[i].time;
int id = f[i].id;
if (tt != order[id])
prior[id] -= tt - order[id] - 1;
prior[id] = prior[id] < 0 ? 0 : prior[id];
if (prior[id] <= 3)
flag[id] = 0;
prior[id] += 2;
if (prior[id] > 5)
flag[id] = 1;
order[id] = tt;
}
for (int i = 1; i <= N; i++) {
if (order[i] < T) {
prior[i] -= T - order[i];
if (prior[i] <= 3) {
flag[i] = 0;
}
}
}
int ans = 0;
for (int i = 1; i <= n; i++) {
if (flag[i]) {
ans++;
}
}
cout << ans;
return 0;
}