#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
long long a[MAXN], b[MAXN];
long long n, s;
bool check(long long k) {
  for (int i = 1; i <= n; i++) b[i] = 0;
  long long sum = s - 1, p = 2, q = 1, h = 1;
  a[1] = b[1] = 1;
  while (p <= n) {
    q *= k, h++;
    for (int i = 1; i <= q && p <= n; i++, p++) a[p] = h, sum -= h, b[h]++;
  }
  if (sum < 0) return 0;
  p = n;
  while (sum > 0) {
    h++;
    if (b[a[p]] == 1) --p;
    long long t = min(sum, h - a[p]);
    sum -= t, b[a[p]]--, a[p] += t, p--;
  }
  return 1;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> s;
  if (s < 2 * n - 1 || s > n * (n + 1) / 2) {
    cout << "No" << endl;
    exit(0);
  }
  int l = 1, r = n - 1;
  while (l < r) {
    int m = (l + r) >> 1;
    if (check(m))
      r = m;
    else
      l = m + 1;
  }
  check(l);
  sort(a + 1, a + n + 1);
  cout << "Yes" << endl;
  for (int p = 1, i = 2, cnt = 0; i <= n; i++) {
    while (a[p] < a[i] - 1) p++, cnt = 0;
    cout << p << " ";
    ++cnt;
    if (cnt == l) cnt = 0, ++p;
  }
  cout << endl;
  return 0;
}
