#include using namespace std; typedef long long ll; typedef long double ld; #define REP(i, n) for (int i = 0; i < (n); ++i) #define REPR(i, n) for (int i = n - 1; i >= 0; --i) #define FOR(i, m, n) for (int i = m; i < n; ++i) #define FORR(i, m, n) for (int i = m; i >= n; --i) #define ALL(v) (v).begin(),(v).end() #define ALLR(v) (v).rbegin(),(v).rend() #define fi first #define se second #define PB push_back #define EB emplace_back using P = pair; template using PQ = priority_queue; template using QP = priority_queue,greater>; templatevoid debug(const T &v,ll h,ll w){for(ll i=0;ivoid debug(const T &v,ll n){for(ll i=0;ivoid debug(const vector&v){debug(v,v.size());} templatevoid debug(const vector>&v){for(auto &vv:v)debug(vv,vv.size());} templatevoid debug(stack st){while(!st.empty()){cout<void debug(queue st){while(!st.empty()){cout<void debug(deque st){while(!st.empty()){cout<void debug(PQ st){while(!st.empty()){cout<void debug(QP st){while(!st.empty()){cout<void debug(const set&v){for(auto z:v)cout<void debug(const multiset&v){for(auto z:v)cout<void debug(const array &a){for(auto z:a)cout<void debug(const map&v){for(auto z:v)cout<<"["<bool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b> h >> w; ll u,d,r,l,k,p;cin >> u >> d >> r >> l >> k >> p; ll sx,sy,gx,gy;cin >> sx >> sy >> gx >> gy; sx--,sy--,gx--,gy--; ll cst[4]={d,r,u,l}; vector c(h); REP(i,h) cin >> c[i]; QP> pq; pq.push({0,sx,sy}); vector> dis(h,vector(w,INF)); dis[sx][sy]=0; while(!pq.empty()){ auto [s,x,y]=pq.top();pq.pop(); if(s>dis[x][y]) continue; REP(i,4){ int nx=x+dx[i],ny=y+dy[i]; if(nx<0||nx>=h||ny<0||ny>=w) continue; if(c[nx][ny]=='#') continue; ll dd=cst[i]; if(c[nx][ny]=='@') dd+=p; if(chmin(dis[nx][ny],dis[x][y]+dd)){ pq.push({dis[nx][ny],nx,ny}); } } } if(dis[gx][gy]<=k) cout << "Yes" << endl; else cout << "No" << endl; }