#include<bits/stdc++.h>
using namespace std;
int n,d,k;
int a[500010],b[500010];//a距离,b得分
int dp[500010];
int read()
{
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-') w=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
bool check(int x)
{
memset(dp,-0x3f,sizeof(dp));
dp[0]=0;
for(int i=1;i<=n;i++)
{
int maxn=-999999;
for(int j=i-1;j>=0;j--)
{
if(a[i]-a[j]<d-x) continue;
if(a[i]-a[j]>d+x) break;
dp[i]=max(dp[i],dp[j]+b[i]);
}
if(dp[i]>=k) return 1;
}
return 0;
}
int main()
{
n=read();
d=read();
k=read();
a[0]=0;
b[0]=0;
for(int i=1;i<=n;i++)
{
a[i]=read();
b[i]=read();
}
int l,r;
l=0;
r=a[n];
int mid;
int ans;
while(l<r)
{
mid=(l+r)/2;
if(check(mid))
{
ans=mid;
r=mid;
}
else
{
l=mid+1;
}
}
cout<<ans;
return 0;
}