#include <bits/stdc++.h>
using namespace std;
int n,s;
stack<int> l,r;
int main()
{
cin>>n;
int a[n+1];
for (int i=0;i<n;i++)cin>>a[i];
a[n]=0;
for(int i=0;i<=n;i+=1){
while(s<a[i])l.push(i+1),s++;
while(s>a[i])r.push(i),s--;
}
cout<<l.size()<<'\n';
while (l.size()) cout<<l.top()<<' '<<r.top()<<'\n',l.pop(),r.pop();
}/*1691140156.3667114*/
MAXBRIDGE Maximise the bridges | WLDRPL Wildcard Replacement |
1221. Split a String in Balanced Strings | 1002. Find Common Characters |
1602A - Two Subsequences | 1555A - PizzaForces |
1607B - Odd Grasshopper | 1084A - The Fair Nut and Elevator |
1440B - Sum of Medians | 1032A - Kitchen Utensils |
1501B - Napoleon Cake | 1584B - Coloring Rectangles |
1562B - Scenes From a Memory | 1521A - Nastia and Nearly Good Numbers |
208. Implement Trie | 1605B - Reverse Sort |
1607C - Minimum Extraction | 1604B - XOR Specia-LIS-t |
1606B - Update Files | 1598B - Groups |
1602B - Divine Array | 1594B - Special Numbers |
1614A - Divan and a Store | 2085. Count Common Words With One Occurrence |
2089. Find Target Indices After Sorting Array | 2090. K Radius Subarray Averages |
2091. Removing Minimum and Maximum From Array | 6. Zigzag Conversion |
1612B - Special Permutation | 1481. Least Number of Unique Integers after K Removals |