import java.util.*; /** * Created by Sorin on 4/29/2017. */ public class prog { static Map map = new HashMap<>(); static Map numberOf1 = new HashMap<>(); static Set set = new HashSet<>(); static List answer = new ArrayList<>(); public static void main(final String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int power = 1; for (int i = 0; i < n; i++) { power = power * 2; } for (int i = 0; i < power; i++) { int bits = Integer.bitCount(i); StringBuilder binaryString = new StringBuilder(Integer.toBinaryString(i)); StringBuilder zeros = new StringBuilder(); if (binaryString.length() < n) { if (!map.containsKey(n - binaryString.length())) { for (int j = 1; j <= n - binaryString.length(); j++) { zeros.insert(0, "0"); } map.put((n - binaryString.length()), zeros); } else { zeros = map.get(n - binaryString.length()); } binaryString.insert(0, zeros); } if (bits == 0) { answer.add(binaryString.toString()); } set.add(binaryString); numberOf1.put(binaryString.toString(), bits); } back(1, power); } static void back(int step, int n) { if (step == n) { StringBuilder sb = new StringBuilder(); for (String sol : answer) { sb.append(sol).append(System.lineSeparator()); } System.out.println(sb); System.exit(0); } else { int nrOf1 = numberOf1.get(answer.get(step - 1)); for (StringBuilder sb : set) { int nrOf1FromNext = numberOf1.get(sb.toString()); if (Math.abs(nrOf1FromNext - nrOf1) == 1) { set.remove(sb); answer.add(step, sb.toString()); back(step + 1, n); set.add(sb); } } } } }