{ genereerib s lõppu juurde kordamööda kõik n-bitise Gray koodi elemendid }
{ kui u = true, siis kasvavas, kui u = false, siis kahanevas järjekorras }
procedure gen(s : string; n : integer; u : boolean);
begin
   if n = 0 then begin
      writeln(s);
   end else if u then begin
      gen(s + '0', n - 1, true);
      gen(s + '1', n - 1, false);
   end else begin
      gen(s + '1', n - 1, true);
      gen(s + '0', n - 1, false);
   end;
end;

var n : integer;
begin
   readln(n);
   gen('', n, true);
end.
