#pragma GCC optimize(2);

#include <bits/stdc++.h>

using namespace std;

int g[800][800];

int n;

void inline dfs(int n, int x, int y){

    if(n == 1){

        g[x][y + 2] = 1;

        g[x + 1][y + 1] = 1;

        g[x + 1][y + 3] = 1;

        g[x + 2][y] = 1;

        g[x + 2][y + 2] = 1;

        g[x + 2][y + 4] = 1;

        return ;

    }

    int len = 3 * (1 << (n - 2));

    dfs(n - 1, x, y + len);

    dfs(n - 1, x + len, y);

    dfs(n - 1, x + len, y + len * 2);

}

int main() {

    char c = getchar();

    n = c - '0';

    dfs(n, 00);

    for(int i = (1 << (n - 1)) * 3, k = 0; k < n; k++, i++){

        g[i][3 * (1 << (n - 1)) - 1] = 1;

    }

    for(int i = 0; i < (1 << (n - 1)) * 3 + n; i++){

        for(int j = 0; j < 3 * (1 << n) - 1; j++){

            if(g[i][j] == 1putchar('*');

            else putchar(' ');

        }

        putchar('\n');

    }

    return 0;

}