#include <bits/stdc++.h>   using namespace std;   pair<long long, long long> a[300001];   long long n, k, s, m;   bool b[300001];   inline long long read() {     long long sum = 0, x = 1;     char ch = getchar();     while (ch <  0  || ch >  9 ) {       if (ch ==  - ) x = -1;       ch = getchar();     }     while (ch >=  0  && ch <=  9 ) {       sum = sum * 10 + ch -  0 ;       ch = getchar();     }     return sum * x;   }   inline void write(long long x) {     if (x < 0) {       putchar( - );       x = -x;     }     if (x > 9) write(x / 10);     putchar(x % 10 +  0 );     return;   }   inline bool cmp(pair<long long, long long> a, pair<long long, long long> b) {     return a.first > b.first;   }   signed main() {     n = read();     k = read();     for (register long long i = 1; i <= n; ++i) a[i].second = i;     for (m = 1; m <= n; ++m) {       for (register long long j = m * 2; j <= n; j += m) ++a[j].first;       s += a[m].first;       if (s >= k) break;     }     if (s < k) {       puts( No );       return 0;     }     sort(a + 1, a + m, cmp);     long long t = m;     for (register long long i = 1; i <= m; ++i) {       if (a[i].second > m / 2 && s - a[i].first >= k) {         s -= a[i].first;         b[a[i].second] = true;         t--;       }       if (s == k) break;     }     puts( Yes );     write(t);     putchar(  n );     for (register long long i = 1; i <= m; ++i)       if (!b[i]) {         write(i);         putchar(   );       }     return 0;   }   