import Data.Graph import Data.Char import Data.Bool import Control.Monad idx w x y = x*w + y main = do [h,w] <- map read . words <$> getLine [sx,sy,gx,gy] <- map read . words <$> getLine bs <- map digitToInt . filter isDigit <$> getContents putStrLn (bool "NO" "YES" (maze h w (sx-1) (sy-1) (gx-1) (gy-1) bs)) maze h w sx sy gx gy bs = path g (idx w sx sy) (idx w gx gy) where g = buildG (0,h*w-1) $ do x1 <- [0..h-1] y1 <- [0..w-1] x2 <- [0..h-1] y2 <- [0..w-1] let v1 = idx w x1 y1 let v2 = idx w x2 y2 let d = abs (v1-v2) guard (elem d [1,w] || (elem d [2,2*w] && bs!!v1==bs!!v2 && bs!!(div (v1+v2) 2) < bs!!v1)) guard (if elem d [1,2] then div v1 w == div v2 w else True) guard (abs (bs!!v1 - bs!!v2) <= 1) return (v1,v2)