N,K=map(int,input().split()) pd=[] dp0,dp1=[[-float("inf")]*(K+1) for i in range(N+1)],[[-float("inf")]*(K+1) for i in range(N+1)] dp0[0][0]=0 for i in range(N): pd.append(list(map(int,input().split()))) pd.sort(reverse=True) for i in range(N): cost,value=pd[i] for j in range(K+1): dp0[i+1][j]=max(dp0[i][j],dp1[i][j]+value) dp1[i+1][j]=max(dp1[i][j],dp1[i+1][j]) if cost+j<=K: dp1[i+1][j+cost]=max(dp0[i][j]+value,dp1[i][j]+value) ans=-1 for i in range(1,K+1): ans=max(ans,dp0[-1][i],dp1[-1][i]) print(ans)