#include #include #include #include #include #include #include #include #include #include #include #include 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; }