#include <bits/stdc++.h>
using namespace std;
long long t, n, i, j, k, x, y, z, l, r, mid, ans, mod = 1e9 + 7, g, m;
long long b[400005], c[400005];
char ch;
string s, st;
vector<pair<long long, long long> > u;
struct num {
  long long x, y;
} a[200005];
bool srt(num a, num b) { return a.x > b.x; }
int main() {
  ios::sync_with_stdio(NULL);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (i = 0; i < n; i++) cin >> a[i].x, a[i].y = i + 1;
  sort(a, a + n, srt);
  for (i = 1; i < n && a[0].x; i++)
    if (a[i].x > 1)
      u.push_back({i, i - 1}), a[i].x--, a[i - 1].x--;
    else if (j == 0)
      u.push_back({i, i - 1}), a[i].x--, a[i - 1].x--, j++;
    else if (j == 1)
      u.push_back({i, 0}), a[i].x--, a[0].x--, j++;
    else
      break;
  z = i - 1;
  if (z == 1) z++;
  for (i; i < n; i++) {
    for (j = 0; j < i && a[i].x; j++)
      if (a[j].x) u.push_back({j, i}), a[i].x--, a[j].x--;
    if (a[i].x) return cout << "NO", 0;
  }
  cout << "YES " << z << "\n" << n - 1 << "\n";
  for (auto i : u) cout << a[i.first].y << " " << a[i.second].y << "\n";
}
