#include<cstdio>
#include<vector>
#include<iostream>
using namespace std;
vector<int> color[53];
struct node{
int left;
int right;
int mindata;
int num;
int col;
};
node tr[800001];
int tot,sum;
long long ans;
void build(int now,int l,int r){
tr[now].left=l;tr[now].right=r;
if(l==r){
tot++;
scanf("%d %d",&tr[now].col,&tr[now].mindata);
tr[now].num=tot;
color[tr[now].col].push_back(tot);
return;
}
int mid=(l+r)/2;
build(now*2,l,mid);
build(now*2+1,mid+1,r);
tr[now].mindata=min(tr[now*2].mindata,tr[now*2+1].mindata);
}
int n,k,p;
void fi(int now ,int l,int r){
if(l<=tr[now].left&&r>=tr[now].right)
{
sum=min(sum,tr[now].mindata);
return;
}
int mid=(tr[now].left+tr[now].right)/2;
if(l<=mid)fi(now*2,l,r);
if(r>mid)fi(now*2+1,l,r);
}
void solve(int l,int r,int co){
if(l>=r)return;
int flag;
sum=999999;
fi(1,color[co][l],color[co][r]);
if(sum>p)flag=0;
else flag=1;
if(flag!=0){
ans++;
solve(l+1,r,co);
solve(l,r-1,co);
}
}
int main(){
scanf("%d %d %d",&n,&k,&p);
build(1,1,n);
int x,y;
for(int i=0;i<k;i++){
solve(0,color[i].size() -1,i);
}
printf("%lld",ans);
}