#include <bits/stdc++.h>
using namespace std;
const int MAX = 505;
int n, a[MAX];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  vector<int> n1, n2;
  for (int i = 0; i < n; i++)
    if (a[i] == 1)
      n1.push_back(i);
    else
      n2.push_back(i);
  if (n2.empty()) {
    cout << "NO" << endl;
    return 0;
  }
  vector<pair<int, int>> res;
  for (int i = 0; i < n2.size() - 1; i++) {
    res.push_back({n2[i], n2[i + 1]});
    a[n2[i]]--, a[n2[i + 1]]--;
  }
  int d = n2.size() - 1;
  if (n1.size() >= 1) {
    res.push_back({n2[0], n1[0]});
    d++;
    a[n2[0]]--;
  }
  if (n1.size() >= 2) {
    res.push_back({n2.back(), n1[1]});
    d++;
    a[n2.back()]--;
  }
  int j = 0;
  while (j < n2.size() && !a[n2[j]]) j++;
  for (int i = 2; i < n1.size(); i++) {
    if (j == n2.size()) {
      printf("NO\n");
      return 0;
    }
    res.push_back({n1[i], n2[j]});
    a[n2[j]]--;
    while (j < n2.size() && !a[n2[j]]) j++;
  }
  cout << "YES " << d << "\n";
  cout << res.size() << "\n";
  for (auto &p : res) cout << p.first + 1 << " " << p.second + 1 << "\n";
}
