90pts
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct student{
ll s,x;
}m[1000001];
ll dp[1000001];
ll n,d,k;
inline bool check(ll g){
ll minn=d-g;
dp[0]=0;
if(minn<=0){
minn=1;
}
ll maxn=d+g;
for(ll i=1;i<=n;i++){
for(ll j=i-1;j>=0;j--){
if(m[i].s-m[j].s<minn){
continue;
}
if(m[i].s-m[j].s>maxn){
break;
}
dp[i]=max(dp[i],dp[j]+m[i].x);
if(dp[i]>=k) return 1;
}
}
return 0;
}
signed main(){
cin>>n>>d>>k;
for(ll i=1;i<=n;i++){
cin>>m[i].s>>m[i].x;
}
ll l=0,r=10000005,mid;
long long ans=-1;
while(l<=r){
for(ll k=1;k<=n;k++){
dp[k]=-2100000000;
}
mid=(l+r+1)/2;
if(check(mid)){
r=mid-1;
ans=mid;
}else{
l=mid+1;
}
}
cout<<ans;
return 0;
}