import sys def transpose(sol): colors, color, direction = sol h, w = len(color), len(color[0]) nc = [[0] * h for _ in range(w)] nd = [["?"] * h for _ in range(w)] conv = {">": "v", "<": "^", "v": ">", "^": "<", "?": "?"} for r in range(h): for c in range(w): nc[c][r], nd[c][r] = color[r][c], conv[direction[r][c]] return colors, nc, nd def small(h, w): colors = w // 2 + 1 if h == 1 else 2 if h == 2 else (w + 3) // 4 + 2 if h == 3 else 3 if h == 5 and w >= 10: colors = 4 a, d = [[0] * w for _ in range(h)], [["?"] * w for _ in range(h)] def horizontal(r): for c in range(0, w, 2): d[r][c], d[r][c + 1] = ">", "<" def vertical(r): for c in range(w): d[r][c], d[r + 1][c] = "v", "^" if h == 1: for c in range(w): a[0][c] = (c + 1) // 2 horizontal(0) elif h == 2: a[1] = [1] * w; vertical(0) elif h == 3: a[1] = [1] * w for c in range(w): a[2][c] = 1 if c % 4 in (0, 3) else 2 + c // 4 vertical(0); horizontal(2) elif h == 4: a[1], a[2], a[3] = [1] * w, [1] * w, [2] * w vertical(0); vertical(2) elif w in (6, 8): rows = ["122223", "121123", "122123", "111123", "222223"] if w == 6 else ["12222223", "12111123", "12211223", "11111123", "22222223"] a = [[int(x) - 1 for x in row] for row in rows] horizontal(0) for c in range(2, w - 2): d[0][c], d[1][c] = "v", "^" d[1][0], d[1][1], d[1][-2], d[1][-1] = ">", "<", ">", "<" horizontal(2) for c in range(w - 2): d[3][c], d[4][c] = "v", "^" d[3][-2], d[3][-1], d[4][-2], d[4][-1] = ">", "<", ">", "<" else: a[0], a[1], a[3], a[4] = [0] * w, [1] * w, [2] * w, [3] * w a[2] = [1 + c % 2 for c in range(w)] vertical(0); horizontal(2); vertical(3) return colors, a, d def large(h, w): a, d = [[0] * w for _ in range(h)], [["?"] * w for _ in range(h)] a[0] = [0] * (w - 1) + [1] a[1] = [1] * w; a[1][-2] = 0 a[2] = [1] * w; a[2][1] = a[2][-2] = 0 a[3] = [0] * w; a[3][0] = a[3][-1] = 1 for r in range(4, h - 2): a[r] = [1 if c % 2 == 0 else 0 for c in range(w - 2)] + [0, 1] a[-2], a[-1] = [1] * w, [2] * w for c in range(w - 2): d[0][c], d[1][c] = "v", "^" for r in range(4): d[r][-2], d[r][-1] = ">", "<" d[2][0], d[2][1], d[3][0], d[3][1] = ">", "<", ">", "<" for c in range(2, w - 2): d[2][c], d[3][c] = "v", "^" for r in range(4, h - 2): for c in range(0, w, 2): d[r][c], d[r][c + 1] = ">", "<" for c in range(w): d[-2][c], d[-1][c] = "v", "^" return 3, a, d H, W = map(int, sys.stdin.buffer.read().split()) swapped, h, w = H > W, min(H, W), max(H, W) ans = small(h, w) if h <= 5 else large(h, w) if w % 2 == 0 else transpose(large(w, h)) if swapped: ans = transpose(ans) colors, a, d = ans out = [str(colors)] for r in range(H): for c in range(W): if d[r][c] not in (">", "v"): continue nr, nc = r + (d[r][c] == "v"), c + (d[r][c] == ">") out.append(f"{r + 1} {c + 1} {a[r][c] + 1} {nr + 1} {nc + 1} {a[nr][nc] + 1}") print("\n".join(out))