#include <bits/stdc++.h>
using namespace std;
vector<int> ans[2];
int main() {
  int a, b;
  cin >> a >> b;
  int sum = 0;
  set<int> st;
  for (int i = 1; i; i++) {
    if (sum + i > a + b) break;
    sum += i;
    st.insert(i);
  }
  while (a && st.size()) {
    set<int>::iterator it = st.upper_bound(a);
    if (it == st.begin()) break;
    it--;
    ans[0].push_back(*it);
    a -= *it;
    st.erase(it);
  }
  while (st.size()) {
    ans[1].push_back(*st.begin());
    st.erase(st.begin());
  }
  for (int i = 0; i < 2; i++) {
    cout << ans[i].size() << endl;
    for (int j = 0; j < ans[i].size(); j++) printf("%d ", ans[i][j]);
    printf("\n");
  }
  return 0;
}
