#include using namespace std; #define INF 1000000000000000000LL #define MAXN 40 int N, M, L, K; int a, b, c, d; int A[MAXN][MAXN][MAXN][MAXN]; long long S[MAXN][MAXN][MAXN][MAXN]; int main() { // assert(freopen("oxygen.in", "r", stdin)); // assert(freopen("oxygen.out", "w", stdout)); cin.sync_with_stdio(false); scanf("%d %d %d %d", &N, &M, &K, &L); scanf("%d %d %d %d", &a, &b, &c, &d); for (int i = 1; i <= N; i++) { for (int j = 1; j <= M; j++) { for (int k = 1; k <= K; k++) { for (int l = 1; l <= L; l++) { scanf("%d", &A[i][j][k][l]); } } } } long long ans = INF; for (int i = 1; i <= N; i++) { for (int j = 1; j <= M; j++) { for (int k = 1; k <= K - c + 1; k++) { for (int l = 1; l <= L - d + 1; l++) { int ek = k + c - 1; int el = l + d - 1; S[i][j][k][l] = -INF; for (int pk = k; pk <= ek; pk++) { for (int pl = l; pl <= el; pl++) { S[i][j][k][l] = max(S[i][j][k][l], (long long) A[i][j][pk][pl]); } } } } } } for (int i = 1; i <= N - a + 1; i++) { for (int j = 1; j <= M - b + 1; j++) { for (int k = 1; k <= K - c + 1; k++) { for (int l = 1; l <= L - d + 1; l++) { int ei = i + a - 1; int ej = j + b - 1; long long vmax = 0; for (int pi = i; pi <= ei; pi++) { for (int pj = j; pj <= ej; pj++) { long long cmax = S[pi][pj][k][l]; vmax = max(vmax, cmax); } } ans = min(ans, vmax); } } } } cout << ans << endl; return 0; }