#include <bits/stdc++.h>
using namespace std;
struct node {
  int len, no;
};
node nodes[1010];
string ans[1010];
bool comp(node a, node b) { return a.len < b.len; }
int n, now;
void dfs(string s, int len);
int main() {
  int i, j, k, l, test = 1;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &nodes[i].len);
    nodes[i].no = i;
  }
  sort(nodes, nodes + n, comp);
  dfs("", 0);
  if (now == n) {
    printf("YES\n");
    for (i = 0; i < n; i++) cout << ans[i] << endl;
  } else
    printf("NO\n");
  return 0;
}
void dfs(string s, int len) {
  if (nodes[now].len < len) return;
  if (nodes[now].len == len) {
    ans[nodes[now].no] = s;
    now++;
  } else {
    dfs(s + "0", len + 1);
    dfs(s + "1", len + 1);
  }
}
