program bridge;
var
    dealer:char;
    line:string;
    i,j,n:integer;
    hraci: array[0..3] of string;

function Cr(a,b:Char):Integer;
var c:Integer;
begin
  Case a of
    'C': c:=100;
    'D': c:=200;
    'S': c:=300;
    'H': c:=400;
    end;
  Case b of
    'A': c:=c+14;    
    'K': c:=c+13;    
    'Q': c:=c+12;    
    'J': c:=c+11;    
    'T': c:=c+10;    
    else c:=c+Ord(b)-Ord('1')+1;    
    end;
    Cr:=c;
end;

procedure vymen(var x,y:Char);
var a:Char;
begin
  a:=x;
  x:=y;
  y:=a;
end;
    
procedure Serad(var x: string);
var i,j:Integer;
begin
  for i:=1 to length(x) div 2 do
    for j:=i+1 to length(x) div 2 do 
    begin
	if Cr(x[i*2-1],x[i*2])>Cr(x[j*2-1],x[j*2]) then
	begin
	    vymen(x[i*2-1],x[j*2-1]);
	    vymen(x[i*2],x[j*2]);
	end;
    end;
end;    
    
begin

    readln(dealer);
    
    while dealer <> '#' do
    begin
	case dealer of
	'N': n:=1;
	'E': n:=2;
	'S': n:=3;
	'W': n:=0;
	end;
	for i := 1 to 2 do
	begin
	    readln(line);
	    for j:=1 to Length(line) div 2 do
	    begin
		hraci[n]:=hraci[n] + line[j*2-1] + line[j*2];
		n := (n + 1) mod 4;    
	    end;
	end;
	
	for j:=0 to 3 do 
	begin
	    serad(hraci[(j+2) mod 4]);
	    n:=(j+2) mod 4;
{	    writeln(hraci[n]);}
	    
	    case n of
	    2: Writeln('South player:');
	    3: Writeln('West player:');
	    0: Writeln('North player:');
	    1: Writeln('East player:');
	    end;

	    for i:=1 to Length(hraci[n]) div 2 do Write('+---');
	    writeln('+');
	    for i:=1 to Length(hraci[n]) div 2 do 
		Write('|',hraci[n][i*2],' ',hraci[n][i*2]);
		writeln('|');
	    
	    for i:=1 to Length(hraci[n]) div 2 do 
		Write('| ',hraci[n][i*2-1],' ');
		writeln('|');
	    
	    for i:=1 to Length(hraci[n]) div 2 do 
		Write('|',hraci[n][i*2],' ',hraci[n][i*2]);
		writeln('|');
	    
	    for i:=1 to Length(hraci[n]) div 2 do Write('+---');
	    writeln('+');	    
	end;
	writeln;
	readln(dealer);
    end;
{    Hraci[0]:='C2H5DQC4S1';
    Serad(hraci[0]);
    writeln(hraci[0]);}
end.
