#include <bits/stdc++.h>
using namespace std;
int A[1010], B[1010];
bool C[1010];
string res[1010];
int n;
string next(string s) {
  string t = s;
  while (t != "" && t[t.length() - 1] == '1') t.resize(t.length() - 1);
  if (t == "") return "";
  t[t.length() - 1] = '1';
  while (t.length() < s.length()) t.push_back('0');
  return t;
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> A[i];
  for (int i = 0; i < n; i++) B[i] = A[i];
  sort(A, A + n);
  string curr = "";
  for (int i = 0; i < n; i++) {
    if (curr.length() == A[i]) {
      res[i] = curr;
      curr = next(curr);
      if (curr == "" && i != n - 1) {
        cout << "NO" << endl;
        return 0;
      }
      continue;
    }
    while (curr.length() < A[i]) curr.push_back('0');
    res[i] = curr;
    curr = next(curr);
    if (curr == "" && i != n - 1) {
      cout << "NO" << endl;
      return 0;
    }
  }
  cout << "YES" << endl;
  for (int i = 0; i < n; i++) {
    int index = lower_bound(A, A + n, B[i]) - A;
    while (C[index]) index++;
    cout << res[index] << endl;
    C[index] = true;
  }
}
