#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, 0, 0);
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] == 1) putchar('*');
else putchar(' ');
}
putchar('\n');
}
return 0;
}