#include <bits/stdc++.h>
using namespace std;
bool can(const vector<pair<long long, long long>>& vals,
         vector<vector<long long>>& pp) {
  if (vals.size() == 0) return true;
  if (vals.size() == 1) return false;
  long long sum = 0;
  priority_queue<pair<long long, long long>> pq;
  for (int i = 0; i < vals.size(); ++i) {
    sum += vals[i].first;
    pq.push(vals[i]);
  }
  if (sum % 2 == 1) {
    if (vals.size() < 3) return false;
    pair<long long, long long> f = pq.top();
    pq.pop();
    pair<long long, long long> s = pq.top();
    pq.pop();
    pair<long long, long long> t = pq.top();
    pq.pop();
    f.first--;
    s.first--;
    t.first--;
    pp.push_back({f.second, s.second, t.second});
    if (f.first > 0) pq.push(f);
    if (s.first > 0) pq.push(s);
    if (t.first > 0) pq.push(t);
  }
  while (pq.size() > 1) {
    pair<long long, long long> f = pq.top();
    pq.pop();
    pair<long long, long long> s = pq.top();
    pq.pop();
    f.first--;
    s.first--;
    pp.push_back({f.second, s.second});
    if (f.first > 0) pq.push(f);
    if (s.first > 0) pq.push(s);
  }
  if (pq.size() == 1) return false;
  return true;
}
void print(int n, int mn, vector<vector<long long>>& ans) {
  cout << mn << "\n";
  cout << ans.size() << "\n";
  string str(n, '0');
  for (int i = 0; i < ans.size(); ++i) {
    for (int x : ans[i]) str[x] = '1';
    cout << str << "\n";
    for (int x : ans[i]) str[x] = '0';
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  vector<int> rate(n, 0);
  int mn = INT_MAX;
  for (int i = 0; i < n; ++i) {
    cin >> rate[i];
    mn = min(mn, rate[i]);
  }
  for (int c = mn; c > 0; --c) {
    vector<pair<long long, long long>> vals;
    for (int i = 0; i < n; ++i) {
      if (rate[i] > c) vals.push_back({rate[i] - c, i});
    }
    vector<vector<long long>> ans;
    bool sol = can(vals, ans);
    if (sol) {
      print(n, c, ans);
      return 0;
    }
  }
  vector<vector<long long>> ans;
  mn = 0;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < rate[i]; ++j) {
      ans.push_back({i == 0 ? 1 : 0, i});
    }
  }
  print(n, mn, ans);
  return 0;
}
