#include <bits/stdc++.h>
using namespace std;
int main() {
  int t = 1;
  while (t--) {
    long long n, k;
    cin >> n >> k;
    long long sum = (1ll * n * (n + 1)) / 2;
    if (k < sum) {
      cout << -1;
      continue;
    }
    if (k == sum) {
      cout << sum << "\n";
      for (int i = 1; i <= n; i++) cout << i << " ";
      cout << "\n";
      for (int i = 1; i <= n; i++) cout << i << " ";
      continue;
    } else {
      long long d = k - sum;
      vector<long long> v1, v2;
      for (int i = n - 1; i >= 0; i -= 2) {
        v1.push_back(i);
        v2.push_back(i);
      }
      for (int i = 1; i < (int)v1.size(); i++) v1[i] += v1[i - 1];
      for (int i = 0; i < n / 2; i++) {
        v1.push_back(0);
        v2.push_back(0);
      }
      vector<long long>::iterator it;
      it = lower_bound(v1.begin(), v1.end() - n / 2, d);
      if (it == v1.end()) {
        it--;
        d = v1[v1.size() - 1];
      }
      int pos = it - v1.begin();
      vector<long long> v3;
      for (int i = 0; i < n - 1; i++) {
        v2[i] -= v2[i + 1];
      }
      for (int i = 0; i < pos; i++) {
        for (int j = 0; j < v2[i]; j++) v3.push_back(i + 1);
      }
      long long val = (pos == 0) ? v1[pos] : v1[pos] - v1[pos - 1];
      for (int i = 0; i < val; i++) v3.push_back(pos + 1);
      reverse(v3.begin(), v3.end());
      v3.push_back(0);
      d = v1[pos] - d;
      int i = 0;
      while (d-- > 0) v3[i++]--;
      sort(v3.rbegin(), v3.rend());
      long long sum = 0;
      for (int i = 0; i < (int)v3.size(); i++) {
        v3[i] += i + 1;
        sum += v3[i];
      }
      cout << sum << "\n";
      v1.clear();
      v2.clear();
      map<long long, long long> mp;
      int cnt = 1;
      for (int i = 0; i < (int)v3.size(); i++) mp[v3[i]]++;
      for (auto it1 : mp) {
        if ((it1.second) == 1) {
          v1.push_back(it1.first);
          v2.push_back(it1.first);
        } else {
          v1.push_back(cnt);
          v2.push_back(it1.first);
          v2.push_back(cnt);
          v1.push_back(it1.first);
          cnt++;
        }
      }
      for (int i = 0; i < (int)v1.size(); i++) cout << v1[i] << " ";
      cout << "\n";
      for (int i = 0; i < (int)v1.size(); i++) cout << v2[i] << " ";
    }
    cout << "\n";
  }
}
