import Data.Maybe
import Control.Monad
import qualified Data.ByteString.Char8 as C

readInt' = fst.fromJust.C.readInt
readLnInt = map readInt'.C.words<$>C.getLine
readCsInt n = concat<$>replicateM n readLnInt

x ? (a,b) = if x then a else b
aliq = ((0==).).rem
-- a `isFrom` (b `to` c)
a `isFrom` [b,c] = a >= b && a <= c
b `to` c = [b,c]

main = do
 inputs <- readLnInt
 putStr $ (solve inputs)?("Yes","No")

solve [animals,legs]
 | odd legs = False
 | legs `isFrom` ((2*animals) `to` (4*animals)) = True
 | otherwise = False
