n,m,q=map(int,input().split()) ab=[] for i in range(n): a,b=map(int,input().split()) ab.append([a,b]) dp=[0]*(1<>i)&1: cost+=ab[i][0] val+=ab[i][1] if cost<=m: dp[bit]=val for i in range(n): if (bit>>i)&1==0: dp[bit|(1<>i)&1: cost+=ab[i][0] val+=ab[i][1] if cost<=q: ans=max(ans,val+dp[bit^mask]) print(ans)