using System;
using CompLib.Util;

public class Program
{
    private int N, X;

    public void Solve()
    {
        var sc = new Scanner();
        N = sc.NextInt();
        X = sc.NextInt();
        int k = N * 2 - 1;

        if (N == 2)
        {
            if (X == 2)
            {
                Console.WriteLine("Yes");
                Console.WriteLine("1 2 3");
            }
            else
            {
                Console.WriteLine("No");
            }

            return;
        }


        // 下から2段目 中央にX2つ

        // ... W X Y Z ... (Y < X < W,Z) or (W,Z < X < Y)

        int y, w, z;
        int min, max;
        if (1 <= X - 1 && X + 2 <= k)
        {
            y = X - 1;
            w = X + 1;
            z = X + 2;
            min = X - 1;
            max = X + 2;
        }
        else if (1 <= X - 2 && X + 1 <= k)
        {
            w = X - 2;
            z = X - 1;
            y = X + 1;
            min = X - 2;
            max = X + 1;
        }
        else
        {
            Console.WriteLine("No");
            return;
        }

        // A[N-1:N+2] = {W,X,Y,Z}

        int[] a = new int[k];
        int tmp = 1;
        for (int i = 0; i < N - 2; i++)
        {
            while (min <= tmp && tmp <= max) tmp++;
            a[i] = tmp++;
        }

        a[N - 2] = w;
        a[N - 1] = X;
        a[N] = y;
        a[N + 1] = z;

        for (int i = N + 2; i < k; i++)
        {
            while (min <= tmp && tmp <= max) tmp++;
            a[i] = tmp++;
        }

        Console.WriteLine("Yes");
        Console.WriteLine(string.Join(" ", a));
    }

    public static void Main(string[] args) => new Program().Solve();
}

namespace CompLib.Util
{
    using System;
    using System.Linq;

    class Scanner
    {
        private string[] _line;
        private int _index;
        private const char Separator = ' ';

        public Scanner()
        {
            _line = new string[0];
            _index = 0;
        }

        public string Next()
        {
            if (_index >= _line.Length)
            {
                string s;
                do
                {
                    s = Console.ReadLine();
                } while (s.Length == 0);

                _line = s.Split(Separator);
                _index = 0;
            }

            return _line[_index++];
        }

        public string ReadLine()
        {
            _index = _line.Length;
            return Console.ReadLine();
        }

        public int NextInt() => int.Parse(Next());
        public long NextLong() => long.Parse(Next());
        public double NextDouble() => double.Parse(Next());
        public decimal NextDecimal() => decimal.Parse(Next());
        public char NextChar() => Next()[0];
        public char[] NextCharArray() => Next().ToCharArray();

        public string[] Array()
        {
            string s = Console.ReadLine();
            _line = s.Length == 0 ? new string[0] : s.Split(Separator);
            _index = _line.Length;
            return _line;
        }

        public int[] IntArray() => Array().Select(int.Parse).ToArray();
        public long[] LongArray() => Array().Select(long.Parse).ToArray();
        public double[] DoubleArray() => Array().Select(double.Parse).ToArray();
        public decimal[] DecimalArray() => Array().Select(decimal.Parse).ToArray();
    }
}

Measured memory_bytes: 40368