#include <bits/stdc++.h>
using namespace std;
#pragma warning(disable : 4996)
#pragma comment(linker, "/STACK:256000000")
FILE* stream;
const int INF = 2e9 + 1000;
const long long INFL = (long long)1e18 + 1;
const int SIZE = 2e5 + 10;
const int TSIZE = 1e3 + 10;
const long double eps = 0.00000001;
const long long MOD = 1e9 + 7;
char POW(char a, char b) {
  if (b == 0) return 1;
  char cur = POW(a, b / 2);
  if (b % 2 == 0)
    return cur * cur;
  else
    return cur * cur * a;
}
void accept() {
  int n, l;
  cin >> n;
  vector<int> x(n);
  vector<string> s;
  for (int i = 0; i < n; i++) cin >> x[i];
  l = 0;
  while (true) {
    s.push_back("");
    int maxim = 0, cmax = 0, smaxim = -1, scmax = 0;
    for (int i = 0; i < n; i++) {
      if (x[i] > maxim) {
        smaxim = maxim;
        scmax = cmax;
        maxim = x[i];
        cmax = 1;
      } else if (x[i] == maxim) {
        cmax++;
      } else if (x[i] > smaxim) {
        smaxim = x[i];
        scmax = 1;
      } else if (x[i] == smaxim) {
        scmax++;
      }
    }
    if (cmax == n) break;
    if (cmax == 1) {
      for (int i = 0; i < n; i++) {
        if (x[i] == smaxim) {
          s[l] += '1';
          x[i] = max(0, x[i] - 1);
          smaxim = -1;
        } else
          s[l] += '0';
      }
      for (int i = 0; i < n; i++) {
        if (x[i] == maxim) {
          s[l][i] = '1';
          x[i] = max(0, x[i] - 1);
        }
      }
    } else {
      int k = min(cmax, 5 - (cmax - 5 == 1));
      for (int i = 0; i < n; i++) {
        if (x[i] == maxim && k > 0) {
          s[l] += '1';
          x[i] = max(0, x[i] - 1);
          k--;
        } else
          s[l] += '0';
      }
    }
    l++;
  }
  cout << x[0] << '\n';
  cout << l << '\n';
  for (int i = 0; i < l; i++) cout << s[i] << '\n';
}
void solution() {
  long long t = 1;
  for (long long i = 0; i < t; i++) {
    accept();
  }
  return;
}
void test() {
  freopen("input.txt", "w", stdout);
  cout << "10000\n";
  for (int k = 0; k < 100000; k++) {
    cout << char(rand() % 26 + 'a');
  }
}
int main() {
  srand(time(0));
  solution();
  return 0;
}
