#include using namespace std; #define ll long long #define ld long double #define pb push_back #define mp make_pair #define pii pair #define pll pair #define pdd pair #define all(x) (x).begin(), (x).end() #define fi first #define se second const int NMAX = 37; int v[NMAX][NMAX][NMAX][NMAX]; int main() { srand(time(0)); cin.sync_with_stdio(false); int N, M, K, L; int a, b, c, d; 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", &v[i][j][k][l]); int sol = 1 << 30; int CC = 0; for (int t = 1; t <= 150;) { int A = 1, B = 1, C = 1, D = 1; for (int nr = 1; nr <= 20; nr++) { A = rand() % N + 1; B = rand() % M + 1; C = rand() % K + 1; D = rand() % L + 1; if (A + a - 1 <= N && B + b - 1 <= M && C + c - 1 <= K && D + d - 1 <= L) break; } if (A + a - 1 <= N && B + b - 1 <= M && C + c - 1 <= K && D + d - 1 <= L) { int mlc = 1 << 30; mlc = -mlc; for (int i = A; i <= A + a - 1; i++) for (int j = B; j <= B + b - 1; j++) for (int k = C; k <= C + c - 1; k++) for (int l = D; l <= D + d - 1; l++) mlc = max(mlc, v[i][j][k][l]); sol = min(sol, mlc); t++; } if (++CC == 10000000) break; } printf("%d\n", sol); return 0; }