#include <bits/stdc++.h>
using namespace std;
#define sz(v) (int)v.size()
const int MAXN = 1505;
vector<int> vi[MAXN][MAXN], vj[MAXN][MAXN];
int mat[MAXN][MAXN], prv[MAXN][MAXN], nxt[MAXN][MAXN], marc[MAXN][MAXN];
void dfs(int i, int j){
if(mat[i][j] || marc[i][j])return;
marc[i][j] = 1;
for(int k = 0; k < sz(vi[i][j]); k++) dfs(vi[i][j][k], vj[i][j][k]);
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n,m,K,L; cin>>m>>n>>K>>L;
int ih,jh,iv,jv; cin>>jh>>ih>>jv>>iv;
int fimi, fimj;
for(int i = 0; i < n; i++){
string s; cin>>s;
for(int j = 0; j < m; j++){
if(s[j] == 'X')mat[i][j] = 1;
else if(s[j] == '*'){fimi = i; fimj = j;}
}
}
for(int j = 0; j < m; j++){
for(int i = 0; i < n; i++){
if(mat[i][j])prv[i][j] = i;
else if(i == 0)prv[i][j] = -1;
else prv[i][j] = prv[i-1][j];
}
for(int i = n-1; i >= 0; i--){
if(mat[i][j])nxt[i][j] = i;
else if(i == n-1)nxt[i][j] = n;
else nxt[i][j] = nxt[i+1][j];
}
}
int dif[2] = {-1,1};
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
for(int d = 0; d < 2; d++){
int vizi = i, vizj = j+dif[d];
if(vizj < 0 || vizj >= m || mat[vizi][vizj])continue;
if( max(prv[i][j], i-L+1) <= min(nxt[vizi][vizj]-L, i)
&& max(prv[vizi][vizj], i-L+1) <= min(nxt[i][j]-L, i)
&& max(prv[i][j], i-L+1) <= min(nxt[i][j]-L, i)
&& max(prv[vizi][vizj], i-L+1) <= min(nxt[vizi][vizj]-L, i) ){
vi[i][j].push_back(vizi); vj[i][j].push_back(vizj);
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
if(mat[i][j])prv[i][j] = j;
else if(j == 0)prv[i][j] = -1;
else prv[i][j] = prv[i][j-1];
}
for(int j = m-1; j >= 0; j--){
if(mat[i][j])nxt[i][j] = j;
else if(j == m-1)nxt[i][j] = m;
else nxt[i][j] = nxt[i][j+1];
}
}
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
for(int d = 0; d < 2; d++){
int vizi = i+dif[d], vizj = j;
if(vizi < 0 || vizi >= n || mat[vizi][vizj])continue;
if( max(prv[i][j], j-K+1) <= min(nxt[vizi][vizj]-K, j)
&& max(prv[vizi][vizj], j-K+1) <= min(nxt[i][j]-K, j)
&& max(prv[i][j], j-K+1) <= min(nxt[i][j]-K, j)
&&max(prv[vizi][vizj], j-K+1) <= min(nxt[vizi][vizj]-K, j) ){
vi[i][j].push_back(vizi); vj[i][j].push_back(vizj);
}
}
dfs(ih, jv);
if(marc[fimi][fimj])cout<<"YES\n";
else cout<<"NO\n";
}