#include<bits/stdc++.h> #define FIO cin.tie(0); ios::sync_with_stdio(false) #define all(x) (x).begin(), (x).end() #define fi first #define se second #define TEST #define TESTS int t = 1; cin >> t; while (t--)
usingnamespace std; using i64 = longlong; using u32 = unsigned; using u64 = unsignedlonglong; using pii = std::pair<int, int>;
template<typename T> voidchkmin(T& a, T b){ a = min(a, b); } template<typename T> voidchkmax(T& a, T b){ a = max(a, b); }
constexprint N = 2e4 + 10; constexprint MOD = 998244353;
int dp[20][N]; int stk[N], top; int vis[N], sz[N], son[N]; int v[N], w[N]; int id[N], ans[N]; vector<int> e[N]; int q, V;
voiddfs1(int u, int f){ vis[u] = 1; sz[u] = 1; for (int v : e[u]) { if (v == f) continue; dfs1(v, u); sz[u] += sz[v]; if (sz[son[u]] < sz[v]) son[u] = v; } }
voiddfs2(int u, int f, int cur, int pre){ for (int i = 0; i <= V; ++i) { dp[cur][i] = dp[pre][i]; if (i >= w[u]) chkmax(dp[cur][i], dp[cur][i - w[u]] + v[u]); chkmax(ans[u], dp[cur][i]); } for (int v : e[u]) { if (v == f || v == son[u]) continue; dfs2(v, u, cur + 1, cur); } if (son[u]) dfs2(son[u], u, cur, cur); }
voidsolve(){ cin >> q >> V; int n = 0; for (int i = 1; i <= q; ++i) { string s; cin >> s; if (s[0] == 'a') { ++n; cin >> w[n] >> v[n]; if (top) e[stk[top]].push_back(n); stk[++top] = n; } else { top--; } if (top) id[i] = stk[top]; } for (int i = 1; i <= n; ++i) { if (!vis[i]) dfs1(i, 0), dfs2(i, 0, 1, 0); } for (int i = 1; i <= q; ++i) { cout << ans[id[i]] << "\n"; } }