#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef struct Role//即包含英雄,也包含卡片
{
int h;//生命值
int a;//攻击力
Role(int h,int a):h(h),a(a){};
};
vector<Role> v[2];//红黑双方,红先黑后,v[0]红方,v[1]黑方
int main(int argc, char** argv) {
int n,position,attack,health,attacker,defender;
int player=0;//0表示红方,1表示黑方
string s;
cin>>n;
v[0].push_back(Role(30,0));//红方英雄
v[1].push_back(Role(30,0));//黑方英雄
while(n--)
{
cin>>s;
if(s=="summon")//召唤随从
{
cin>>position>>attack>>health;
//在相应位置加上随从
v[player].insert(v[player].begin()+position,Role(health,attack));
}
else if(s=="attack")//攻击
{
cin>>attacker>>defender;
//攻击
v[player][attacker].h-=v[1-player][defender].a;
v[1-player][defender].h-=v[player][attacker].a;
if(v[player][attacker].h<=0)//攻击方生命值小于0则去除
v[player].erase(v[player].begin()+attacker);
if(defender!=0&&v[1-player][defender].h<=0)//被攻击方如果不是英雄,并且生命值小于等于0则去除
v[1-player].erase(v[1-player].begin()+defender);
}
else if(s=="end")
{
player=1-player;//换玩家
}
}
if(v[0][0].h>0&&v[1][0].h<=0)
cout<<"1"<<endl;
else if(v[0][0].h<=0&&v[1][0].h>0)
{
cout<<"-1"<<endl;
}
else
cout<<"0"<<endl;
//先手玩家的情况
cout<<v[0][0].h<<endl;
cout<<v[0].size()-1;
for(int i=1;i<v[0].size();i++)
{
cout<<" "<<v[0][i].h;
}
cout<<endl;
//后手玩家情况
cout<<v[1][0].h<<endl;
cout<<v[1].size()-1;
for(int i=1;i<v[1].size();i++)
{
cout<<" "<<v[1][i].h;
}
cout<<endl;
return 0;
}