ans=0 n,V,c,*a=map(int,open(0).read().split()) d=[0]*-~V b=ct=W=0 for v,w in sorted(zip(a[::2],a[1::2]),key=lambda x:(x[0],-x[1])): b+=v ct+=c for i in range(V-v+1): d[i+v]=max(d[i+v],d[i]+w) W+=w if V-b>=0:ans=max(ans,ct+W+d[V-b]) print(ans)