#include<bits/stdc++.h>
using namespace std;
int Map[1005][1005];
int kmap[1005][1005];
int T;
char kmp;
int n,m,k;
int x,y,d;
int ans;
bool check(int x,int y){
if(x>n||x<1||y>m||y<1) return false;
else if(Map[x][y]==1) return false;
return true;
}
void dfs(int x,int y,int d,int cnt,int cna){
if(cna==k) return;
int nx,ny;
if(d==0){
nx=x,ny=y+1;
if(check(nx,ny)==true){
if(kmap[nx][ny]==0) ans++;
kmap[nx][ny]=1;
dfs(nx,ny,d,0,++cna);
}
else if(check(nx,ny)==false){
d=(d+1)%4;
dfs(x,y,d,++cnt,++cna);
}
}
else if(d==1){
nx=x+1,ny=y;
if(check(nx,ny)==true){
if(kmap[nx][ny]==0) ans++;
kmap[nx][ny]=1;
dfs(nx,ny,d,0,++cna);
}
else if(check(nx,ny)==false){
d=(d+1)%4;
dfs(x,y,d,++cnt,++cna);
}
}
else if(d==2){
nx=x,ny=y-1;
if(check(nx,ny)==true){
if(kmap[nx][ny]==0) ans++;
kmap[nx][ny]=1;
dfs(nx,ny,d,0,++cna);
}
else if(check(nx,ny)==false){
d=(d+1)%4;
dfs(x,y,d,++cnt,++cna);
}
}
else if(d==3){
nx=x-1,ny=y;
if(check(nx,ny)==true){
if(kmap[nx][ny]==0) ans++;
kmap[nx][ny]=1;
dfs(nx,ny,d,0,++cna);
}
else if(check(nx,ny)==false){
d=(d+1)%4;
dfs(x,y,d,++cnt,++cna);
}
}
return;
}
int main(){
scanf("%d",&T);
while(T--){
ans=1;
memset(Map,0,sizeof(Map));
memset(kmap,0,sizeof(kmap));
cin>>n>>m>>k;
cin>>x>>y>>d;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>kmp;
if(kmp=='.'){
Map[i][j]=0;
}
else if(kmp=='x'){
Map[i][j]=1;
}
}
}
dfs(x,y,d,0,0);
printf("%d\n",ans);
}
return 0;
}