#include <bits/stdc++.h>
using namespace std;
int m;
vector<int> val;
int const max_sum = 61 * 30;
int const max_pl = 61;
bool dp[31][62][max_sum + 1];
vector<vector<int>> graph;
void generate(int size) {
  graph.resize(size);
  vector<int> sizes;
  int ix = m - 1;
  int pl = size;
  int sum = size * (size - 1) / 2;
  while (pl != 0) {
    sizes.push_back(val[ix]);
    sum -= val[ix];
    --pl;
    if (dp[ix][pl][sum]) continue;
    --ix;
  }
  sort(sizes.begin(), sizes.end());
  vector<pair<int, int>> players;
  for (int i = 0; i < size; i++) players.push_back({sizes[i], i});
  for (int i = 0; i < size; i++) graph[i].resize(size, 0);
  while (players.size() > 0) {
    auto const& x = players[0];
    for (int i = 1; i <= x.first; i++) {
      graph[x.second][players[i].second] = 1;
    }
    for (int i = x.first + 1; i < players.size(); i++) {
      players[i].first--;
      graph[players[i].second][x.second] = 1;
    }
    vector<pair<int, int>> new_p(++players.begin(), players.end());
    sort(new_p.begin(), new_p.end());
    swap(players, new_p);
  }
  cout << size << endl;
  for (auto const& x : graph) {
    for (int c : x) cout << c;
    cout << endl;
  }
}
void f() {
  sort(val.begin(), val.end());
  for (int i = 0; i < m; i++)
    for (int sum = 0; sum <= max_sum; sum++) {
      dp[i][0][sum] = false;
    }
  dp[0][0][0] = true;
  for (int pl = 1; pl <= max_pl; pl++) {
    for (int i = 0; i < m; i++) {
      for (int sum = val[i]; sum <= max_sum; sum++) {
        if (pl == 1 && i != 0) continue;
        if (sum < pl * (pl - 1) / 2) continue;
        if (i != 0)
          if (dp[i - 1][pl - 1][sum - val[i]]) dp[i][pl][sum] = true;
        if (dp[i][pl - 1][sum - val[i]]) dp[i][pl][sum] = true;
      }
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin >> m;
  for (int i = 0; i < m; i++) {
    int a;
    cin >> a;
    val.push_back(a);
  }
  f();
  int ix = -1;
  for (int i = 1; i <= max_pl; i++)
    if (dp[m - 1][i][i * (i - 1) / 2]) {
      ix = i;
      break;
    }
  if (ix == -1) {
    cout << "=(" << endl;
  } else {
    generate(ix);
  }
}
