#include <bits/stdc++.h>
using namespace std;
const int N = (int)1e6 + 9;
long long tot;
int a[N], b[N], n;
void solve(int p1, int len) {
  if (tot >= len) {
    tot -= len;
    swap(b[p1], b[p1 + len]);
  } else {
    swap(b[p1], b[p1 + tot]);
    tot = 0;
  }
}
int main() {
  scanf("%d%lld", &n, &tot);
  long long maxn = 0;
  for (int i = (1); i < (n + 1); i++) {
    a[i] = i;
    b[i] = n + 1 - i;
    maxn += max(a[i], b[i]);
  }
  for (int i = (1); i < (n + 1); i++) b[i] = i;
  long long mini = 1ll * n * (n + 1) / 2;
  if (tot < mini) {
    cout << -1;
    return 0;
  }
  if (tot > maxn) tot = maxn;
  printf("%lld\n", tot);
  tot -= mini;
  int len = n - 1;
  for (int i = (1); i < (n + 1); i++) {
    if (tot)
      solve(i, len);
    else
      break;
    len -= 2;
  }
  for (int i = (1); i < (n + 1); i++) {
    printf("%d", a[i]);
    if (i != n)
      printf(" ");
    else
      printf("\n");
  }
  for (int i = (1); i < (n + 1); i++) {
    printf("%d", b[i]);
    if (i != n)
      printf(" ");
    else
      printf("\n");
  }
}
