import sys N, K = map(int, input().split()) if N == 1 and K == 1: print('Yes') print('1') sys.exit() if N * (N + 1) // 2 % K != 0 or N // K == 1: print('No') sys.exit() layer = [[j + 1 for j in range(K * i, K * (i + 1))] for i in range(N // K)] s = N * (N + 1) // 2 // K print('Yes') if N // K % 2 == 0: ans = [[] for i in range(K)] for i in range(N // K): if i % 2 == 0: for j in range(K): ans[j].append(layer[i][j]) else: for j in range(K): ans[j].append(layer[i][-1 - j]) for i in range(K): print(*ans[i]) else: ans = [[] for i in range(K)] for i in range(N // K - 3): if i % 2 == 0: for j in range(K): ans[j].append(layer[i][j]) else: for j in range(K): ans[j].append(layer[i][-1 - j]) layer = layer[-3:] for i in range(K): ans[i].append(layer[0][i]) ans[i].append(layer[1][(i + K // 2) % K]) for i in range(K): ans[i].append(s - sum(ans[i])) print(*ans[i])