程序如下:
program li;
var n,ans:longint;
a:array[-1..41] of longint;
function ff(l:longint):boolean;
var x,y,z,p,q,r:longint;
begin
x:=l; y:=x-1; z:=y-1;
while z>0 do
begin
p:=x; q:=y; r:=z;
while (r<y) and (a[p]=a[q]) and (a[q]=a[r]) do
begin inc(p); inc(q); inc(r); end;
if r=y then exit(false);
dec(x); dec(y,2); dec(z,3);
end;
exit(true);
end;
procedure doit(l:longint);
begin
if l=n then begin ans:=ans+2; exit; end;
a[l+1]:=0;
if ff(l+1) then doit(l+1);
a[l+1]:=1;
if ff(l+1) then doit(l+1);
end;
begin
readln(n);
a[1]:=0; ans:=0;
doit(1);
writeln(ans);
end.