#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 105;
int r[maxn];
char str[maxn];
vector<string> ans;
struct Node {
  int val, id;
  Node() {}
  Node(int __val, int __id) {
    val = __val;
    id = __id;
  }
  bool operator<(const Node& tmp) const { return val < tmp.val; }
};
void solve(int n) {
  int mn = 1e9, sum = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &r[i]);
    mn = min(mn, r[i]);
    sum += r[i];
  }
  if (!(n == 2 && (sum & 1))) {
    for (int rk = mn; rk >= 1; rk--) {
      ans.clear();
      priority_queue<Node> h;
      sum = 0;
      for (int i = 1; i <= n; i++) {
        if (r[i] - rk) h.push(Node(r[i] - rk, i));
        sum += r[i] - rk;
      }
      if (h.size() <= 2 && (sum & 1)) continue;
      if (h.size() > 2 && (sum & 1)) {
        Node t1 = h.top();
        h.pop();
        Node t2 = h.top();
        h.pop();
        Node t3 = h.top();
        h.pop();
        fill(str + 1, str + 1 + n, '0');
        str[t1.id] = str[t2.id] = str[t3.id] = '1';
        str[n + 1] = '\0';
        ans.push_back(str + 1);
        if ((--t1.val) > 0) h.push(t1);
        if ((--t2.val) > 0) h.push(t2);
        if ((--t3.val) > 0) h.push(t3);
      }
      while (h.size() > 1) {
        Node t1 = h.top();
        h.pop();
        Node t2 = h.top();
        h.pop();
        fill(str + 1, str + 1 + n, '0');
        str[t1.id] = str[t2.id] = '1';
        str[n + 1] = '\0';
        ans.push_back(str + 1);
        if ((--t1.val) > 0) h.push(t1);
        if ((--t2.val) > 0) h.push(t2);
      }
      if (!h.size()) {
        printf("%d\n%d\n", rk, (int)ans.size());
        return;
      }
    }
  }
  ans.clear();
  int id = 1;
  for (int i = 2; i <= n; i++) {
    if (r[i] < r[id]) id = i;
  }
  for (int i = 1; i <= n; i++)
    if (i != id) {
      while (r[i]--) {
        fill(str + 1, str + 1 + n, '0');
        str[i] = str[id] = '1';
        str[n + 1] = '\0';
        ans.push_back(str + 1);
      }
    }
  printf("%d\n%d\n", 0, (int)ans.size());
}
int main() {
  int n;
  while (scanf("%d", &n) != EOF) {
    solve(n);
    for (int i = 0; i < ans.size(); i++) {
      cout << ans[i] << '\n';
    }
  }
  return 0;
}
