#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,c,d;
int A[1010][1010];
int s[1010][1010];
int z[1010][1010];
deque<int> q[1010];
int ans=-2e9;
int sum(int a,int b,int alen,int blen){
int x=a+alen-1,y=b+blen-1;
return s[x][y]-s[a-1][y]-s[x][b-1]+s[a-1][b-1];
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>a>>b>>c>>d;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j) cin>>A[i][j];
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j) s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+A[i][j];
for(int i=1;i<=n-c+1;++i){
for(int j=1;j<=m-d+1;++j){
z[i][j]=sum(i,j,c,d);
}
}
int upi=a-c+1,upj=b-d+1;
for(int j=2;j<=m-d;++j){
for(int i=2;i<=n-c;++i){
while(q[i].size() && j-q[i].front()>=upj) q[i].pop_front();
while(q[i].size() && z[i][q[i].back()]>=z[i][j]) q[i].pop_back();
q[i].push_back(j);
}
deque<int> qq;
for(int i=2;i<=n-c;++i){
while(qq.size() && i-qq.front()>=upi) qq.pop_front();
while(qq.size() && z[qq.back()][q[qq.back()].front()]>=z[i][q[i].front()]) qq.pop_back();
qq.push_back(i);
if(j>=upj-1 && i>=upi-1){
ans=max(ans,sum(i-c+1,j-d+1,a,b)-z[qq.front()][q[qq.front()].front()]);
cout<<i-c+1<<" "<<j-d+1<<" "<<a<<" "<<b<<" "<<sum(i-c+1,j-d+1,a,b)<<" "<<z[qq.front()][q[qq.front()].front()]<<"\n";
}
}
}
cout<<ans<<"\n";
return 0;
}