#include <bits/stdc++.h>
using namespace std;
vector<pair<int, int> > u;
vector<pair<int, int> > ans;
int main() {
  int n, s, i, t, l, j, r, m;
  cin >> n >> s;
  if (s % 2) {
    puts("No");
    return 0;
  }
  for (i = 1; i <= n; ++i) {
    scanf("%d", &t);
    if (t) u.push_back(make_pair(-t, i));
  }
  s /= 2;
  sort(u.begin(), u.end());
  for (i = 0; s && i < u.size(); ++i) {
    if (u[i].first + u.size() < i + 1) {
      puts("No");
      return 0;
    }
    for (j = i + 1; s && u[i].first && j < u.size(); j = r) {
      for (l = j, r = u.size(); l + 1 < r;) {
        m = (l + r) >> 1;
        if (u[m].first == u[j].first)
          l = m;
        else
          r = m;
      }
      for (; s && l >= j && u[i].first; --l) {
        u[l].first++;
        if (!u[l].first) u.pop_back();
        ++u[i].first;
        --s;
        ans.push_back(make_pair(u[i].second, u[l].second));
      }
    }
    if (u[i].first) {
      puts("No");
      return 0;
    }
  }
  cout << "Yes" << endl;
  cout << ans.size() << endl;
  for (__typeof((ans).begin()) it = (ans).begin(); it != (ans).end(); ++it)
    printf("%d %d\n", it->first, it->second);
  return 0;
}
