from collections import defaultdict import copy n,m=map(int,input().split()) CD=[list(map(int,input().split())) for _ in range(n)] CD.sort(reverse=True) D=defaultdict(list) D[0].append((0,0)) for c,d in CD: D1=copy.deepcopy(D) for i,J in D.items(): for a,b in J: if i+c*pow(2,b)<=m: D1[i+c*pow(2,b)].append((a+d,b+1)) D=D1 ans=0 for j in D.values(): for a,b in j: ans=max(ans,a) print(ans)