#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int b1[4] = { -1,1,0,0 }; int b2[4] = { 0,0,1,-1 }; long long b3[4]; string s[110]; bool bo[110][110] = { false }; int main() { long long h, w; cin >> h >> w; long long u, d, r, l, k, p; cin >> u >> d >> r >> l >> k >> p; b3[0] = u, b3[1] = d, b3[2] = r, b3[3] = l; int sx, sy, gx, gy; cin >> sx >> sy >> gx >> gy; sx--, sy--, gx--, gy--; for (int i = 0; i < h; i++) { cin >> s[i]; } priority_queue, vector>, greater>> que; que.push({ 0,sx,sy }); while (!que.empty()) { tuple t = que.top(); que.pop(); long long z = get<0>(t); int x = get<1>(t); int y = get<2>(t); if (bo[x][y]) { continue; } bo[x][y] = true; if (x == gx && y == gy) { if (z <= k) { cout << "Yes" << endl; } else { cout << "No" << endl; } return 0; } for (int i = 0; i < 4; i++) { if (x + b1[i] < 0 || x + b1[i] >= h || y + b2[i] < 0 || y + b2[i] >= w)continue; if (!bo[x + b1[i]][y + b2[i]]) { if (s[x + b1[i]][y + b2[i]] == '.') { que.push({ z + b3[i],x + b1[i],y + b2[i] }); } if (s[x + b1[i]][y + b2[i]] == '@') { que.push({ z + b3[i] + p,x + b1[i],y + b2[i] }); } } } } cout << "No" << endl; }