#include <bits/stdc++.h>
using namespace std;
int n;
int a[501], b[501];
int ccnt;
int fl[121][12001];
void construct() {
  for (int i = 1; i <= n - 1; i++)
    for (int j = 1; j <= 100; j++) {
      ccnt++;
      for (int j = 1; j <= n; j++) fl[j][ccnt] = 0;
      fl[i][ccnt] = 1;
      fl[i + 1][ccnt] = 1;
    }
}
pair<int, int> C[501];
set<pair<int, int> > S;
pair<int, int> f() {
  pair<int, int> Z = *S.begin();
  S.erase(S.begin());
  return Z;
}
bool ok(int id) {
  ccnt = 0;
  for (int i = 1; i <= n; i++) b[i] = a[i] - id;
  for (int i = 1; i <= n; i++) C[i] = make_pair(-b[i], i);
  S.clear();
  for (int i = 1; i <= n; i++) S.insert(C[i]);
  int cnt = 0;
  for (int i = 1; i <= n; i++) cnt += b[i];
  if (cnt == 1) return false;
  int flag = 0;
  if (cnt % 2 == 1) {
    if (n == 2) return false;
    cnt -= 3;
    flag = 1;
    pair<int, int> w1 = f();
    pair<int, int> w2 = f();
    pair<int, int> w3 = f();
    if (w3.first == 0) return false;
    w1.first++;
    w2.first++;
    w3.first++;
    S.insert(w1);
    S.insert(w2);
    S.insert(w3);
    ccnt++;
    for (int j = 1; j <= n; j++) fl[j][ccnt] = 0;
    fl[w1.second][ccnt] = fl[w2.second][ccnt] = fl[w3.second][ccnt] = 1;
  }
  int time = cnt / 2;
  for (int i = 1; i <= time; i++) {
    pair<int, int> w1 = f();
    pair<int, int> w2 = f();
    if (w2.first == 0) return false;
    w1.first++;
    w2.first++;
    S.insert(w1);
    S.insert(w2);
    ccnt++;
    for (int j = 1; j <= n; j++) fl[j][ccnt] = 0;
    fl[w1.second][ccnt] = fl[w2.second][ccnt] = 1;
  }
  return true;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  int mi = a[1];
  for (int i = 2; i <= n; i++) mi = min(mi, a[i]);
  for (int j = mi; j >= 1; j--)
    if (ok(j)) {
      printf("%d\n", j);
      printf("%d\n", ccnt);
      for (int i = 1; i <= ccnt; i++) {
        for (int j = 1; j <= n; j++) printf("%d", fl[j][i]);
        puts("");
      }
      return 0;
    }
  construct();
  printf("0\n");
  printf("%d\n", ccnt);
  for (int i = 1; i <= ccnt; i++) {
    for (int j = 1; j <= n; j++) printf("%d", fl[j][i]);
    puts("");
  }
  return 0;
}
