import Control.Applicative import Control.Monad import qualified Data.ByteString.Char8 as B import Data.Maybe (fromJust) import Text.Printf import Debug.Trace readInts :: B.ByteString -> [Int] readInts = map (fst . fromJust . B.readInt) . B.words getInts :: IO [Int] getInts = liftM readInts B.getLine dx = [-1,1,2,2,1,-1,-2,-2] dy = [-2,-2,-1,1,2,2,1,-1] dfs x y 0 = [(x,y)] dfs x y n = concat [(x',y'):(dfs x' y' (n-1)) | (x',y') <- map (\i -> (x+dx!!i, y+dy!!i)) [0..7]] pr True = "YES" pr False = "NO" main = do [x,y] <- getInts putStrLn $ pr $ (x,y) `elem` dfs 0 0 3