#include <bits/stdc++.h>
using namespace std;
int N, s, Min, x, W, y, t;
int n[200];
int main() {
  scanf("%d%d", &N, &W);
  s = 0;
  Min = 2e9;
  x = 0;
  for (int i = 1; i <= N; i++) {
    scanf("%d", &n[i]);
    s += n[i];
  }
  for (int i = 1; i <= N; i++)
    if (n[i] < Min) {
      Min = n[i];
      x = i;
    }
  bool flag = false;
  if (W < 0) {
    printf("No\n");
    return 0;
  }
  if (W == 0) {
    if (s == 0)
      printf("Yes\n");
    else
      printf("No\n");
    return 0;
  }
  if (s < W) {
    printf("No\n");
    return 0;
  }
  if (n[x] > W) {
    flag = true;
    int j = 1;
    for (; j <= N && (j == x || n[j] == 0); j++)
      ;
    if (j > N || W <= 1) {
      printf("No\n");
      return 0;
    }
    printf("Yes\n");
    t = n[x] - W + 1;
    printf("%d ", j);
    for (int i = 1; i <= t; i++) printf("%d %d ", x, x);
    printf("%d ", j);
    y = 1;
    n[j]--;
    n[x] -= t;
    printf("%d ", x);
  } else
    printf("Yes\n");
  W -= n[x];
  for (int i = 1; i <= N; i++)
    if (i != x && W) {
      if (y + n[i] <= W) {
        y += n[i];
        for (int j = 1; j <= n[i]; j++) printf("%d %d ", i, i);
        n[i] = 0;
      } else {
        for (int j = 1; j <= W - y; j++) printf("%d %d ", i, i);
        n[i] -= W - y;
        y = W;
      }
    }
  if (!flag) printf("%d ", x);
  for (int i = 1; i <= N; i++)
    if (i != x)
      for (int j = 1; j <= n[i]; j++) printf("%d %d ", i, i);
  printf("%d ", x);
  n[x]--;
  for (int i = 1; i <= n[x]; i++) printf("%d %d ", x, x);
}
