#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef bitset<2550> bits; int main(){ int h,w; //cin >> h >> w; scanf("%d%d", &h, &w); vector a(2),r(2),c(2); for(int i=0; i<2; i++) scanf("%d%d%d", &a[i], &r[i], &c[i]);//cin >> a[i] >> r[i] >> c[i]; vector m(h); char buff[100]; for(int i=0; i> m[i]; if( abs(a[0]-a[1])%2 != abs(r[0]-r[1] + c[0]-c[1])%2){ //cout << "No" << endl; puts("No"); return 0; } bits inc,dec; for(int i=0; i s(mx_size); s[a[0]].set( (w+1)*r[0] + c[0] ); queue update; vector used(mx_size, 0); update.push(a[0]); used[a[0]] = 1; while(update.size() && s[a[1]][(w+1)*r[1] + c[1]]==false){ int k = update.front(); update.pop(); used[k] = 0; bits tmp = (s[k]<<1) | (s[k]>>1) | (s[k]<<(w+1)) | (s[k]>>(w+1)); if(k+10){ bits next = s[k-1]|(tmp&dec); if(next != s[k-1]){ s[k-1] = next; if(used[k-1]==0){ used[k-1] = 1; update.push(k-1); } } } } if(s[a[1]][(w+1)*r[1] + c[1]]){ //cout << "Yes" << endl; puts("Yes"); }else{ //cout << "No" << endl; puts("No"); } return 0; }