#include <bits/stdc++.h>
using namespace std;
unordered_set<string> st;
vector<string> ans;
bool ist;
int ind;
void Create(string str, int n) {
  if (st.count(str) == 1 || ist) return;
  if (n == 0) {
    ist = true;
    ans[ind] = str;
    st.insert(str);
    return;
  }
  Create(str + "0", n - 1);
  Create(str + "1", n - 1);
}
int main() {
  int n;
  string str;
  cin >> n;
  ans = vector<string>(n);
  pair<int, int> un[n];
  for (int i = 0; i < n; i++) {
    cin >> un[i].first;
    un[i].second = i;
  }
  sort(un, un + n);
  for (int i = 0; i < n; i++) {
    ist = false;
    ind = un[i].second;
    Create("", un[i].first);
    if (!ist) {
      cout << "NO";
      return 0;
    }
  }
  cout << "YES\n";
  for (int i = 0; i < n; i++) cout << ans[i] << endl;
  return 0;
}
