#include<bits/stdc++.h>
using namespace std;
long long n,m,t;
long long _max=0;
struct neiger{
long long a,b;
};
struct fruit{
long long worktime;
long long work;
};
vector <neiger> black;
fruit dp[1005];
void gowork(){
for(int i=0;i<=t;i++){
if(i<=m)dp[i].worktime=0;
else dp[i].worktime=INT_MAX;
}
for(int i=0;i<n;i++){
for(int j=m+black[i].a-1;j<=t;j++){
dp[j].worktime=min(dp[j-dp[j].work].worktime+1,dp[j-black[i].b+black[i].a].worktime+1);
if(dp[j].worktime==dp[j-black[i].b+black[i].a].worktime+1 and j!=m+black[i].a-1)dp[j].work=dp[j-black[i].b+black[i].a].work+black[i].b;
}
}
}
int main(){
cin>>n>>m>>t;
for(int i=0,a,b;i<n;i++){
cin>>a>>b;
black.push_back({a,b});
}
gowork();
cout<<dp[t].worktime;
}