N,K=map(int,input().split()) P=[tuple(map(int,input().split())) for i in range(N)] P.sort(reverse=True) BUY=[0]*(K+1) SERVICE=[0]*(K+1) for p,d in P: for i in range(K,-1,-1): if BUY[i]!=0: SERVICE[i]=max(SERVICE[i],BUY[i]+d) if i>=p: BUY[i]=max(BUY[i],SERVICE[i-p]+d) #print(BUY,SERVICE) print(max(max(BUY),max(SERVICE)))