import sys
# sys.setrecursionlimit(10 ** 6)
# import pypyjit
# pypyjit.set_param('max_unroll_recursion=-1')
from collections import defaultdict as dd
S = input
R = range
P = print
def I(): return int(S())
def M(): return map(int, S().split())
def L(): return list(M())
def O(): return list(map(int, open(0).read().split()))
def yn(b): print("Yes" if b else "No")
biga = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
smaa = "abcdefghijklmnopqrstuvwxyz"
ctoi = lambda c: ord(c) - ord('a')
ctoi2 = lambda c: ord(c) - ord('A')
itoc = lambda i: chr(ord('a') + i)
itoc2 = lambda i: chr(ord('A') + i)
inf = 10 ** 18
mod = 998244353
dxy4 = [(-1, 0), (0, -1), (1, 0), (0, 1)]
dxy8 = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]
def acc(a):
	b = [0]
	for i in a:
		b.append(b[-1] + i)
	return b
def gin(N, M):
	g = [[] for _ in range(N)]
	for _ in range(M):
		u, v = map(int, input().split())
		u -= 1
		v -= 1
		g[u].append(v)
		g[v].append(u)
	return g

x,y=M();n=x*y;ed=[]
for i in R(x):
	for j in R(y-1):
		ed.append((i*y+j,i*y+j+1))
	ed.append((i*y,(i+1)%x*y))
print(n,n)
for i,j in ed:
	print(i+1,j+1)