{$G+}
const wb=8; nb=wb*wb;
s:array[1..8,1..2] of integer =
((-2,1),(-1,2),(1,2),(2,1),(2,-1),(1,-2),(-1,-2),(-2,-1));
var b: array[1..wb,1..wb] of boolean;
m: array[1..nb,1..2] of integer;
p: integer;
procedure PrintAndExit;
var i:integer;
begin
assign(output,'output.txt'); rewrite(output);
for i:=1 to nb-1 do write(m[i,1],':',m[i,2],',');
writeln(m[nb,1],':',m[nb,2]); halt;
end;
procedure Solution(r,c:integer);
var d,i,j:integer;
begin
if (p>pred(nb)) then PrintAndExit;
for d:=1 to 8 do begin
i:=r+s[d,1]; j:=c+s[d,2];
if NOT(i in[1..wb]) or NOT(j in[1..wb]) or (b[i,j]) then continue;
inc( p );
m[p,1]:=i; m[p,2]:=j; b[i,j]:=true;
Solution( i,j );
dec( p );
b[i,j]:=false;
end;
end;
var i,j:integer;
begin
fillchar(b,sizeof(b),false);
for i:=1 to wb div 2 do
for j:=1 to wb div 2 do begin
p:=1; m[p,1]:=i; m[p,2]:=j; b[i,j]:=true;
Solution(i,j);
b[i,j]:=false;
end;
end.