N,K = map(int,input().split()) PD = [list(map(int,input().split())) for _ in range(N)] PD = sorted(PD,reverse=True) DP = [[-1]*2 for _ in range(K+1)] DP[0][0]=0 for p,d in PD: for i in reversed(range(K+1)): if DP[i][0]>=0 and i+p<=K: DP[i+p][1] = max(DP[i+p][1],DP[i][0]+d) if DP[i][1]>=0: DP[i][0] = max(DP[i][0],DP[i][1]+d) ans = 0 for dp in DP: ans = max(ans,max(dp)) print(ans)