#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++;
            }
        }
    }
}