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)