#include <bits/stdc++.h>
using namespace std;
template <class _T>
inline _T sqr(const _T& x) {
  return x * x;
}
template <class _T>
inline string tostr(const _T& a) {
  ostringstream os("");
  os << a;
  return os.str();
}
const long double PI = 3.1415926535897932384626433832795;
const long double EPS = 1e-11;
int n, k;
int a[1024];
int ind[1024];
int s;
bool cmp(int p1, int p2) { return a[p1] < a[p2]; }
int main() {
  cout << setiosflags(ios::fixed) << setprecision(10);
  scanf("%d%d", &n, &k);
  s = 0;
  for (int i = 0; i < (int)(n); i++) {
    scanf("%d", &a[i]);
    s += a[i];
    ind[i] = i;
  }
  sort(ind, ind + n, cmp);
  if (s < k || k < 1) {
    puts("No");
    return 0;
  }
  if (n == 1) {
    if (s != k) {
      puts("No");
      return 0;
    } else {
      puts("Yes");
      for (int i = 0; i < (int)(a[0] * 2); i++) {
        if (i) putchar(' ');
        printf("1");
      }
      puts("");
      return 0;
    }
  }
  int mi = a[ind[0]];
  if (k >= mi) {
    puts("Yes");
    printf("%d", ind[0] + 1);
    int t = s - k;
    for (int i = 0; i < (int)(n); i++) {
      if (ind[0] == i) continue;
      if (!t) break;
      while (a[i] > 0) {
        printf(" %d", i + 1);
        printf(" %d", i + 1);
        a[i]--;
        t--;
        if (!t) break;
      }
    }
    printf(" %d", ind[0] + 1);
    a[ind[0]]--;
    for (int i = 0; i < (int)(n); i++) {
      while (a[i] > 0) {
        printf(" %d", i + 1);
        printf(" %d", i + 1);
        a[i]--;
      }
    }
    puts("");
  } else {
    if (k == 1) {
      puts("No");
      return 0;
    }
    puts("Yes");
    int t = 0;
    while (t == ind[0]) t++;
    printf("%d", t + 1);
    int r = a[ind[0]] - (k - 1);
    for (int i = 0; i < (int)(r); i++) {
      printf(" %d", ind[0] + 1);
      printf(" %d", ind[0] + 1);
      a[ind[0]]--;
    }
    printf(" %d", t + 1);
    a[t]--;
    k--;
    s = 0;
    for (int i = 0; i < (int)(n); i++) {
      s += a[i];
    }
    printf(" %d", ind[0] + 1);
    t = s - k;
    for (int i = 0; i < (int)(n); i++) {
      if (ind[0] == i) continue;
      if (!t) break;
      while (a[i] > 0) {
        printf(" %d", i + 1);
        printf(" %d", i + 1);
        a[i]--;
        t--;
        if (!t) break;
      }
    }
    printf(" %d", ind[0] + 1);
    a[ind[0]]--;
    for (int i = 0; i < (int)(n); i++) {
      while (a[i] > 0) {
        printf(" %d", i + 1);
        printf(" %d", i + 1);
        a[i]--;
      }
    }
    puts("");
  }
  return 0;
}
