#include<map>
#include<set>
#include<queue>
#include<vector>
#include<iostream>
#include<algorithm>
#define long long int
#define maxn 100000+10
using namespace std;
int N,K,M,P[maxn],C[maxn],ans=0;
bool vis[maxn];
priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >p,c;
priority_queue<int,vector<int>,greater<int> >d;
signed main(){
cin>>N>>K>>M;
for(int i=1,a,b;i<=N;i++){
cin>>P[i]>>C[i];
p.push(make_pair(P[i],i));
c.push(make_pair(C[i],i));
}
for(int i=1;i<=K;i++)d.push(0);
while(!p.empty()){
pair<int,int> x1=p.top(),x2=c.top();
if(vis[x1.second]){
p.pop();
continue;
}
if(vis[x2.second]){
c.pop();
continue;
}
if(d.top()>x1.first-x2.first){
M-=x1.first;
p.pop();
vis[x1.second]=true;
}else{
M-=x2.first+d.top();
d.pop();
c.pop();
vis[x2.second]=true;
d.push(P[x2.second]-C[x2.second]);
}
if(M>=0)ans++;
else break;
}
cout<<ans<<endl;
return 0;
}