#include <bits/stdc++.h>   using namespace std;   void Get(int &T) {     char C;     bool F = 0;     for (; C = getchar(), C <  0  || C >  9 ;)       if (C ==  - ) F = 1;     for (T = C -  0 ; C = getchar(), C >=  0  && C <=  9 ; T = T * 10 + C -  0 )       ;     F && (T = -T);   }   int N;   void Init() { Get(N); }   int T[55][55];   void Mul(int A[][55], int B[][55], int N, int K, int M) {     for (int i = 1; i <= N; i++)       for (int j = 1; j <= M; j++) {         T[i][j] = 0;         for (int k = 1; k <= K; k++) (T[i][j] ^= (A[i][k] & B[k][j]));       }     for (int i = 1; i <= N; i++)       for (int j = 1; j <= M; j++) A[i][j] = T[i][j];   }   int A[55][55];   int B[55][55];   int T2[55][55];   void Pow(int X[][55], long long P) {     for (int i = 1; i <= N; i++)       for (int j = 1; j <= N; j++) T2[i][j] = (i == j);     for (; P; P >>= 1) {       if (P & 1) Mul(T2, X, N, N, N);       Mul(X, X, N, N, N);     }     for (int i = 1; i <= N; i++)       for (int j = 1; j <= N; j++) X[i][j] = T2[i][j];   }   long long Factor[100005];   int FactorTop;   bool I() {     for (int i = 1; i <= N; i++)       for (int j = 1; j <= N; j++)         if (B[i][j] != (i == j)) return 0;     return 1;   }   bool Check() {     for (int i = 1; i <= N; i++)       for (int j = 1; j <= N; j++) B[i][j] = A[i][j];     Pow(B, (1ll << N) - 1);     int Ans = I();     if (Ans == 0) return 0;     for (int k = 1; k <= FactorTop; k++) {       for (int i = 1; i <= N; i++)         for (int j = 1; j <= N; j++) B[i][j] = A[i][j];       Pow(B, ((1ll << N) - 1) / Factor[k]);       int Ans = I();       if (Ans == 1) return 0;     }     return 1;   }   void Debug() {     FactorTop = 0;     long long X = 1ll << N;     X--;     Factor[0] = 1;     for (long long i = 2; i * i <= X; i++) {       for (;; X /= i) {         if (X % i != 0) break;         Factor[++FactorTop] = i;       }     }     if (X > 1) Factor[++FactorTop] = X;     for (int i = 1; i < N; i++) A[i + 1][i] = 1;     for (;;) {       for (int i = 1; i <= N; i++) A[i][N] = rand() & 1;       int Ans = Check();       if (Ans) break;     }   }   void Work() { Debug(); }   void Output() {     for (int i = N; i >= 1; i--) printf( %d  , A[i][N]);     puts(  );     for (int i = N; i >= 1; i--) printf( %d  , 1);     puts(  );   }   int main() {     srand(time(0));     Init();     Work();     Output();     return 0;   }   