#include <iostream>
#include <fstream>

#include <algorithm>
#include <deque>
using namespace std;

const int MAX_N = 40;

int A[MAX_N][MAX_N][MAX_N][MAX_N];

int d1[MAX_N][MAX_N][MAX_N][MAX_N];
int d2[MAX_N][MAX_N][MAX_N][MAX_N];
int d3[MAX_N][MAX_N][MAX_N][MAX_N];
int d4[MAX_N][MAX_N][MAX_N][MAX_N];


int main() {
    //ifstream cin("fis.in");
    int N, M, K, L;
    int a, b, c, d;
    cin >> N >> M >> K >> L;
    cin >> a >> b >> c >> d;

    for(int i = 1; i <= N; i++) {
        for(int j = 1; j <= M; j++) {
            for(int x = 1; x <= K; x++) {
                for(int y = 1; y <= L; y++) {
                    cin >> A[i][j][x][y];
                }
            }
        }
    }

    for(int i = 1; i <= N; i++) {
        for(int j = 1; j <= M; j++) {
            for(int k = 1; k <= K; k++) {
                deque<int> Q;
                for(int l = 1; l < d; l++) {
                    while(!Q.empty() && A[i][j][k][l] > A[i][j][k][Q.back()]) {
                        Q.pop_back();
                    }
                    Q.push_back(l);
                }
                for(int l = d; l <= L; l++) {
                    if(!Q.empty() && Q.front() <= l - d) {
                        Q.pop_front();
                    }
                    while(!Q.empty() && A[i][j][k][l] > A[i][j][k][Q.back()]) {
                        Q.pop_back();
                    }
                    Q.push_back(l);
                    d1[i][j][k][l] = A[i][j][k][Q.front()];
                }
            }
        }
    }

    for(int i = 1; i <= N; i++) {
        for(int j = 1; j <= M; j++) {
            for(int l = d; l <= L; l++) {
                deque<int> Q;
                for(int k = 1; k < c; k++) {
                    while(!Q.empty() && d1[i][j][k][l] > d1[i][j][Q.back()][l]) {
                        Q.pop_back();
                    }
                    Q.push_back(k);
                }
                for(int k = c; k <= K; k++) {
                    if(!Q.empty() && Q.front() <= k - c) {
                        Q.pop_front();
                    }
                    while(!Q.empty() && d1[i][j][k][l] > d1[i][j][Q.back()][l]) {
                        Q.pop_back();
                    }
                    Q.push_back(k);
                    d2[i][j][k][l] = d1[i][j][Q.front()][l];

                }
            }
        }
    }

    for(int i = 1; i <= N; i++) {
        for(int k = c; k <= K; k++) {
            for(int l = d; l <= L; l++) {
                deque<int> Q;
                for(int j = 1; j < b; j++) {
                    while(!Q.empty() && d2[i][j][k][l] > d2[i][Q.back()][k][l]) {
                        Q.pop_back();
                    }
                    Q.push_back(j);
                }
                for(int j = b; j <= M; j++) {
                    if(!Q.empty() && Q.front() <= j - b) {
                        Q.pop_front();
                    }
                    while(!Q.empty() && d2[i][j][k][l] > d2[i][Q.back()][k][l]) {
                        Q.pop_back();
                    }
                    Q.push_back(j);
                    d3[i][j][k][l] = d2[i][Q.front()][k][l];
                }
            }
        }
    }

    int ans = 1e9 + 1;

    for(int j = b; j <= M; j++) {
        for(int k = c; k <= K; k++) {
            for(int l = d; l <= L; l++) {
                deque<int> Q;
                for(int i = 1; i < a; i++) {
                    while(!Q.empty() && d3[i][j][k][l] > d3[Q.back()][j][k][l]) {
                        Q.pop_back();
                    }
                    Q.push_back(i);
                }
                for(int i = a; i <= N; i++) {
                    if(!Q.empty() && Q.front() <= i - a) {
                        Q.pop_front();
                    }
                    while(!Q.empty() && d3[i][j][k][l] > d3[Q.back()][j][k][l]) {
                        Q.pop_back();
                    }
                    Q.push_back(i);
                    d4[i][j][k][l] = d3[Q.front()][j][k][l];
                    ans = min(ans, d4[i][j][k][l]);
                }
            }
        }
    }

    cout << ans;
    return 0;
}