#include #define int long long using namespace std; const int N=110; int n,m; int k,p; int sx,sy,tx,ty; int dx[]={-1,1,0,0},dy[]={0,0,1,-1}; int value[4]; char s[N][N]; bool vis[N][N][N]; int dist[N][N][N]; struct P{ int x,y; int cnt; }; int num=0; signed main(){ cin>>n>>m; for(int i=0;i<4;i++) cin>>value[i]; cin>>k>>p; cin>>sx>>sy>>tx>>ty; sx--,sy--,tx--,ty--; for(int i=0;i>s[i]; for(int i=0;iq; q.push({sx,sy,0});vis[sx][sy][0]=1; memset(dist,0x3f,sizeof dist); dist[sx][sy][0]=0; while(q.size()){ auto [x,y,cnt]=q.front();q.pop(); vis[x][y][cnt]=0; if(x==tx&&y==ty){ if(dist[x][y][cnt]<=k){ cout<<"Yes"; return 0; } } for(int i=0;i<4;i++){ int a=x+dx[i],b=y+dy[i]; if(a<0||b<0||a>=n||b>=m) continue; if(s[a][b]=='#') continue; if(s[a][b]=='@'&&cntdist[x][y][cnt]+p+value[i]){ dist[a][b][cnt+1]=dist[x][y][cnt]+p+value[i]; if(!vis[a][b][cnt+1]){ q.push({a,b,cnt+1}); vis[a][b][cnt+1]=1; } } } else if(s[a][b]=='.'){ if(dist[a][b][cnt]>dist[x][y][cnt]+value[i]){ dist[a][b][cnt]=dist[x][y][cnt]+value[i]; if(!vis[a][b][cnt]){ q.push({a,b,cnt}); vis[a][b][cnt]=1; } } } } } cout<<"No"; return 0; }