N,I = map(int,input().split()) dp = [] for i in range(N+1): dp.append([-1]*(I+1)) sio = [] aji = [] for i in range(N): s,a = map(int,input().split()) sio.append(s) aji.append(a) dp[0][0] = 0 for i in range(1,N+1): for j in range(I+1): dp[i][j] = dp[i-1][j] if j-sio[i-1]>=0 and dp[i-1][j-sio[i-1]] != -1: dp[i][j] = max(dp[i][j],dp[i-1][j-sio[i-1]]+aji[i-1]) print(max(dp[-1]))