N, V, C = map(int, input().split()) dp = [-1] * (V+1) dp[0] = 0 # i : i 円購入した # ときの満足度の最大値 for _ in range(N): v, w = map(int, input().split()) # ひとつ購入(ボーナス値 C を加算) for i in reversed(range(V+1)): if i+v > V: continue if dp[i] == -1: continue dp[i+v] = max(dp[i+v], dp[i] + w + C) # 複数購入(ボーナスなし) for i in range(V): if i+v > V: break if dp[i] == -1: continue dp[i+v] = max(dp[i+v], dp[i] + w) ans = max(dp) print(ans)