RT
#include <bits/stdc++.h>
using namespace std;
#define lowbit(x) (x&(-x))
int a[53][2000005];
char M[505][505];
int n,m,q,k;
void add(int pos,int p,int v){
while(p<=q+1) a[pos][p]+=v,p+=lowbit(p);
}
int pre(int pos,int p){
if(!p) return 0;
int s=0;
for(;p;p-=lowbit(p)) s+=a[pos][p];
return s;
}
void read_(int &x){
x=0;
char ch=getchar();
while(ch<'0'||ch>'9') ch=getchar();
while('0'<=ch&&ch<='9'){
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
return ;
}
int sx=1,sy=1;
int main(){
read_(n),read_(m),read_(q),read_(k);
for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>M[i][j];
// puts("Genshin Impact");
for(int i = 1; i<=q; i++){
char c;
int x,y;
cin>>c>>x>>y;
if(pre(i%k,i/k+1)%2==0){
if(c=='U') c='D';
if(c=='D') c='U';
if(c=='L') c='R';
if(c=='R') c='L';
}
if(c=='U'){
sx=max(1,sx-x);
}if(c=='D'){
sx=min(n,sx+x);
}if(c=='L'){
sy=min(m,sy+x);
}if(c=='R'){
sy=max(1,sy-x);
}
if(M[sx][sy]=='X'){
add(i%k,i/k+2,1);
add(i%k,i/k+y+2,-1);
}
}
cout<<sx<<" "<<sy;
return 0;
}