#include <bits/stdc++.h>
using namespace std;
template <class _T>
inline void read(_T &_x) {
  int _t;
  bool _flag = false;
  while ((_t = getchar()) != '-' && (_t < '0' || _t > '9'))
    ;
  if (_t == '-') _flag = true, _t = getchar();
  _x = _t - '0';
  while ((_t = getchar()) >= '0' && _t <= '9') _x = _x * 10 + _t - '0';
  if (_flag) _x = -_x;
}
const int maxn = 1010;
struct Node {
  int id, v;
  bool operator<(Node B) const { return v < B.v; }
} a[maxn];
int main() {
  int n, w, sum = 0;
  read(n), read(w);
  for (int i = 1; i <= n; ++i) {
    read(a[i].v);
    a[i].id = i;
    sum += a[i].v;
  }
  sort(a + 1, a + n + 1);
  if (sum < w || w <= 0)
    puts("No");
  else {
    if (a[1].v <= w) {
      puts("Yes");
      int rest = sum - w;
      cout << a[1].id;
      int i;
      for (i = n; i && rest >= a[i].v; --i) {
        for (int j = 1; j <= a[i].v; ++j) {
          cout << ' ' << a[i].id << ' ' << a[i].id;
        }
        rest -= a[i].v;
      }
      for (int j = 1; j <= rest; ++j) cout << ' ' << a[i].id << ' ' << a[i].id;
      cout << ' ' << a[1].id;
      a[1].v -= 1;
      a[i].v -= rest;
      for (int j = 1; j <= i; ++j)
        for (int k = 1; k <= a[j].v; ++k)
          cout << ' ' << a[j].id << ' ' << a[j].id;
      cout << endl;
    } else if (n == 1 || w == 1) {
      puts("No");
    } else {
      puts("Yes");
      cout << a[2].id;
      for (int j = 1; j < a[1].v; ++j) cout << ' ' << a[1].id << ' ' << a[1].id;
      cout << ' ' << a[2].id;
      for (int j = 1; j < w - 1; ++j) cout << ' ' << a[2].id << ' ' << a[2].id;
      cout << ' ' << a[1].id;
      a[2].v -= w - 1;
      for (int i = 2; i <= n; ++i) {
        for (int j = 1; j <= a[i].v; ++j) {
          cout << ' ' << a[i].id << ' ' << a[i].id;
        }
      }
      cout << ' ' << a[1].id;
    }
  }
  return 0;
}
