#include <bits/stdc++.h>
int n, len, s[10], ans[100005];
char t[10];
int f() {
  int i, num = 0;
  for (i = 0; i < len; i++) {
    num = num * 10 + s[i];
  }
  return num;
}
int main() {
  int i, j, k;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%s", &t);
    len = strlen(t);
    for (j = 0; j < len; j++) {
      if (t[j] == '?')
        s[j] = 9;
      else
        s[j] = t[j] - '0';
    }
    if (f() <= ans[i - 1]) {
      puts("NO");
      return 0;
    }
    for (j = 0; j < len; j++) {
      if (t[j] == '?') {
        for (k = 8; k >= 0; k--) {
          if (j == 0 && k == 0) break;
          s[j] = k;
          if (f() <= ans[i - 1]) {
            s[j]++;
            break;
          }
        }
      }
    }
    ans[i] = f();
  }
  puts("YES");
  for (i = 1; i <= n; i++) {
    printf("%d\n", ans[i]);
  }
}
