#include <queue>
#include <algorithm>
using namespace std;
#define f first
#define s second
#define FOR(i,s,d) for(i=(s);i<(d);++i)
#define FORi(i,s,d) for(i=(s);i<(d);++i, H[i] = H[i-1])
#define nmax 50005
#define tmax 1005
typedef long long lint;
priority_queue <short> Q;
pair <int,int> P[nmax];
int n,k,T,H[tmax];
lint A[nmax],sol;
int main()
{
int i,j,l,aux;
freopen("peste.in","r",stdin);
freopen("peste.out","w",stdout);
scanf("%d %d %d",&n,&k,&T);
FOR(i,0,n)
{
scanf("%d %d",&P[i].s,&P[i].f);
}
sort(P,P+n);
i=l=aux=0;
FORi(j,1,1001)
{
for(;i<n && P[i].f==j;Q.push(-P[i].s),l++,H[j]+=P[i++].s);
for(;k<l;H[j]+=Q.top(),Q.pop(),--l);
}
FOR(i,0,T+1)
{
if(A[i]>sol) sol=A[i];
FOR(j,1,1001)
if(A[i+j]<A[i]+H[j])
A[i+j]=A[i]+H[j];
}
printf("%lld",sol);
return 0;
}