// やけくそTLE解. //#define _GLIBCXX_DEBUG #include using namespace std; #define ll long long #define rep(i, n) for (ll i = 0; i < (ll)(n); i++) #define all(a) (a).begin(), (a).end() const ll INF32 = 2e9; const ll INF64 = 4e18; void printYN(bool ok){ if(ok)cout << "Yes" << endl; else cout << "No" << endl; return; } signed main() { int N, M; cin >> N >> M; int now = -1, i = 0, cnt = 0; vector> out; while(i> ai; if(now==-1){ now = ai; cnt = 1; } else if(ai-now==1){ now = ai; cnt++; } else { out.push_back({now-cnt+1,cnt}); now = ai; cnt = 1; } i++; } out.push_back({now-cnt+1,cnt}); cout << out.size() << endl; rep(i, out.size())cout << out[i].first << " " << out[i].second << endl; return 0; }