import sys sys.setrecursionlimit(5*10**7) import math import bisect import heapq from collections import deque, defaultdict import random import itertools #from decimal import Decimal #from copy import copy, deepcopy #from sortedcontainers import SortedList # ------------------------------------------------- pin = sys.stdin.readline def ST(): return pin().rstrip() def IN(): return int(pin()) def IM(): return map(int, pin().split()) def IL(): return list(IM()) def SR(n:int)->list: return [pin().rstrip() for _ in range(n)] def IMatrix(n:int)->list: return [IL() for _ in range(n)] INF = 2*10**18+1 mod = 998244353 # ------------------------------------------------- #import pypyjit #pypyjit.set_param("max_unroll_recursion=-1") N, M = IM() A = IL() + [INF] if M == 1: print(1) print(A[0], 1) exit() ans = [] now = A[0] cnt = 1 for i in range(1, M+1): if A[i]-cnt == now: cnt += 1 else: ans.append((now, cnt)) now = A[i] cnt = 1 print(len(ans)) for i, j in ans: print(i, j)