#include <bits/stdc++.h>
using namespace std;
int last;
bool illegal(int n, int tmp) {
  if (n < last) return true;
  if (n < 1000) return true;
  if (n > 2011) return true;
  int cnt = 0;
  if (n / 1000 != tmp / 1000) cnt++;
  if (n % 1000 / 100 != tmp % 1000 / 100) cnt++;
  if (n % 100 / 10 != tmp % 100 / 10) cnt++;
  if (n % 10 != tmp % 10) cnt++;
  if (cnt > 1) return true;
  return false;
}
int v[1200];
int main() {
  int n;
  scanf("%d", &n);
  last = 1000;
  int t;
  for (int i = 0; i < n; i++) {
    scanf("%d", &v[i]);
  }
  for (int i = 0; i < n; i++) {
    for (t = last; t <= 2011; t++) {
      if (!illegal(t, v[i])) {
        v[i] = t;
        last = t;
        break;
      }
    }
    if (t > 2011) {
      puts("No solution");
      return 0;
    }
  }
  for (int i = 0; i < n; i++) {
    printf("%d\n", v[i]);
  }
  return 0;
}
