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