import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; import java.util.HashMap; import java.util.HashSet; public class Main { static void Solve() { var N = ToInt(InputNum()); var M = ToInt(InputNum()); var ans = new ArrayList>(); ans.add(new ArrayList<>(Arrays.asList(N * M, N * M))); for (var i = 0; i < N; i++) { ans.add(new ArrayList<>(Arrays.asList(i + 1, (i + 1) % N + 1))); } var margin = 0; var to = 0; for (var i = 1; i <= N; i++) { for (var j = 0; j < M - 1; j++) { if (j == 0) { to = i + N + margin; ans.add(new ArrayList<>(Arrays.asList(i, to))); } else { ans.add(new ArrayList<>(Arrays.asList(to, to + 1))); to++; } } margin += M - 2; } for (ArrayList arrayList : ans) { Output(arrayList, " "); } } public static void main(String[] args) { Solve(); System.out.print(stringBuilder.toString()); sc.close(); } static Scanner sc = new Scanner(System.in); static StringBuilder stringBuilder = new StringBuilder(); static String el = System.getProperty("line.separator"); // #region 入出力 static long InputNum() { return sc.nextLong(); } static ArrayList InputNums(long n) { ArrayList li = new ArrayList<>(); for (var i = 0; i < n; i++) li.add(sc.nextLong()); return li; } static ArrayList> InputsNums(long h, long w) { ArrayList> li = new ArrayList>(); for (var i = 0; i < h; i++) { li.add(InputNums(w)); } return li; } static String InputString() { return sc.next(); } static String InputStringLine() { return sc.nextLine(); } static ArrayList InputStrings(long n) { var li = new ArrayList(); for (var i = 0; i < n; i++) li.add(InputString()); return li; } static ArrayList InputStringLines(long n) { var li = new ArrayList(); for (var i = 0; i < n; i++) li.add(InputStringLine()); return li; } static ArrayList> InputsStrings(long h, long w) { var li = new ArrayList>(); for (var i = 0; i < h; i++) li.add(InputStrings(w)); return li; } static void Output(boolean n) { stringBuilder.append(n ? "Yes" + el : "No" + el); } static void Output(T t) { stringBuilder.append(t.toString() + el); } static void Output(T[] ts, String sep) { if (ts.length != 0) { stringBuilder.append(ts[0]); for (var i = 1; i < ts.length; i++) stringBuilder.append(sep + ts[i]); stringBuilder.append(el); } } static void Output(ArrayList ts, String sep) { if (!ts.isEmpty()) { stringBuilder.append(ts.get(0)); for (var i = 1; i < ts.size(); i++) stringBuilder.append(sep + ts.get(i)); stringBuilder.append(el); } } // #endregion // #region 変換 static int ToInt(long n) { return (int) n; } // #endregion }