var a:array[0..25] of longint;
p:array[0..25] of int64;
ans,nn:int64;
i,j,k,l,n,t,d:longint;
procedure did;
begin
t:=0;
for k:=1 to n do
if a[k]>0 then begin
inc(t);l:=k;d:=k;
while a[l]0 do begin
l:=a[l];a[d]:=0;d:=l; end;end;
end;
begin
//assign(input,'1286.in');reset(input);
//assign(output,'1286.out');rewrite(output);
p[0]:=1;
for i:=1 to 24 do
p:=p[i-1]*3;
repeat
readln(n);
if n=-1 then break;
ans:=0;nn:=n;
for i:=0 to 1 do
for j:=1 to n do begin
if i=0 then begin
a[1]:=j;
for k:=2 to n do
a[k]:=(a[k-1]mod n)+1;
did;
ans:=ans+p[t];end
else begin
a[n]:=j;
for k:=n-1 downto 1 do
a[k]:=a[k+1]mod n+1;
did;
ans:=ans+p[t];end;end;
writeln(ans/2/nn:0:0);
until n=-1;
// close(input);close(output);
end.
|