import Data.List
import Control.Applicative

main = do
  [n,z] <- map read . words <$> getLine :: IO [Int]
  --mapM_ print $ filter (\xs -> elem 6 (last xs)) $ map simulate (permutations [1,2,3,4,5,6,7])
  --  print $ simulate [9,1,8,6,7,3,4,5,2]

  let ans = solve n z

  putStrLn $ if null ans then "No" else "Yes"
  mapM_ print ans

solve n z
  | z == 1 || z == n*2-1 = []
  | otherwise = a ++ [z-1,z,z+1] ++ b
  where (a,b) = splitAt (n`div`2) ([1..z-2] ++ [z+2..n*2-1])

simulate (x:[]) = [[x]]
simulate xs = xs : simulate ys
  where
    ys = aux xs

aux (x:y:[]) = []
aux (x:y:z:xs) = (sort [x,y,z])!!1 : (aux (y:z:xs))
