#include <bits/stdc++.h>
using namespace std;
const long long maxn = 1e5 + 17;
long long n, h[maxn], p[maxn], cnt[maxn];
long long s;
long long get(long long k) {
  if (k == 1) return (long long)n * (n + 1) / 2;
  h[0] = 1;
  for (long long i = 1; i < n; i++) h[i] = h[(i + k - 1) / k - 1] + 1;
  return accumulate(h, h + n, 0ll);
}
long long sum(long long l, long long r) {
  return (long long)r * (r - 1) / 2 - (long long)l * (l - 1) / 2;
}
int32_t main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> s;
  if (s < n + n - 1 || s > (long long)n * (n + 1) / 2) return cout << "No\n", 0;
  long long lo = 0, hi = n - 1;
  while (hi - lo > 1) {
    long long mid = lo + hi >> 1;
    (get(mid) <= s ? hi : lo) = mid;
  }
  cerr << get(3) << '\n';
  cerr << hi << '\n';
  cout << "Yes\n";
  h[0] = 1;
  long long rem = n - 1;
  s -= 1;
  long long ptr = 0, most = 1;
  while (rem) {
    if (cnt[ptr] == hi ||
        sum(max(h[ptr] + 1, most) + 1, max(h[ptr] + 1, most) + rem) + h[ptr] +
                1 <
            s) {
      ptr++;
      continue;
    }
    cnt[ptr]++;
    p[n - rem] = ptr;
    h[n - rem] = h[ptr] + 1;
    most = max(most, h[n - rem]);
    rem--;
    s -= h[ptr] + 1;
  }
  for (long long i = 1; i < n; i++) cout << p[i] + 1 << ' ';
  cout << '\n';
  cerr << accumulate(h, h + n, 0ll) << '\n';
}
