#include using namespace std; using ll = long long; using lll = __int128; template using vc = vector; using vi = vc; using vl = vc; template using vv = vc>; using vvi = vv; using vvl = vv; using vs = vc; using P = pair; const int INF = 1e9; const ll INF_ll = 1LL << 60; vl dx = {1, 0, -1, 0}; // vl dx = {1,1,0,-1,-1,-1,0,1}; vl dy = {0, 1, 0, -1}; // vl dx = {0,1,1,1,0,-1,-1,-1}; using ld = long double; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rep1(i, n) for (int i = 1; i <= (int)(n); i++) #define drep(i, n) for (int i = (int)(n)-1; i >= 0; i--) #define drep1(i, n) for (int i = (int)(n); i >= 1; i--) #define nfor(i, s, n) for (ll i = s; i < (ll)(n); i++) // i=s,s+1...n-1 ノーマルfor #define dfor(i, s, n) for (ll i = (s)-1; i >= (ll)(n); i--) // s-1スタートでnまで落ちる #define fore(c, s) for (auto c : s) // for_each #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define chmax(x, y) x = max(x, y) #define chmin(x, y) x = min(x, y) #define YES cout << "Yes" << endl #define NO cout << "No" << endl #define YN \ { cout << "Yes" << endl; } \ else { \ cout << "No" << endl; \ } #define dame cout << -1 << endl #define vc_unique(v) v.erase(unique(v.begin(), v.end()), v.end()); bool out_grid(ll i, ll j, ll h, ll w) { // trueならcontinueする return (!(0 <= i && i < h && 0 <= j && j < w)); } ll nc2(ll x) { return x * (x - 1) / 2; } ll nc3(ll x) { return x * (x - 1) * (x - 2) / 6; } // const int mint = 998244353; // const int mint = 1000000007; int main() { int N, M; cin >> N >> M; vi A(M); rep(i, M) cin >> A[i]; vc

ans; ans.emplace_back(P(A.front(), 1)); rep(i, M - 1) { if (A[i] + 1 == A[i + 1]) ans.back().second++; else { ans.emplace_back(P(A[i + 1], 1)); } } cout << ans.size() << endl; rep(i, ans.size()) { cout << ans[i].first << ' ' << ans[i].second << endl; } }