const max=100;
var n,st,sp:integer;
c:array[1..max] of char; {工作场所}
procedure print; {打印}
var i:integer;
begin
write('step',st:2,':');
for i:=1 to 2*n+2 do write(c[i]);
writeln;
st:=st+1
end;
procedure init(n:integer); {初始化}
var i:integer;
begin
st:=0;
sp:=2*n+1;
for i:=1 to n do c[i]:='o';
for i:=n+1 to 2*n do c[i]:='*';
c[2*n+1]:='-';c[2*n+2]:='-';
print
end;
procedure move(k:integer); {移动一步}//将两个横线(空)移到k处(以左横线位置为序号)
var j:integer;
begin
for j:=0 to 1 do begin c[sp+j]:=c[k+j];c[k+j]:='-';end;
sp:=k;
print
end;
procedure mv(n:integer); {主要过程}
var i,k:integer;
begin
if n=4 then begin
move(4);
move(8);
move(2);
move(7);
move(1)
end
else begin
move(n);
move(2*n-1);
mv(n-1)
end
end;
begin {main}
assign(input,'chessman.in');
assign(output,'chessman.out');
reset(input);
rewrite(output);
readln(n);
init(n);
mv(n);
close(input);
close(output)
end.