import sys, time, random from collections import deque, Counter, defaultdict input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 63 - 1 mod = 998244353 n, m, q = mi() AB = [li() for _ in range(20)] before = [0] * (1 << n) for bit in range(1 << n): value = 0 weight = 0 for i in range(n): if 1 & (bit >> i): value += AB[i][1] weight += AB[i][0] if weight <= m: before[bit] = value for bit in range(1 << n): for i in range(n): if (1 & (bit >> i)): before[bit] = max(before[bit ^ (1 << i)], before[bit]) after = [0] * (1 << n) for bit in range(1 << n): value = 0 weight = 0 for i in range(n): if 1 & (bit >> i): value += AB[i][1] weight += AB[i][0] if weight <= q: after[bit] = value for bit in range(1 << n): for i in range(n): if (1 & (bit >> i)): after[bit] = max(after[bit - (1 << i)], after[bit]) ans = 0 for bit in range(1 << n): ans = max(ans, before[bit] + after[(1 << n) - 1 - bit]) print(ans)