Buggy python submission (verdict: Runtime Error):
def examA():
    N = I()
    S = SI(); T = SI()
    ans = 2*N
    for l in range(N-1,-1,-1):
        flag = True
        for i in range(l+1):
            if S[N-1-i] != T[l-i]:
                flag = False
                break
        if flag:
            ans -=(l+1)
            break
    print(ans)
    return

def examB():
    N, x = LI()
    d = defaultdict(bool)
    if x==1 or x==2*N-1:
        print("No")
        return
    if N>=3 and (x==2 or x==2*N-2):
        print("No")
        return
    print("Yes")
    ans = [0]*(2*N-1)
    ans[N-1] = x
    d[x] = True
    for i in range(2):
        ans[N+i] = x+1+i
        ans[N-2-i] = x-1-i
        d[x+1+i] = True
        d[x-1-i] = True
#    print(d); print(ans)
    cur = 1
    for j in range(N-3):
        while(d[cur]):
            cur +=1
        ans[j] = cur
        cur +=1
    for j in range(N+2,2*N-1):
        while(d[cur]):
            cur +=1
        ans[j] = cur
        cur +=1
    for v in ans:
        print(v)
    return

import sys,copy,bisect,itertools,heapq,math
from heapq import heappop,heappush,heapify
from collections import Counter,defaultdict,deque
def I(): return int(sys.stdin.readline())
def LI(): return list(map(int,sys.stdin.readline().split()))
def LSI(): return list(map(str,sys.stdin.readline().split()))
def LS(): return sys.stdin.readline().split()
def SI(): return sys.stdin.readline().strip()
mod = 10**9 + 7
inf = float('inf')

if __name__ == '__main__':
    examB()


Fixed submission:
def examA():
    N = I()
    S = SI(); T = SI()
    ans = 2*N
    for l in range(N-1,-1,-1):
        flag = True
        for i in range(l+1):
            if S[N-1-i] != T[l-i]:
                flag = False
                break
        if flag:
            ans -=(l+1)
            break
    print(ans)
    return

def examB():
    N, x = LI()
    d = defaultdict(bool)
    if x==1 or x==2*N-1:
        print("No")
        return
    print("Yes")
    ans = [0]*(2*N-1)
    ans[N-1] = x
    d[x] = True

    ans[N] = x+1
    ans[N-2] = x-1
    d[x+1] = True
    d[x-1] = True
#    print(d); print(ans)
    cur = 1
    for j in range(N-2):
        while(d[cur]):
            cur +=1
        ans[j] = cur
        cur +=1
    for j in range(N+1,2*N-1):
        while(d[cur]):
            cur +=1
        ans[j] = cur
        cur +=1
    for v in ans:
        print(v)
    return

import sys,copy,bisect,itertools,heapq,math
from heapq import heappop,heappush,heapify
from collections import Counter,defaultdict,deque
def I(): return int(sys.stdin.readline())
def LI(): return list(map(int,sys.stdin.readline().split()))
def LSI(): return list(map(str,sys.stdin.readline().split()))
def LS(): return sys.stdin.readline().split()
def SI(): return sys.stdin.readline().strip()
mod = 10**9 + 7
inf = float('inf')

if __name__ == '__main__':
    examB()

Buggy python submission (verdict: Runtime Error):
def examA():
    N = I()
    S = SI(); T = SI()
    ans = 2*N
    for l in range(N-1,-1,-1):
        flag = True
        for i in range(l+1):
            if S[N-1-i] != T[l-i]:
                flag = False
                break
        if flag:
            ans -=(l+1)
            break
    print(ans)
    return

def examB():
    N, x = LI()
    d = defaultdict(bool)
    if x==1 or x==2*N-1:
        print("No")
        return
    if N>=3 and (x==2 or x==2*N-2):
        print("No")
        return
    print("Yes")
    ans = [0]*(2*N-1)
    ans[N-1] = x
    d[x] = True
    for i in range(2):
        ans[N+i] = x+1+i
        ans[N-2-i] = x-1-i
        d[x+1+i] = True
        d[x-1-i] = True
    print(d); print(ans)
    cur = 0
    for j in range(N-3):
        while(d[cur]):
            cur +=1
        ans[j] = cur
        cur +=1
    for j in range(N+2,2*N-1):
        while(d[cur]):
            cur +=1
        ans[j] = cur
        cur +=1
    for v in ans:
        print(v)
    return

import sys,copy,bisect,itertools,heapq,math
from heapq import heappop,heappush,heapify
from collections import Counter,defaultdict,deque
def I(): return int(sys.stdin.readline())
def LI(): return list(map(int,sys.stdin.readline().split()))
def LSI(): return list(map(str,sys.stdin.readline().split()))
def LS(): return sys.stdin.readline().split()
def SI(): return sys.stdin.readline().strip()
mod = 10**9 + 7
inf = float('inf')

if __name__ == '__main__':
    examB()


Fixed submission:
def examA():
    N = I()
    S = SI(); T = SI()
    ans = 2*N
    for l in range(N-1,-1,-1):
        flag = True
        for i in range(l+1):
            if S[N-1-i] != T[l-i]:
                flag = False
                break
        if flag:
            ans -=(l+1)
            break
    print(ans)
    return

def examB():
    N, x = LI()
    d = defaultdict(bool)
    if x==1 or x==2*N-1:
        print("No")
        return
    print("Yes")
    ans = [0]*(2*N-1)
    ans[N-1] = x
    d[x] = True

    ans[N] = x+1
    ans[N-2] = x-1
    d[x+1] = True
    d[x-1] = True
#    print(d); print(ans)
    cur = 1
    for j in range(N-2):
        while(d[cur]):
            cur +=1
        ans[j] = cur
        cur +=1
    for j in range(N+1,2*N-1):
        while(d[cur]):
            cur +=1
        ans[j] = cur
        cur +=1
    for v in ans:
        print(v)
    return

import sys,copy,bisect,itertools,heapq,math
from heapq import heappop,heappush,heapify
from collections import Counter,defaultdict,deque
def I(): return int(sys.stdin.readline())
def LI(): return list(map(int,sys.stdin.readline().split()))
def LSI(): return list(map(str,sys.stdin.readline().split()))
def LS(): return sys.stdin.readline().split()
def SI(): return sys.stdin.readline().strip()
mod = 10**9 + 7
inf = float('inf')

if __name__ == '__main__':
    examB()