N,M=map(int,input().split()) A=sorted(map(int,input().split())) W=[0]*(N-1) V=[0]*(N-1) for i in range(N-1): W[i]=A[i+1]-A[i] V[i]=A[i+1] INF=-(10**12) DP=[[INF]*(M+1) for i in range(N)] DP[0][0]=0 for i in range(N-1): for j in range(M+1): DP[i+1][j]=max(DP[i+1][j],DP[i][j]) if j+W[i]<=M: DP[min(N-1,i+2)][j+W[i]]=max(DP[min(N-1,i+2)][j+W[i]],DP[i][j]+V[i]) print(max(DP[-1]))