#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const int MOD = 1e9 + 7;

const int dx[] = {0, 0, -1, 1, -1, -1, 1, 1};
const int dy[] = {-1, 1, 0, 0, -1, 1, -1, 1};

int a[52][52];
int f[2][52][52];
LL g[2][52][52][8];

int main()
{
	ios::sync_with_stdio(false);
	int T, n, m, S, X, Y;
	cin >> T;
	while (T--) {
		cin >> n >> m >> S >> X >> Y;
		memset(g, 0, sizeof(g));
		for (int i = 1; i <= n; i++) {
			for (int j = 1; j <= m; j++) {
				cin >> a[i][j];
				f[0][i][j] = a[i][j];
				for (int k = 0; k < 8; k++) g[1][i][j][k] = a[i][j];
			}
		}
		for (int t = 1; t <= S; t++) {
			int now = t & 1, next = !now;
			for (int i = 1; i <= n; i++) {
				for (int j = 1; j <= m; j++) {
					LL delta = a[i][j];
					delta += g[now][i + 1][j + 1][0];
					delta += g[now][i + 1][j - 1][1];
					delta += g[now][i + 1][j    ][2];
					delta += g[now][i - 1][j + 1][3];
					delta += g[now][i - 1][j - 1][4];
					delta += g[now][i - 1][j    ][5];
					delta += g[now][i    ][j + 1][6];
					delta += g[now][i    ][j - 1][7];
					f[now][i][j] = delta %= MOD;
					g[next][i][j][0] = delta + g[now][i + 1][j + 1][0];
					g[next][i][j][1] = delta + g[now][i + 1][j - 1][1];
					g[next][i][j][2] = delta + g[now][i + 1][j    ][2];
					g[next][i][j][3] = delta + g[now][i - 1][j + 1][3];
					g[next][i][j][4] = delta + g[now][i - 1][j - 1][4];
					g[next][i][j][5] = delta + g[now][i - 1][j    ][5];
					g[next][i][j][6] = delta + g[now][i    ][j + 1][6];
					g[next][i][j][7] = delta + g[now][i    ][j - 1][7];
				}
			}
		}
		cout << f[S & 1][X][Y] << '\n';
	}
	return 0;
}