16pts。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,q,m,k,r,p,vst,cnt;
ll a[200005];
int fa[200005],hs[200005],sz[200005],top[200005],dfn[200005],rdfn[200005],dep[200005];
vector<int>G[200005];
int f[16][200005],ans[200005],w[200005],v[200005],id[200005],vs[200005];
stack<int>s;
void dfs(int u,int fat) {
fa[u]=fat;
vs[u]=1;
sz[u]=1;
dep[u]=dep[fat]+1;
for(auto &v:G[u]) {
if(v==fat)continue;
dfs(v,u);
sz[u]+=sz[v];
if(sz[v]>sz[hs[u]])hs[u]=v;
}
}
void cut(int u,int tp,int dep,int lst) {
for(int i=0;i<=m;i++){
f[dep][i]=f[lst][i];
if(i>=w[u])f[dep][i]=max(f[dep][i],f[dep][i-w[u]]+v[u]);
ans[u]=max(ans[u],f[dep][i]);
}
dfn[u]=++vst;
rdfn[vst]=u;
top[u]=tp;
if(hs[u]) {
cut(hs[u],tp,dep,dep);
for(auto &v:G[u])if(v!=fa[u]&&v!=hs[u])cut(v,v,dep+1,dep);
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>q>>m;
for(int ii=1;ii<=q;ii++){
// cerr<<ii<<"\n";
string t;
cin>>t;
if(t=="add"){
cnt++;
if(!s.empty()){
G[s.top()].push_back(cnt);
G[cnt].push_back(s.top());
}
cin>>w[cnt]>>v[cnt];
s.push(cnt);
}else s.pop();
if(!s.empty())id[ii]=s.top();
}
for(int i=1;i<=cnt;i++){
if(vs[i])continue;
dfs(i,0);
cut(i,0,1,0);
}
for(int i=1;i<=q;i++)cout<<ans[id[i]]<<"\n";
}