#include <bits/stdc++.h>
using namespace std;
struct node {
  int n, v;
  bool operator<(const node &x) const { return v < x.v; }
} r[200];
int a[10000][101];
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &r[i].v);
    r[i].n = i;
  }
  sort(r, r + n);
  int R = 0;
  while (r[0].v != r[n - 1].v) {
    if (n >= 5 && r[n - 5].v == r[n - 1].v) {
      for (int i = n - 3; i < n; ++i) --r[i].v, a[R][r[i].n] = 1;
    } else if (r[n - 1].v != r[n - 2].v) {
      --r[n - 1].v;
      --r[n - 2].v;
      if (r[n - 2].v < 0) r[n - 2].v = 0;
      a[R][r[n - 1].n] = 1;
      a[R][r[n - 2].n] = 1;
    } else {
      int i;
      for (i = n - 1; i > 0 && r[i].v == r[i - 1].v; --i)
        --r[i].v, a[R][r[i].n] = 1;
      --r[i].v;
      a[R][r[i].n] = 1;
    }
    ++R;
    sort(r, r + n);
  }
  printf("%d\n%d\n", r[0].v, R);
  for (int i = 0; i < R; ++i) {
    for (int j = 0; j < n; ++j) printf("%d", a[i][j]);
    printf("\n");
  }
  return 0;
}
