#include<iostream>
using namespace std;

char c[101];//存放棋子
int sp;//存放--的起始位置
int st;//记录移动的总步骤
int n;//白旗的数量

//打印棋子
void print(){
	int i;
	cout<<"step"<<st<<":";
	for(i = 1;i <=2 * n + 2;i++){
		cout<<c[i];
	}
	
	cout<<endl;
	st++;
} 

//初始化棋盘
void init(int n){
	int i;
	st = 0;
	sp = 2 * n + 1;//-空格第一次所在的位置
	
	//设置白子
	for(i = 1;i <= n;i++){
		c[i] = 'o';
	} 
	
	//设置黑子
	for(i = n + 1;i <= 2 * n;i++){
		c[i] = '*';
	} 
	
	c[2 * n + 1] = '-';
	c[2 * n + 2] = '-';
	print();
} 

//k表示需要移动的棋子的起始位置
void move(int k){
	//空格放棋子 
	c[sp] = c[k];
	c[sp + 1] = c[k + 1];
	
	//棋子放空格 
	c[k] = '-';
	c[k + 1] = '-';
	
	//移动结束后,新的空格的位置就是原来棋子的位置
	sp = k;
	
	print(); 
} 

//递归移动,剩余4个棋子特殊处理
void mv(int n){
	int i,k;
	//只剩4个要特殊处理
	if(n == 4){
		move(4);
		move(8);
		move(2);
		move(7);
		move(1);
	} else{
		move(n);
		move(2 * n - 1);
		//n的数量减少1
		mv(n - 1); 
	}
} 

int main(){
	cin>>n;
	init(n);
	mv(n);
}
/**************************************************************
	Problem: 1237
	User: admin
	Language: C++
	Result: Accepted
	Time:5 ms
	Memory:2072 kb
****************************************************************/