#include<iostream>
#include<cmath>
using namespace std;
char map[731][731];
void print(int n,int x,int y)
{
int m;
if(n==1)
{
map[x][y]='X';
return ;
}
if(n>1)
{
m=pow(3.0,n-2);
print(n-1,x,y);
print(n-1,x,y+2*m);
print(n-1,x+m,y+m);
print(n-1,x+2*m,y);
print(n-1,x+2*m,y+2*m);
}
}
int main()
{
int m,n;
while(cin>>n)
{
if(n==-1) break;
m=pow(3.0,n-1);
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
map[i][j]=' ';
}
}
print(n,0,0);
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
cout<<map[i][j];
cout<<endl;
}
cout<<"-"<<endl;
}
return 0;
}
#include<cmath>
using namespace std;
char map[731][731];
void print(int n,int x,int y)
{
int m;
if(n==1)
{
map[x][y]='X';
return ;
}
if(n>1)
{
m=pow(3.0,n-2);
print(n-1,x,y);
print(n-1,x,y+2*m);
print(n-1,x+m,y+m);
print(n-1,x+2*m,y);
print(n-1,x+2*m,y+2*m);
}
}
int main()
{
int m,n;
while(cin>>n)
{
if(n==-1) break;
m=pow(3.0,n-1);
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
{
map[i][j]=' ';
}
}
print(n,0,0);
for(int i=0;i<m;i++)
{
for(int j=0;j<m;j++)
cout<<map[i][j];
cout<<endl;
}
cout<<"-"<<endl;
}
return 0;
}