#include <iostream>
#include <string>

void printAsBinary(int a, int bitSize) {
    std::string output = "";
    for (int i = 0; i < bitSize; i++) {
        int bit = a & 1;
        a = a >> 1;
        output.insert(0, std::to_string(bit));
    }
    std::cout << output << std::endl;
}

int main() {
    int n;
    bool sequances[5000] = {0};
    std::cin >> n;
    int maxBitVal = 1 << n;
    bool foundNew = false;
    int a = 0;
    sequances[0] = true;
    do {
        printAsBinary(a, n);
        foundNew = false;
        int mask = 1;
        while (true) {
            int newValue = a | mask;
            if (!sequances[newValue]) {
                foundNew = true;
                break;
            } else if (mask << 1 < maxBitVal) {
                mask = mask << 1;
            } else break;
        }
        if (foundNew) {
            a = a | mask;
            sequances[a] = true;
        } else {
            for (int shiftCount = 1; shiftCount <= n; shiftCount++) {
                int savedBits = 0;
                for (int i = 0; i < shiftCount - 1; i++) {
                    savedBits = (savedBits << 1) + 1;
                }
                savedBits = a & savedBits;
                int newValue = ((a >> shiftCount) << shiftCount) + savedBits;
                if (!sequances[newValue]) {
                    foundNew = true;
                    a = newValue;
                    sequances[a] = true;
                    break;
                }
            }
        }
    } while (foundNew);
    return 0;
}