def construct_grid(H, W): grid = [[0 for _ in range(W)] for _ in range(H)] numbers = list(range(1, H*W +1)) # 分割: 奇数インデックスと偶数インデックス odd_positions = [] even_positions = [] for i in range(H): for j in range(W): if (i + j) % 2 == 0: odd_positions.append((i, j)) else: even_positions.append((i, j)) # 奇数位置に後半の大きい数を、偶数位置に前半の小さい数を配置 mid = len(numbers)//2 for idx, (i,j) in enumerate(odd_positions): grid[i][j] = numbers[mid + idx] for idx, (i,j) in enumerate(even_positions): grid[i][j] = numbers[idx] return grid # 入力の受け取り H, W = map(int, input().split()) # グリッドの構築 grid = construct_grid(H, W) # 出力 print("Yes") for row in grid: print(' '.join(map(str, row)))