#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int, int>
#define all(x) (x).begin(),(n).end()
vector<vector<int>> marc;
int n, m, l, k;
vector<vector<char> > mat;
vector<vector<int>> dir, esq, cima, baixo;
vector<pii> viz = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
bool sol(int x, int y){
if(x<0||x>=n||y<0||y>=m)return 0;
if(marc[x][y])return 0;
marc[x][y]=1;
if(dir[x][y]+esq[x][y]-1<k||cima[x][y]+baixo[x][y]-1<l)return 0;
if(mat[x][y]=='*')return 1;
for(auto [ax, ay]:viz){
if(sol(x+ax, y+ay))return 1;
}
return 0;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m >> k >> l;
swap(n, m);
mat.resize(n, vector<char>(m));
marc.resize(n, vector<int>(m, 0));
int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2;
swap(x1, y1);
swap(x2, y2);
dir.resize(n, vector<int>(m));
esq.resize(n, vector<int>(m));
cima.resize(n, vector<int>(m));
baixo.resize(n, vector<int>(m));
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
cin >> mat[i][j];
}
}
for(int i=0; i<n; i++){
for(int j=0; j<m; j++){
if(mat[i][j]=='X'){
esq[i][j]=0;
cima[i][j]=0;
}else{
if(i==0) cima[i][j]=1;
else cima[i][j]=cima[i-1][j]+1;
if(j==0)esq[i][j]=1;
else esq[i][j]=esq[i][j-1]+1;
}
}
}
for(int i=n-1; i>=0; i--){
for(int j=m-1; j>=0; j--){
if(mat[i][j]=='X'){
dir[i][j]=0;
baixo[i][j]=0;
}else{
if(i==n-1)baixo[i][j]=1;
else baixo[i][j]=baixo[i+1][j]+1;
if(j==m-1)dir[i][j]=1;
else dir[i][j]=dir[i][j+1]+1;
}
}
}
if(sol(x1, y2)){
cout << "YES"<<endl;
}else cout << "NO"<<endl;
}