#include <bits/stdc++.h>
using namespace std;
vector<int> ans[100005];
vector<int> a;
int main() {
  int sum, limit;
  scanf("%d%d", &sum, &limit);
  for (int i = 1; i <= limit; i++) {
    ans[i ^ (i & (i - 1))].push_back(i);
  }
  for (int i = 100000; i >= 1; i--) {
    if (ans[i].size() == 0) continue;
    for (int j = 0; j < ans[i].size() && sum >= i; j++) {
      sum -= i;
      a.push_back(ans[i][j]);
    }
  }
  if (sum == 0) {
    printf("%d\n", a.size());
    for (int i = 0; i < a.size(); i++) {
      printf(i == 0 ? "%d" : " %d", a[i]);
    }
    puts("");
  } else {
    puts("-1");
  }
  return 0;
}
