R=range J=lambda:list(map(int,input().split())) N,M=J() M+=1 A=[0]*M for C,D in reversed(sorted(J()for i in R(N))): for j in R(C,M):k=(j-C)>>1;A[k]=max(A[k],A[j]+D) print(max(A))