#include <bits/stdc++.h>
using namespace std;
const int inf(1010101010);
int n, a[100005];
vector<pair<int, int> > re;
vector<int> stk;
inline void match(int r) {
  assert(((int)(stk).size()));
  re.push_back(make_pair(stk.back(), r));
  stk.pop_back();
}
void solve() {
  if (!(cin >> n)) exit(0);
  for (int i(0); i < (n); i++) cin >> a[i];
  for (int i(0); i < (a[0]); i++) stk.push_back(0);
  for (int i(0); i < (n - 1); i++) {
    for (int j(0); j < (a[i] - a[i + 1]); j++) match(i);
    for (int j(0); j < (a[i + 1] - a[i]); j++) stk.push_back(i + 1);
  }
  for (int i(0); i < (a[n - 1]); i++) match(n - 1);
  cout << ((int)(re).size()) << endl;
  for (__typeof((re).end()) it((re).begin()); it != ((re).end()); ++it)
    printf("%d %d\n", 1 + (*it).first, 1 + (*it).second);
}
int main() {
  while (1) solve();
}
