#include <iostream>
using namespace std;
int n, m;
int sx, sy;
int p;
int map[50][50];
int Qx[3000];
int Qy[3000];
int Qd[3000];
int r = -1, f = -1;
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};
bool visit[50][50];
void push(int x, int y, int d){
r++;
Qx[r] = x;
Qx[r] = y;
Qy[d] = d;
}
void pop(int &x, int &y, int &d){
f++;
x = Qx[f];
y = Qy[f];
d = Qd[f];
}
bool check(int a, int b, int xa, int ya, int xb, int yb){
int xx = xa - xb;
int yy = ya - yb;
if(a == 1){
if(xx == 1 && yy == 0) { // tren
if(b == 2 || b == 5 || b == 6 || b == 1) return true;
}
if(xx == -1 && yy == 0){ // duoi
if(b == 7 || b == 4 || b == 2 || b == 1) return true;
}
if(xx == 0 && yy == 1){ // trai
if(b == 3 || b == 4 || b == 5 || b == 1) return true;
}
if(xx == 0 && yy == -1){ // phai
if(b == 3 || b == 6 || b == 7 || b == 1) return true;
}
}
if (a == 2){
if(xx == 1 && yy == 0) {
if(b == 1 || b == 5 || b == 6 || b == 2) return true;
}
if(xx == -1 && yy == 0){
if(b == 1 || b == 4 || b ==7 || b == 2) return true;
}
}
if (a == 3){
if(xx == 0 && yy == 1){ // trai
if(b == 1 || b == 4 || b == 5 || b == 3) return true;
}
if(xx == 0 && yy == -1){ // phai
if(b == 1 || b == 6 || b == 7 || b == 3) return true;
}
}
if (a == 4){
if(xx == 1 && yy == 0) { // tren
if(b == 2 || b == 5 || b == 1 || b == 6) return true;
}
if(xx == 0 && yy == -1){ // phai
if(b == 3 || b == 6 || b == 7 || b == 1) return true;
}
}
if (a == 5){
if(xx == -1 && yy == 0){ // duoi
if(b == 7 || b == 4 || b == 2 || b == 1) return true;
}
if(xx == 0 && yy == -1){ // phai
if(b == 3 || b == 6 || b == 7 || b == 1) return true;
}
}
if (a == 6){
if(xx == -1 && yy == 0){ // duoi
if(b == 7 || b == 4 || b == 2 || b == 1) return true;
}
if(xx == 0 && yy == 1){ // trai
if(b == 3 || b == 4 || b == 5 || b == 1) return true;
}
}
if(a == 7){
if(xx == 0 && yy == 1){ // trai
if(b == 3 || b == 4 || b == 5 || b == 1) return true;
}
if(xx == 1 && yy == 0) { // tren
if(b == 2 || b == 5 || b == 6 || b == 1) return true;
}
}
return false;
}
void BFS(int x, int y, int k){
r = f = -1;
push(x,y,k);
visit[x][y] = true;
while( r != y){
pop(x,y,k);
for(int i = 0; i < 4; i++){
int xx = x + dx[i];
int yy = y + dy[i];
if(xx >= 0 && xx < n && yy >= 0 && yy < m){
if(visit[xx][yy] == false && k - 1 >= 0){
if(check(map[x][y], map[xx][yy], x,y,xx,yy)){
push(xx,yy,k-1);
visit[xx][yy] = true;
}
}
}
}
}
}
int main(){
freopen("input.txt", "r", stdin);
int T;
cin >> T;
for(int tc = 1; tc <= T; tc++){
cin >> n >> m >> sx >> sy >> p;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cin >> map[i][j];
visit[i][j] = false;
}
}
for(int i = 0; i < 4; i++){
int xx = sx + dx[i];
int yy = sy + dy[i];
if(xx >= 0 && xx < n && yy >= 0 && yy < m){
if(map[xx][yy] != 0) BFS(xx,yy,p);
}
}
int dem = 0;
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(visit[i][j] == true) dem++;
}
}
cout << dem << endl;
}
return 0;
}