var a:array[0..20] of integer;
b:array[0..20] of boolean;
total:integer;
function ss(x,y:longint):boolean;
var i,k:integer;
begin
k:=2;i:=x+y;ss:=false;
while (k<=trunc(sqrt(i))) and (i mod k<>0) do inc(k
);
if k>trunc(sqrt(i)) then ss:=true;
end;
procedure print;
var j:integer;
begin
inc(total);
write('<',total,'>:');
for j:=1 to 20 do write(a[j],' ');
writeln;
end;
procedure dep(s:longint);
var i:integer;
begin
if s>20 then
begin
if ss(a[20],a[1]) then print;
exit
end;
for i:=1 to 20 do
if ss(a[s-1],i) and b[i] then
begin
a[s]:=i;
b[i]:=false;
dep(s+1);
b[i]:=true;
end;
end;
begin
fillchar(b,sizeof(b),true);
total:=0;
dep(1);
write('total:',total);
end.
b:array[0..20] of boolean;
total:integer;
function ss(x,y:longint):boolean;
var i,k:integer;
begin
k:=2;i:=x+y;ss:=false;
while (k<=trunc(sqrt(i))) and (i mod k<>0) do inc(k
);
if k>trunc(sqrt(i)) then ss:=true;
end;
procedure print;
var j:integer;
begin
inc(total);
write('<',total,'>:');
for j:=1 to 20 do write(a[j],' ');
writeln;
end;
procedure dep(s:longint);
var i:integer;
begin
if s>20 then
begin
if ss(a[20],a[1]) then print;
exit
end;
for i:=1 to 20 do
if ss(a[s-1],i) and b[i] then
begin
a[s]:=i;
b[i]:=false;
dep(s+1);
b[i]:=true;
end;
end;
begin
fillchar(b,sizeof(b),true);
total:=0;
dep(1);
write('total:',total);
end.