#include #include using namespace std; #define NMAX 1000005 int pattern[NMAX]; int n, prefix; void solve(int n) { if(!n) { return ; } solve(n - 1); int index = (1 << (n - 1)); if(!pattern[index]) prefix = 1; else prefix = 0; //pattern[index] = pattern[index - 1] + (1 << (n - 1)) * prefix; for(int i = (1 << (n - 1)); i < (1 << n); i++) { pattern[i] = pattern[i - index] + (1 << (n - 1)) * prefix; } reverse(pattern + index, pattern + (1 << n)); } void transf(int val) { for(int i = 0; i < n; i++) printf("%d", ((val & (1 << i)) ? 1 : 0)); printf("\n"); } int main () { // freopen("a.in","r",stdin); // freopen(); scanf("%d",&n); solve(n); for(int i = 0; i < (1 << n); i++) transf(pattern[i]); return 0; }