#yuki951 n,k=map(int,raw_input().split()) pd=[] for i in range(n): p,d=map(int,raw_input().split()) pd.append([p,d]) pd.sort(key=lambda x:x[0],reverse=True) dp=[[-(1<<26)] *2 for i in range(k+1)] dp[0][0]=0 for p,d in pd: for i in range(k,-1,-1): dp[i][0]=max(dp[i][0],dp[i][1]+d) if i>=p: dp[i][1]=max(dp[i][1],dp[i-p][0]+d) print max([max(i) for i in dp])