#include <bits/stdc++.h>
int c[200], k;
long long ans[100];
long long fac[100000];
int cnt;
void mult(int a[][100], int b[][100], int c[][100]) {
  int d[100][100] = {0};
  for (int i = 0; i < k; i++) {
    for (int j = 0; j < k; j++) {
      if (a[i][j]) {
        for (int m = 0; m < k; m++) d[i][m] ^= b[j][m];
      }
    }
  }
  for (int i = 0; i < k; i++)
    for (int j = 0; j < k; j++) c[i][j] = d[i][j];
}
int mod_mult(int a[][100], long long n) {
  int b[100][100], x[100][100];
  for (int i = 0; i < k; i++)
    for (int j = 0; j < k; j++) {
      if (i == j)
        b[i][j] = 1;
      else
        b[i][j] = 0;
      x[i][j] = a[i][j];
    }
  while (n) {
    if (n & 1) mult(b, x, b);
    mult(x, x, x);
    n >>= 1;
  }
  for (int i = 0; i < k; i++) {
    for (int j = 0; j < k; j++) {
      if ((i == j && !b[i][j]) || (i != j && b[i][j])) return 0;
    }
  }
  return 1;
}
int flag = 0;
int x[100][100];
void ck() {
  long long p = (1LL << k) - 1;
  for (int i = 0; i < k; i++) {
    for (int j = 0; j < k; j++) {
      if (i == 0)
        x[i][j] = c[j];
      else if (i == j + 1)
        x[i][j] = 1;
      else
        x[i][j] = 0;
    }
  }
  if (!mod_mult(x, p)) return;
  for (int i = 0; i < cnt; i++) {
    if (mod_mult(x, fac[i])) return;
  }
  flag = 1;
  ans[k] = 0;
  for (int i = k - 1; i >= 0; i--) ans[k] = 2 * ans[k] + c[i];
  return;
}
int main() {
  scanf("%d", &k);
  long long N = (1LL << k) - 1, p = N;
  for (long long j = 2; j * j <= p; j++) {
    if (p % j == 0) {
      fac[cnt++] = N / j;
      while (p % j == 0) p /= j;
    }
  }
  if (p > 1) fac[cnt++] = N / p;
  while (!flag) {
    for (int j = 0; j < k; j++) c[j] = rand() % 2;
    ck();
  }
  for (int i = 0; i < k; i++) {
    if (ans[k] & (1LL << i))
      printf("1");
    else
      printf("0");
    printf(i < k - 1 ? " " : "\n");
  }
  for (int i = 0; i < k; i++) {
    printf("1");
    printf(i < k - 1 ? " " : "\n");
  }
}
