program ex(input,output); var i,n,c:integer; a:array[0..100] of integer; p:array[0..100] of integer; procedure out; var k:integer; begin for k:=1 to n do write(a[k]:3); write(' '); for k:=1 to n do write(p[k]:3); c:=c+1; readln; end; begin write('input n '); readln(n); for i:=1 to n do a[i]:=i; a[1]:=0; for i:=1 to n do begin a[3*i-1]:=1; a[3*i]:=0; a[3*i+1]:=0 end; for i:=0 to n do p[i]:=i; for i:=1 to n do if a[i]=1 then p[i+1]:=i; if a[n-1]=1 then i:=n-1 else i:=n; c:=0; repeat out; a[i]:=1-a[i]; p[i]:=p[i-1]; if a[i]=1 then p[i+1]:=p[i]; if a[i-2]=1 then p[i-1]:=i-2 else p[i-1]:=i-1; if a[i]=0 then p[i+1]:=i+1; if (i=n) or (i=n-1) and (a[i]=1) then i:=p[n] else if a[n-1]=1 then i:=n-1 else i:=n; until i=0; out; write('c= ', c:3); readln end.