#include <bits/stdc++.h>
using namespace std;
pair<int, int> num[100005];
vector<int> ans;
int lowbit(int x) { return (x & -x); }
int main() {
  int sum, limit;
  scanf("%d %d", &sum, &limit);
  for (int i = 1; i <= limit; i++) {
    num[i] = make_pair(lowbit(i), i);
  }
  sort(num + 1, num + limit + 1);
  for (int i = limit; i >= 1; i--) {
    if (sum == 0) break;
    if (sum >= num[i].first) {
      sum -= num[i].first;
      ans.push_back(num[i].second);
    }
  }
  if (sum == 0) {
    printf("%d\n", ans.size());
    for (int i = 0; i < ans.size() - 1; i++) printf("%d ", ans[i]);
    printf("%d\n", ans[ans.size() - 1]);
  } else
    printf("-1\n");
  return 0;
}
