X, Y = map(int, input().split()) three = list(range(X)) two = list(range(X, X + X * (Y - 2))) one = list(range(X + X * (Y - 2), 2 * X + X * (Y - 2))) N = M = X * Y edge = [] for i in range(X): edge.append((three[i] + 1, three[(i + 1) % X] + 1)) for i in range(X): edge.append((two[i] + 1, three[i] + 1)) for i in range(X, X * (Y - 2)): edge.append((two[i] + 1, two[i - X] + 1)) for i in range(X): edge.append((one[i] + 1, two[-i - 1] + 1)) print(N, M) assert len(one) + len(two) + len(three) == N and len(edge) == M for u, v in edge: print(u, v)