#yukicoder423C Sword N, P, K = map(int, input().split()) DP = [P] + [0] * K for _ in range(N): t, b = map(int, input().split()) nDP = [0] * (K + 1) for k in range(K + 1): if DP[k] == 0: continue nDP[k] = max(nDP[k], DP[k]) if k == K: continue if t == 1: nDP[k + 1] = max(nDP[k + 1], DP[k] + b) if t == 2: nDP[k + 1] = max(nDP[k + 1], DP[k] * 2) DP, nDP = nDP, DP if DP[K] > 10 ** 18: exit( print(-1) ) print(DP[K])