#include<bits/stdc++.h>
#define ll int
using namespace std;
ll n;
struct play_er
{
ll HP,MP,atk,def,hp,mp,atk_more,def_more,tar;
ll p[15];
ll tf,x_t,y_t;
ll jn,x_g,y_g,z_g;
ll end[1005],cnt;
}job[25],dy;
bool die[25];
ll i1;
ll A(ll id)
{
return max(job[id].atk+job[id].atk_more,1);
}
ll D(ll id)
{
return max(job[id].def+job[id].def_more,1);
}
void nothing(ll id)
{
job[id]=dy;
}
void qs(bool winner)
{
cout<<i1<<'\n';
if(winner==0)
{
cout<<"Alice\n";
for(ll i=1;i<=n;++i)
if(!die[i])
cout<<job[i].hp<<' ';
else
cout<<0<<' ';
}
else
{
cout<<"Bob\n";
for(ll i=n+1;i<=2*n;++i)
if(!die[i])
cout<<job[i].hp<<' ';
else
cout<<0<<' ';
}
exit(0);
}
void gl(ll id,ll x,ll y)
{
ll to=1,end=n;
if(id<=n)
to+=n,end+=n;
for(ll i=to;i<=end;++i)
{
if(die[i])
continue;
if(job[i].tf==1)
job[i].hp-=(max(0,x-D(i))+y-y/2);
else
job[i].hp-=(max(0,x-D(i))+y);
++job[i].mp;
if(job[i].mp>job[i].MP)
job[i].mp=job[i].MP;
if(job[i].hp<=0)
die[i]=1,nothing(i);
}
bool flag=1;
for(ll i=to;i<=end;++i)
if(!die[i])
flag=0;
if(flag)
{
if(to==n+1)
qs(0);
else
qs(1);
}
}
void gl_g(ll to,ll x,ll y)
{
if(job[to].tf==1)
job[to].hp-=(max(0,x-D(to))+y-y/2);
else
job[to].hp-=(max(0,x-D(to))+y);
++job[to].mp;
if(job[to].mp>job[to].MP)
job[to].mp=job[to].MP;
if(job[to].hp<=0)
die[to]=1,nothing(to);
bool flag=1;
ll ts=1,end=n;
if(to>n)
ts+=n,end+=n;
for(ll i=ts;i<=end;++i)
if(!die[i])
flag=0;
if(flag)
{
if(ts==n+1)
qs(0);
else
qs(1);
}
}
ll mn_g(ll to,ll x,ll y)
{
if(job[to].tf==1)
return (max(0,x-D(to))+y-y/2);
else
return (max(0,x-D(to))+y);
}
void bur(ll id,ll to,ll end)
{
gl(id,job[id].x_g,0);
for(ll i=to;i<=end;++i)
{
if(!die[i])
{
job[i].mp-=(job[id].MP/10);
job[i].mp=max(0,job[i].mp);
}
}
}
void inmi(ll id)
{
gl(id,0,A(id));
}
void sword(ll id,ll it,ll end)
{
for(ll i=it;i<=end;++i)
if(!die[i])
gl_g(i,min(job[i].HP/10,A(id)*job[id].x_g),0);
}
void shtst(ll id,ll time)
{
job[id].end[++job[id].cnt]=time+job[id].x_g;
}
void dwetc(ll id)
{
job[job[id].tar].def_more-=job[id].x_g;
gl_g(job[id].tar,0,A(id));
}
void pabl(ll id,ll time)
{
gl_g(job[id].tar,0,A(id));
job[id].end[++job[id].cnt]=time+job[id].x_g;
ll to=1,end=n;
if(id<=n)
to+=n,end+=n;
for(ll i=to;i<=end;++i)
{
if(die[i])
continue;
job[i].atk_more-=job[id].y_g;
}
}
void thabl(ll id,ll it,ll end,ll time)
{
ll minn=214700000,idm=0;
for(ll i=it;i<=end;++i)
{
if(die[i])
continue;
if(job[i].hp<minn)
minn=job[i].hp,idm=i;
job[i].atk_more+=job[id].y_g;
}
job[idm].hp+=job[id].z_g;
if(job[idm].hp>job[idm].HP)
job[idm].hp=job[idm].HP;
job[id].end[++job[id].cnt]=time+job[id].x_g;
}
void ashst(ll id,ll to,ll end,ll when)
{
gl(id,A(id),0);
for(ll i=to;i<=end;++i)
{
if(die[i])
continue;job[i].def_more-=job[i].y_g;
}
job[id].end[++job[id].cnt]=when+job[id].x_g;
}
void asyel(ll id,ll it,ll end,ll when)
{
for(ll i=it;i<=end;++i)
{
if(die[i])
continue;
job[i].hp+=job[id].z_g;
if(job[i].hp>job[i].HP)
job[i].hp=job[i].HP;
job[i].def_more+=job[id].y_g;
}
job[id].end[++job[id].cnt]=when+job[id].x_g;
}
void sfotr(ll id,ll to,ll end,ll time)
{
for(ll i=to;i<=end;++i)
{
if(die[i])
continue;
job[i].atk*=2;
job[i].def*=2;
job[i].hp=max(job[i].hp,job[i].HP/2);
job[i].mp=max(job[i].mp,job[i].MP/2);
}
job[id].end[++job[id].cnt]=time+job[id].x_g;
for(ll i=1;i<=2*n;++i)
if(job[id].jn==10)
job[id].jn=0;
}
void t_use(ll id,ll t,bool ab,ll when)
{
ll it=1,end=n,itt=1,endd=n;
if(!ab)
it+=n,end+=n;
else
itt+=n,endd+=n;
if(t==0)
return;
if(t==1)
bur(id,it,end);
else if(t==2)
inmi(id);
else if(t==3)
sword(id,it,end);
else if(t==4)
shtst(id,when);
else if(t==5)
dwetc(id);
else if(t==6)
pabl(id,when);
else if(t==7)
thabl(id,itt,endd,when);
else if(t==8)
ashst(id,it,end,when);
else if(t==9)
asyel(id,itt,endd,when);
else
sfotr(id,itt,endd,when);
}
void or_att(ll id)
{
ll hurt=max(job[id].atk+job[id].atk_more,1);
if(job[id].tf==2)
gl_g(job[id].tar,A(id),job[id].x_t);
else if(job[id].tf==4)
gl_g(job[id].tar,0,A(id));
else
gl_g(job[id].tar,A(id),0);
}
ll mn_att(ll id)
{
if(job[id].tf==2)
return mn_g(job[id].tar,A(id),job[id].x_t);
else if(job[id].tf==4)
return mn_g(job[id].tar,0,A(id));
else
return mn_g(job[id].tar,A(id),0);
}
void find_tar(ll id)
{
for(ll i=1;i<=n;++i)
if(!die[job[id].p[i]])
{
job[id].tar=job[id].p[i];return;
}
}
void end_pabl(ll id)
{
ll it=1,end=n;
if(id<=n)
it+=n,end+=n;
for(ll i=it;i<=end;++i)
job[i].atk_more+=job[id].y_g;
}
void end_thabl(ll id)
{
ll it=1,end=n;
if(id>n)
it+=n,end+=n;
for(ll i=it;i<=end;++i)
job[i].atk_more-=job[id].y_g;
}
void end_ashst(ll id)
{
ll it=1,end=n;
if(id<=n)
it+=n,end+=n;
for(ll i=it;i<=end;++i)
job[i].def_more+=job[id].y_g;
}
void end_asyel(ll id)
{
ll it=1,end=n;
if(id>n)
it+=n,end+=n;
for(ll i=it;i<=end;++i)
job[i].def_more-=job[id].y_g;
}
int main()
{
ios::sync_with_stdio(0);
cin>>n;
for(ll i=1;i<=n;++i)
{
cin>>job[i].HP>>job[i].MP>>job[i].atk>>job[i].def;
job[i].hp=job[i].HP;
for(ll j=1;j<=n;++j)
cin>>job[i].p[j],job[i].p[j]+=n;
cin>>job[i].tf>>job[i].x_t>>job[i].y_t;
cin>>job[i].jn>>job[i].x_g>>job[i].y_g>>job[i].z_g;
}
for(ll i=n+1;i<=2*n;++i)
{
cin>>job[i].HP>>job[i].MP>>job[i].atk>>job[i].def;
job[i].hp=job[i].HP;
for(ll j=1;j<=n;++j)
cin>>job[i].p[j];
cin>>job[i].tf>>job[i].x_t>>job[i].y_t;
cin>>job[i].jn>>job[i].x_g>>job[i].y_g>>job[i].z_g;
}
for(i1=1;i1<=24000;++i1)
{
ll max_t=-1,id=0;
for(ll i=1;i<=2*n;++i)
if(!die[i])
find_tar(i);
for(ll i=n;i>0;--i)
{
if(die[i])
continue;
if(job[i].jn>max_t&&job[i].MP==job[i].mp)
max_t=job[i].jn,id=i;
}
if(max_t!=-1)
{
job[id].mp=0;
t_use(id,max_t,0,i1);
++job[id].mp;
if(job[id].tf==5)
job[id].mp+=job[id].y_t;
if(job[id].mp>job[id].MP)
job[id].mp=job[id].MP;
}
else
{
max_t=0;
for(ll i=n;i>0;--i)
{
if(!die[i])
{
if(job[job[i].tar].hp>max_t)
max_t=job[job[i].tar].hp,id=i;
else if(job[job[i].tar].hp==max_t)
{
if(mn_att(id)<mn_att(i))
id=i;
}
}
}
or_att(id);
++job[id].mp;
if(job[id].tf==5)
job[id].hp+=job[id].x_t;
if(job[id].hp>job[id].HP)
job[id].hp=job[id].HP;
job[id].mp=min(job[id].mp,job[id].MP);
}
ll add=1;
for(ll i=1;i<=n;++i)
{
if(die[i])
continue;
for(ll j=1;j<=job[i].cnt;++j)
{
if(job[i].jn==4&&job[i].end[j]!=0)
add+=job[i].y_g;
if(job[i].jn==0&&job[i].end[j]!=0)
++add;
}
if(job[i].tf==3)
{
job[i].hp=min(job[i].HP,job[i].hp+job[i].x_t);
job[i].mp=min(job[i].MP,job[i].mp+job[i].y_t);
}
}
for(ll i=1;i<=n;++i)
{
if(die[i])
continue;
job[i].mp=min(job[i].MP,job[i].mp+add);
}
max_t=-1,id=0;
for(ll i=2*n;i>=n+1;--i)
{
if(die[i])
continue;
if(job[i].jn>max_t&&job[i].MP==job[i].mp)
max_t=job[i].jn,id=i;
}
if(max_t!=-1)
{
job[id].mp=0;
t_use(id,max_t,1,i1);
++job[id].mp;
if(job[id].tf==5)
job[id].mp+=job[id].y_t;
if(job[id].mp>job[id].MP)
job[id].mp=job[id].MP;
}
else
{
max_t=0;
for(ll i=2*n;i>=n+1;--i)
{
if(!die[i])
{
if(job[job[i].tar].hp>max_t)
max_t=job[job[i].tar].hp,id=i;
else if(job[job[i].tar].hp==max_t)
{
if(mn_att(id)<mn_att(i))
id=i;
}
}
}
or_att(id);
++job[id].mp;
job[id].mp=min(job[id].mp,job[id].MP);
if(job[id].tf==5)
job[id].hp+=job[id].x_t;
if(job[id].hp>job[id].HP)
job[id].hp=job[id].HP;
}
add=1;
for(ll i=n+1;i<=2*n;++i)
{
if(die[i])
continue;
for(ll j=1;j<=job[i].cnt;++j)
{
if(job[i].jn==4&&job[i].end[j]!=0)
add+=job[i].y_g;
if(job[i].jn==0&&job[i].end[j]!=0)
++add;
}
if(job[i].tf==3)
{
job[i].hp=min(job[i].HP,job[i].hp+job[i].x_t);
job[i].mp=min(job[i].MP,job[i].mp+job[i].y_t);
}
}
for(ll i=n+1;i<=2*n;++i)
{
if(die[i])
continue;
job[i].mp=min(job[i].MP,job[i].mp+add);
}
for(ll i=1;i<=n;++i)
{
for(ll j=1;j<=job[i].cnt;++j)
{
if(job[i].jn!=4&&job[i].jn!=6&&job[i].jn!=7&&job[i].jn!=8&&job[i].jn!=9&&(job[i].jn==0&&job[i].end[1]==0))
break;
if(job[i].jn==4&&job[i].end[j]-1==i1)
job[i].end[j]=0;
if(job[i].jn==6&&job[i].end[j]-1==i1)
{
end_pabl(i);job[i].end[j]=0;
}
if(job[i].jn==7&&job[i].end[j]-1==i1)
{
end_thabl(i);job[i].end[j]=0;
}
if(job[i].jn==8&&job[i].end[j]-1==i1)
{
end_ashst(i);job[i].end[j]=0;
}
if(job[i].jn==9&&job[i].end[j]-1==i1)
{
end_asyel(i);job[i].end[j]=0;
}
if(job[i].jn==0&&job[i].end[j]-1==i1)
{
qs(1);
}
}
}
for(ll i=n+1;i<=2*n;++i)
{
ll sum=0;
for(ll j=1;j<=job[i].cnt;++j)
{
if(job[i].jn!=4&&job[i].jn!=6&&job[i].jn!=7&&job[i].jn!=8&&job[i].jn!=9&&(job[i].jn==0&&job[i].end[1]==0))
break;
if(job[i].jn==4&&job[i].end[j]-1==i1)
job[i].end[j]=0;
if(job[i].jn==6&&job[i].end[j]-1==i1)
{
end_pabl(i);job[i].end[j]=0;
}
if(job[i].jn==7&&job[i].end[j]-1==i1)
{
end_thabl(i);job[i].end[j]=0;
}
if(job[i].jn==8&&job[i].end[j]-1==i1)
{
end_ashst(i);job[i].end[j]=0;
}
if(job[i].jn==9&&job[i].end[j]-1==i1)
{
end_asyel(i);job[i].end[j]=0;
}
if(job[i].jn==0&&job[i].end[j]-1==i1)
{
qs(0);
}
}
}
}
cout<<"114514";
}