import std.stdio;
import std.functional;
import std.conv;
import std.range;
import std.algorithm;
string[] generateGrayCodes(int length)
{
if(length == 1)
return ["0", "1"];
return memoize!generateGrayCodes(length - 1)
.map!(gray => "0" ~ gray)
.chain(memoize!generateGrayCodes(length - 1)
.retro
.map!(gray => "1" ~ gray)
).array;
}
void main()
{
foreach(n; stdin.byLine.map!(to!int))
n.generateGrayCodes.writeln;
}
aW1wb3J0IHN0ZC5zdGRpbzsKCWltcG9ydCBzdGQuZnVuY3Rpb25hbDsKCWltcG9ydCBzdGQuY29udjsKCWltcG9ydCBzdGQucmFuZ2U7CglpbXBvcnQgc3RkLmFsZ29yaXRobTsKCglzdHJpbmdbXSBnZW5lcmF0ZUdyYXlDb2RlcyhpbnQgbGVuZ3RoKQoJewoJCWlmKGxlbmd0aCA9PSAxKQoJCQlyZXR1cm4gWyIwIiwgIjEiXTsKCQlyZXR1cm4gbWVtb2l6ZSFnZW5lcmF0ZUdyYXlDb2RlcyhsZW5ndGggLSAxKQoJCQkubWFwIShncmF5ID0+ICIwIiB+IGdyYXkpCgkJCS5jaGFpbihtZW1vaXplIWdlbmVyYXRlR3JheUNvZGVzKGxlbmd0aCAtIDEpCgkJCQkucmV0cm8KCQkJCS5tYXAhKGdyYXkgPT4gIjEiIH4gZ3JheSkKCQkJKS5hcnJheTsKCX0KCgl2b2lkIG1haW4oKQoJewoJCWZvcmVhY2gobjsgc3RkaW4uYnlMaW5lLm1hcCEodG8haW50KSkKCQkJbi5nZW5lcmF0ZUdyYXlDb2Rlcy53cml0ZWxuOwoJfQ==