inline void dfs(){
int s=++tot;
int t=read_int(),x=read_int();
if(x==0){
int son1=tot+1,son2;
dfs();son2=tot+1;dfs();
for(int i=n;i>=t*2;i--){
for(int e=2*t;e<=i;e++){
dp[s][i]=max(dp[s][i],dp[son1][i-e]+dp[son2][e-2*t]);
}
}
}
else{
for(int i=1;i<=x;i++) sj[i][0]=read_int(),sj[i][1]=read_int();
for(int k=1;k<=x;k++){
for(int i=n;i>=sj[k][1]+t*2;i--){
dp[s][i]=max(dp[s][i],dp[s][i-sj[k][1]]+sj[k][0]);
}
}
}
}
inline void dfs(){
int s=++tot;
int t=read_int(),x=read_int();
if(x==0){
int son=tot+1;
dfs();
for(int i=n;i>=t*2;i--){
for(int e=t*2;e<=i;e++){
dp[s][i]=max(dp[s][i],dp[s][i-e]+dp[son][e-2*t]);
}
}
son=tot+1;
dfs();
for(int i=n;i>=t*2;i--){
for(int e=t*2;e<=i;e++){
dp[s][i]=max(dp[s][i],dp[s][i-e]+dp[son][e-2*t]);
}
}
}
else{
for(int i=1;i<=x;i++) sj[i][0]=read_int(),sj[i][1]=read_int();
for(int k=1;k<=x;k++){
for(int i=n;i>=sj[k][1]+t*2;i--){
dp[s][i]=max(dp[s][i],dp[s][i-sj[k][1]]+sj[k][0]);
}
}
}
}