#include using namespace std; long long AA[50][50][50][50]; int S[50][50][50][50]; int BB[50][50][50][50]; int Sgn[16]; int A, B, C, D, N, M, K, L; int sum(int N, int M, int K, int L) { int s = 0; 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) s += BB[i][j][k][l]; return s; } bool check(long long x) { 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) { S[i][j][k][l] = (AA[i][j][k][l] <= x); for(int c = 1; c < 16; ++c) { S[i][j][k][l] -= Sgn[c] * S[i-(c&1)][j-((c>>1)&1)][k-((c>>2)&1)][l-((c>>3)&1)]; } // cerr << i << " " << j << " " << k << " " << l << " " << S[i][j][k][l] << '\n'; } for(int i = A; i <= N; ++i) for(int j = B; j <= M; ++j) for(int k = C; k <= K; ++k) for(int l = D; l <= L; ++l) { long long ans = 0; for(int c = 0; c < 16; ++c) { ans += Sgn[c] * S[i-(c&1)*A][j-((c>>1)&1)*B][k-(c>>2)&1*C][l-((c>>3)&1)*D]; } if(ans == A * B * C * D) return true; } return false; } void Read(long long &a) { char c, sgn = 0; for(c = getchar(); !isdigit(c) && c != '-'; c = getchar()); if(c == '-') {sgn = 1; c = getchar();} for(a = 0; isdigit(c); c = getchar()) { a = (a << 1) + (a << 3) + c - '0'; } if(sgn) a = -a; } int main() { cin >> N >> M >> K >> L >> A >> B >> C >> D; for(int i = 0; i < 16; ++i) { Sgn[i] = 1; for(int j = 0; j < 4; ++j) { if(i & (1 << j)) Sgn[i] = -Sgn[i]; } } 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) { Read(AA[i][j][k][l]); AA[i][j][k][l] += 1e9 + 1; } long long ans = 0; for(long long step = (1LL << 33); step; step >>= 1LL) { if(!check(ans + step)) ans += step; } cout << ans - 1e9; return 0; }