#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100;
const int INF = 0x3f3f3f3f;
template <class T>
void Read(T &x) {
  x = 0;
  char c = getchar();
  bool flag = 0;
  while (c < '0' || '9' < c) {
    if (c == '-') flag = 1;
    c = getchar();
  }
  while ('0' <= c && c <= '9') {
    x = x * 10 + c - '0';
    c = getchar();
  }
  if (flag) x = -x;
}
int n, W;
int a[MAXN + 10], pos[MAXN + 10];
int main() {
  Read(n), Read(W);
  int mnp = 0, mnv = INF;
  int sum = 0;
  for (int i = 1; i <= n; ++i) {
    Read(a[i]), sum += a[i];
    if (mnv > a[i]) mnp = i, mnv = a[i];
    pos[i] = i;
  }
  swap(a[1], a[mnp]), swap(pos[1], pos[mnp]);
  if (W <= 0 || W > sum)
    puts("No");
  else if (W < mnv) {
    if (W < 2 || n < 2)
      puts("No");
    else {
      puts("Yes");
      printf("%d ", pos[2]);
      int t = a[1] - W + 1;
      for (int i = 1; i <= t; ++i) printf("%d %d ", pos[1], pos[1]);
      printf("%d %d ", pos[2], pos[1]);
      for (int i = 2; i <= a[2]; ++i) printf("%d %d ", pos[2], pos[2]);
      for (int i = 3; i <= n; ++i)
        for (int j = 1; j <= a[i]; ++j) printf("%d %d ", pos[i], pos[i]);
      if (t + 1 == a[1])
        printf("%d\n", pos[1]);
      else {
        printf("%d ", pos[1]);
        for (int i = t + 2; i <= a[1]; ++i)
          printf("%d %d%c", pos[1], pos[1], i == a[1] ? '\n' : ' ');
      }
    }
  } else {
    puts("Yes");
    for (int i = 1; i < a[1]; ++i) printf("%d %d ", pos[1], pos[1]);
    int res = a[1] - 1;
    if (res == W - 1) printf("%d ", pos[1]);
    for (int i = 2; i <= n; ++i) {
      for (int j = 1; j <= a[i]; ++j) {
        printf("%d %d ", pos[i], pos[i]);
        if (++res == W - 1) printf("%d ", pos[1]);
      }
    }
    printf("%d\n", pos[1]);
  }
}
