#include <iostream> #include <math.h> using namespace std; int b[100000]; int p;; void afisare(int n, int nr,int a){ if(a!=n){ afisare(n,nr/2,a+1); cout<<nr%2; } } void QuickSort(int v[], int st, int dr) { if(st < dr){ int m = (st + dr) / 2; int aux = v[st]; v[st] = v[m]; v[m] = aux; int i = st , j = dr, d = 0; while(i < j){ if(v[i] > v[j]){ aux = v[i]; v[i] = v[j]; v[j] = aux; d = 1 - d;} i += d; j -= 1 - d; } QuickSort(v, st , i - 1); QuickSort(v, i + 1 , dr); } } int caut (int n, int nr, int v[]) { for(int k=1;k<n;k++){ if(v[k]==nr){ return 1; } } return 0; } int main(){ int past=0; p=1; int n,i,a; cin>>n; int x=pow(2,n); while(p<=x){ for(i=0;i<x;i++){ a=log2(i^past); if((log2(i^past)==a && caut(p,i,b)==0)){ past=i; afisare(n,i,0); cout<<endl; b[p]=i; p++; } } } }