#include <bits/stdc++.h>
int get_mini(int in[], int n) {
  int i, k, mx = 100000;
  for (i = 0; i < n; i++)
    if (in[i] && mx > in[i]) mx = in[i], k = i;
  return k;
}
int get_mx(int in[], int n) {
  int i, k, mx = -1;
  for (i = 0; i < n; i++)
    if (mx < in[i]) mx = in[i], k = i;
  return k;
}
int main() {
  int i, j, k, l, m, n, W;
  int in[120], sum, now;
  scanf("%d%d", &n, &W);
  for (i = 0; i < n; i++) scanf("%d", in + i);
  if (W <= 0) {
    puts("No");
    return 0;
  }
  sum = 0;
  for (i = 0; i < n; i++) sum += in[i];
  now = get_mini(in, n);
  if (W > sum) {
    puts("No");
    return 0;
  }
  if (n == 1 && W != sum) {
    puts("No");
    return 0;
  }
  if (in[now] > 1 && W == 1) {
    puts("No");
    return 0;
  }
  puts("Yes");
  if (W >= in[now]) {
    k = sum - W;
    printf("%d", now + 1);
    for (i = 0; i < n; i++)
      if (i != now) {
        while (in[i] > 0 && k > 0) {
          printf(" %d %d", i + 1, i + 1);
          in[i]--;
          k--;
        }
      }
    printf(" %d", now + 1);
    in[now]--;
    for (i = 0; i < n; i++)
      while (in[i] > 0) {
        printf(" %d %d", i + 1, i + 1);
        in[i]--;
      }
  } else {
    for (k = 0; k < n; k++)
      if (k != now) break;
    printf("%d", k + 1);
    while (in[now] > 1) printf(" %d %d", now + 1, now + 1), in[now]--;
    printf(" %d %d", k + 1, now + 1);
    in[k]--;
    sum = 0;
    for (i = 0; i < n; i++) sum += in[i];
    k = sum - W + 1;
    for (i = 0; i < n; i++)
      if (i != now) {
        while (in[i] > 0 && k > 0) {
          printf(" %d %d", i + 1, i + 1);
          in[i]--;
          k--;
        }
      }
    printf(" %d", now + 1);
    in[now]--;
    for (i = 0; i < n; i++)
      while (in[i] > 0) {
        printf(" %d %d", i + 1, i + 1);
        in[i]--;
      }
  }
  puts("");
  return 0;
}
