from collections import defaultdict, Counter, deque from itertools import groupby, accumulate, combinations, permutations, product, combinations_with_replacement from bisect import bisect_left, bisect_right from operator import itemgetter import math from heapq import heapify, heappush, heappop LMI=lambda:list(map(int, input().split())) LMS=lambda:list(map(str, input().split())) MI=lambda:map(int, input().split()) MS=lambda:map(str, input().split()) II=lambda:int(input()) IS=lambda:input().split() LI=lambda:list(input()) X,Y=MI() N,M=X*Y, X*Y ans=[] #真ん中X角形書いてみる for i in range(1,X+1): if i!=X: ans.append([i, i+1]) else: ans.append([i, 1]) #腕を書く cnt=X+1 for i in range(1,X+1): for j in range(Y-1): if j==0: ans.append([i, cnt]) else: ans.append([cnt-1, cnt]) cnt+=1 print(N,M) for i in ans: print(*i)