int dif[1005][1005];
void solve(){
int n,m,a,b;cin>>n>>m>>a>>b;
rep(i,0,n+1)rep(j,0,m+1)dif[i][j]=0;
vector<vector<int>>g(n+1,vector<int>(m+1));
rep(i,1,n)rep(j,1,m)cin>>g[i][j];
rep(i,1,n){
rep(j,1,m){
dif[i][j] = g[i][j]-g[i-1][j]-g[i][j-1]+g[i-1][j-1];
}
}
auto work =[&](int x,int y,int a,int b,int s){
int xx= x+a,yy=y+b;
dif[x][y]+=s;
dif[xx][y]-=s;
dif[x][yy]-=s;
dif[xx][yy]+=s;
};
rep(i,1,n){
rep(j,1,m){
dif[i][j]=dif[i][j]+dif[i-1][j]+dif[i][j-1]-dif[i-1][j-1];
if(dif[i][j]<0){
cout<<"QAQ"<<endl;return;
}else if(dif[i][j]>0){
if(i+a-1>n||j+b-1>m){
cout<<"QAQ"<<endl;return;
}else work(i,j,a,b,-dif[i][j]);
}
}
}
cout<<"^_^"<<endl;
}