#include <bits/stdc++.h>
using namespace std;
struct l
{
bool kd=false,visit=false;
int x,y;
} mapp[101][100];
struct packpack
{
int sp;
int zhu,fu;
} pb;
vector <int> p_wz;
vector <int> p_sl;
int spa[17]={0};
int kind[11]={1,4,4,3,2,4,3,3,5,5};
int need[11]={0,14,14,14,14,15,15,15,16,16};
int n,m,t,z_zd,f_zd;
int dx,dy;
bool gun(int n)
{
if(n<10) return true;
else return false;
}
void zd()
{
z_zd=f_zd=0;
int z_z=need[pb.zhu],f_z=need[pb.fu];
for(int i=0;i<p_wz.size();i++)
{
if(p_wz[i]==z_z) z_zd+=p_sl[i];
if(p_wz[i]==f_z) f_zd+=p_sl[i];
}
return ;
}
void deal(int i)
{
dx=ceil((i-1)/n)+1;
dy=(i-1)%n+1;
return ;
}
void sq(int xx,int yy)
{
mapp[xx][yy].visit=true;
if(gun(mapp[xx][yy].x))
{
if(kind[mapp[xx][yy].x]>kind[pb.zhu])
{
pb.zhu=mapp[xx][yy].x;
}
else if(kind[mapp[xx][yy].x]>kind[pb.fu]&&kind[mapp[xx][yy].x]<kind[pb.zhu])
{
pb.fu=mapp[xx][yy].x;
}
return ;
}
else
{
int chu=spa[mapp[xx][yy].x]*mapp[xx][yy].y;
bool fla;
int z_z=need[pb.zhu],f_z=need[pb.fu];
while(pb.sp<chu)
{
fla=true;
for(int i=0;i<p_wz.size()&&!p_wz.empty();i++)
{
if(p_wz[i]!=z_z&&p_wz[i]!=f_z)
{
while(p_sl[i]>0&&pb.sp<chu)
{
p_sl[i]--;
pb.sp+=spa[p_wz[i]];
}
if(p_sl[i]==0)
{
p_sl.erase(p_sl.begin()+i);
p_wz.erase(p_wz.begin()+i);
}
fla=false;
break;
}
}
if(fla) break;
}
if(fla)
{
int io=-1;
while(pb.sp<chu&&!p_wz.empty())
{
io++;
while(p_sl[io]>0&&pb.sp<chu)
{
p_sl[io]--;
pb.sp+=spa[p_wz[io]];
}
if(p_sl[io]==0)
{
p_sl.erase(p_sl.begin()+io);
p_wz.erase(p_wz.begin()+io);
}
}
}
p_wz.push_back(mapp[xx][yy].x);
p_sl.push_back(mapp[xx][yy].y);
pb.sp-=chu;
return ;
}
}
bool war(int xx,int yy)
{
zd();
mapp[xx][yy].visit=true;
if(z_zd>=xx)
{
z_zd-=xx;
pb.sp+=xx*spa[need[pb.zhu]];
return true;
}
if(f_zd>=yy)
{
f_zd-=yy;
pb.sp+=xx*spa[need[pb.fu]];
return true;
}
return false;
}
void pr()
{
cout<<pb.zhu<<endl<<pb.fu<<endl;
for(int i=0;i<p_wz.size();i++)
{
cout<<p_wz[i]<<" "<<p_sl[i]<<endl;
}
return ;
}
int main()
{
int op,xx;
spa[10]=50;spa[11]=40;spa[12]=30;spa[13]=20;
spa[14]=2;spa[15]=1;spa[16]=5;
cin>>n>>m>>pb.sp>>t;
pb.sp*=10;
pb.zhu=pb.fu=0;
for(int i=1;i<=n*m;i++)
{
deal(i);
cin>>xx;
if(xx==17)
{
mapp[dx][dy].kd=true;
cin>>mapp[dx][dy].x>>mapp[dx][dy].y;
}
else
{
mapp[dx][dy].x=xx;
cin>>mapp[dx][dy].y;
}
}
int px=1,py=1;
bool fla_=true;
if(mapp[px][py].kd)
{
if(!war(px,py))
{
fla_=false;
}
}
else sq(px,py);
mapp[1][1].visit=true;
for(int i=0;i<t;i++)
{
cin>>op;
if(!fla_) continue;
if(op==1) px--;
if(op==2) px++;
if(op==3) py--;
if(op==4) py++;
if(mapp[px][py].visit) continue;
if(mapp[px][py].kd)
{
if(!war(px,py))
{
fla_=false;
}
}
else sq(px,py);
}
if(!fla_) cout<<px<<" "<<py;
else pr();
return 0;
}