#include <cstdio>
#include <cstdlib>
#include <cassert>
#include <algorithm>

#include "random.h"

using namespace std;

const int maxN = 100000;

int n, p[maxN];

int main( int argc, char *argv[] ) {
  assert(argc == 3);
  n = atoi(argv[1]);
  initrand(atoi(argv[2]));
  for (int i = 0; i < n; i++) {
    p[i] = i;
    int t = R(0, i);
    swap(p[i], p[t]);
  }
  printf("%d\n", n);
  for (int i = 0; i < n; i++) {
    printf("%d%c", i, " \n"[i + 1 == n]);
  }
  for (int i = 0; i < n; i++) {
    printf("%d%c", (i + 2) % (n + 1), " \n"[i + 1 == n]);
  }
  fprintf(stderr, "Цепочка развёрнутая, %d вершин\n", n);
  return 0;
}
