import Data.Maybe (maybe)

import qualified Data.List as L

main :: IO ()
main = do
    [n, x] <- fmap read . words <$> getLine
    answer $ solve n x

type Answer = Maybe [Int]
answer :: Answer -> IO ()
answer = putStrLn "No" `maybe` \xs -> putStrLn "Yes" >> mapM_ print xs

solve :: Int -> Int -> Answer
solve n x
    | x == 1    = Nothing
    | x == z    = Nothing
    | otherwise = Just $ wing [1 ..] ++ [x] ++ wing [n ..]
  where
    z     = 2 * n - 1
    range = (max 1 $ n - 2, min (2 * n - 1) $ n + 2)
    wing  = L.reverse . L.take (n - 1) . L.filter (x /=)

valid :: Int -> [Int] -> Bool
valid k = go
  where
    median (x, y, z)
      | max x (min y z) == x && min x (max y z) == x = x
      | max y (min z x) == y && min y (max z x) == y = y
      | max z (min x y) == z && min z (max x y) == z = z
    inner (x : y : z : xs) = median (x, y, z) : inner (y : z : xs)
    inner               _  = []
    go [x] = x == k
    go  xs = go $ inner xs
