#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; void Main() { int N; long long P; int K; cin >> N >> P >> K; const long long INF = (long long)1e18; vector dp(K + 1,-INF); dp[0] = P; for(int i = 0;i < N;i++) { int t,b; cin >> t >> b; if(t == 1) { for(int j = K;j >= 1;j--) { if(dp[j - 1] != -INF) { dp[j] = max(dp[j],dp[j - 1] + b); if(dp[j] > INF) { dp[j] = 2 * INF; } } } } else { for(int j = K;j >= 1;j--) { if(dp[j - 1] != -INF) { dp[j] = max(dp[j],dp[j - 1] * 2); if(dp[j] > INF) { dp[j] = 2 * INF; } } } } } long long ans = dp[K]; if(ans == 2 * INF) { ans = -1; } cout << ans << "\n"; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int tt = 1; /* cin >> tt; */ while(tt--) Main(); }