#include <bits/stdc++.h>
using namespace std;
const int N = 1003, L = 1003;
int n, trie[N * L][2], tme;
pair<int, int> l[N];
bool _end[N * L];
string ans[N];
void ins(int u, int dep, int p) {
  if (dep == 0)
    _end[u] = true;
  else {
    if (!trie[u][0]) trie[u][0] = ++tme;
    if (!trie[u][1]) trie[u][1] = ++tme;
    if (!_end[trie[u][0]]) {
      ans[p] += '0';
      ins(trie[u][0], dep - 1, p);
    } else {
      ans[p] += '1';
      ins(trie[u][1], dep - 1, p);
      if (_end[trie[u][1]]) _end[u] = true;
    }
  }
}
bool process() {
  for (int i = 1; i <= n; ++i) {
    if (_end[0]) return false;
    ins(0, l[i].first, l[i].second);
  }
  return true;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> l[i].first, l[i].second = i;
  sort(l + 1, l + n + 1);
  if (process()) {
    cout << "YES\n";
    for (int i = 1; i <= n; ++i) cout << ans[i] << '\n';
  } else
    cout << "NO";
}
