#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cassert>
using namespace std;


const int N = 40, M = N*N*N*N;
int v[N][N][N][N];
int a1[N][N][N][N];
const int INF = 2e9;

int main() {
  int n, m, k, l;
  int a, b, c, d;
  cin >> n >> m >> k >> l;
  cin >> a >> b >> c >> d;
  for(int in = 0; in < n; ++in) 
    for(int im = 0; im < m; ++im) 
      for(int ik = 0; ik < k; ++ik) 
        for(int il = 0; il < l; ++il) 
              scanf("%d", &v[in][im][ik][il]);

  for(int in = 0; in < n; ++in) 
    for(int im = 0; im < m; ++im) 
      for(int ik = 0; ik < k; ++ik) 
        for(int il = 0; il < l; ++il) 
          a1[in][im][ik][il] = -INF;

  for(int in = 0; in < n; ++in) {
    for(int im = 0; im < m; ++im) {
      for(int ik = 0; ik < k; ++ik) {
        for(int il = 0; il < l; ++il) {
          if(il + d > l) break;
          for(int id = 0; id < d; ++id)
            a1[in][im][ik][il] = max(a1[in][im][ik][il], v[in][im][ik][il + id]);
        }
      }
    }
  }

  for(int in = 0; in < n; ++in) {
    for(int im = 0; im < m; ++im) {
      for(int ik = 0; ik < k; ++ik) {
        if(ik + c > k) break;
        for(int il = 0; il < l; ++il) {
          for(int id = 0; id < c; ++id)
            a1[in][im][ik][il] = max(a1[in][im][ik][il], a1[in][im][ik+id][il]);
        }
      }
    }
  }

  for(int in = 0; in < n; ++in) {
    for(int im = 0; im < m; ++im) {
      if(im + b > m) break;
      for(int ik = 0; ik < k; ++ik) {
        for(int il = 0; il < l; ++il) {
          for(int id = 0; id < b; ++id)
            a1[in][im][ik][il] = max(a1[in][im][ik][il], a1[in][im+id][ik][il]);
        }
      }
    }
  }

  for(int in = 0; in < n; ++in) {
    if(in + a > n) break;
    for(int im = 0; im < m; ++im) {
      for(int ik = 0; ik < k; ++ik) {
        for(int il = 0; il < l; ++il) {
          for(int id = 0; id < a; ++id)
            a1[in][im][ik][il] = max(a1[in][im][ik][il], a1[in+id][im][ik][il]);
        }
      }
    }
  }

  int ans = 2e9;
  for(int in = 0; in < n; ++in) {
    if(in + a > n) break;
    for(int im = 0; im < m; ++im) {
      if(im + b > m) break;
      for(int ik = 0; ik < k; ++ik) {
        if(ik + c > k) break;
        for(int il = 0; il < l; ++il) {
          if(il + d > l) break;
          ans = min(ans, a1[in][im][ik][il]);
        }
      }
    }
  }

  cout << ans << endl;

  return 0;
}