{This works} program ex(input,output); var i,n:integer; a,d,up:array[0..100] of integer; procedure out; var j:integer; begin for j:=1 to n do write(a[j]:2); writeln end; begin readln(n); for i:=1 to n do a[i]:=0; for i:=1 to n do d[i]:=1; for i:=0 to n do up[i]:=i; out; repeat i:=up[n]; up[n]:=n; a[i]:=1-a[i]; a[i+1]:=1-a[i+1]; a[i+2]:=1-a[i+2]; if i>0 then out; up[i]:=up[i-1]; up[i-1]:=i-1; if a[i]=1 then begin up[i+1]:=up[i]; up[i+3]:=up[i+2] end else up[i+2]:=up[i+1]; until i=0; end.