#include using ll = long long; using ull = unsigned long long; using ld = long double; #define rep(i,a,b) for (int i = a; i < b; i++) #define irep(i,a,b) for (int i = a; i > b; i--) #define print(n) cout << n << endl #define rup(a,b) (a+b-1)/b using namespace std; int main(){ cout << fixed << setprecision(15); ll N,S; cin>>N>>S; ll right = N; ll left = 0; while (right-left>1){ ll mid = (right+left)/2; ll a = mid*(mid+1)/2; if (a>=S) right = mid; else left = mid; } ll a = (right+1)*right/2; if (a==S){ print(right); rep(i,1,right+1){ cout << i << " "; } }else{ print(right-1); ll b = a - S; rep(i,1,right+1){ if (i == b) continue; cout << i << " "; } } cout << endl; //system("pause"); return 0; }