#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
int a[N];
int main() {
  int n;
  long long k;
  scanf("%d%lld", &n, &k);
  long long minK = 0;
  long long maxK = 0;
  for (int i = 1; i <= n; i++) {
    a[i] = i;
    minK += i;
    maxK += max(i, n + 1 - i);
  }
  if (k < minK) {
    do {
      printf("-1\n");
      return 0;
    } while (0);
    ;
  }
  int end = n / 2;
  long long ans = minK;
  k -= ans;
  for (int i = 1; i <= end && k > 0; i++) {
    long long add = n + 1 - i - i;
    if (add <= k) {
      swap(a[i], a[n + 1 - i]);
      k -= add;
      ans += add;
    } else {
      int idx = i + k;
      ans += k;
      swap(a[i], a[idx]);
      break;
    }
  }
  printf("%lld\n", ans);
  for (int i = 1; i <= n; i++) {
    printf("%d ", i);
  }
  printf("\n");
  for (int i = 1; i <= n; i++) {
    printf("%d ", a[i]);
  }
  printf("\n");
  return 0;
}
