// akých 15 minút, prosím vás? veď skoro všetky zlé možnosti sa okamžite vylúčia

#include <bits/stdc++.h>
using namespace std;

vector<int> best(16,10), current(16,0);
int sol_count = 0;

void go(int x) {
    if (x == 0) {
        ++sol_count;
        if (current < best) best = current;
    } else {
        for (int i=0; i+x<16; ++i) {
            if (current[i] == 0 && current[i+x] == 0) {
                current[i] = current[i+x] = x;
                go(x-1);
                current[i] = current[i+x] = 0;
            }
        }
    }
}

int main() {
    go(8);
    cout << sol_count << endl;
    for (int i=0; i<16; ++i) cout << best[i];
    cout << endl;
}