#include <bits/stdc++.h>
using namespace std;
const int N = 1024;
vector<string> v[N];
int cnt[N];
int n, s[N], m;
char str[N];
void go(int depth) {
  if (n == m) return;
  if (cnt[depth] != 0) {
    str[depth] = 0;
    v[depth].push_back(str);
    cnt[depth]--;
    m++;
    return;
  }
  for (int i = 0; i < 2; i++) {
    str[depth] = i + '0';
    go(depth + 1);
  }
}
int main() {
  memset(cnt, 0, sizeof(cnt));
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &s[i]);
    cnt[s[i]]++;
  }
  m = 0;
  go(0);
  if (m != n) {
    printf("NO\n");
    return 0;
  }
  printf("YES\n");
  for (int i = 0; i < n; i++) {
    int l = s[i];
    printf("%s\n", v[l].back().c_str());
    v[l].pop_back();
  }
  return 0;
}
