//ALEXANDRU MICLEA

#include <vector>
#include <algorithm>
#include <string>
#include <queue>
#include <map>
#include <set>
#include <unordered_map>
#include <time.h>
#include <iomanip>
#include <deque>
#include <math.h>
#include <cmath>
#include <assert.h>
#include <stack>
#include <bitset>
#include <random>
#include <chrono>

using namespace std;

#include <iostream>

vector <string> v1;

int main() {

	int n;
	cin >> n;

	v1.push_back("0");
	v1.push_back("1");

	for (int i = 2; i < (1<<n) ; i = i<<1) {
		for (int j = i-1; j >= 0; j--) {
			v1.push_back(v1[j]);
		}
		for (int j = 0; j < i; j++) {
			v1[j] = "0" + v1[j];
		}
		for (int j = i; j < 2*i; j++) {
			v1[j] = "1" + v1[j];
		}
	}

	for (int i = 0; i < v1.size(); i++) {
		cout << v1[i] << '\n';
	}
	return 0;
}