#include using namespace std; #define rep(i, a, b) for(int i = a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() typedef long long ll; typedef pair pii; typedef vector vi; int main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); int N; cin >> N; vector V(N); rep(i,0,N) cin >> V[i]; // 100 rep(i,0,N-1) { if (sz(V[i]) != sz(V[i + 1])) continue; // 10 rep(k,0,sz(V[i])) { // 10 string na = V[i]; string nb = V[i+1]; na[k] = '9'; nb[k] = sz(nb) == 1 ? '0' : '1'; // 10 if (na > V[i+1]) { V[i] = na; goto done; } if (V[i] > nb) { V[i + 1] = nb; goto done; } } } cout << "impossible" << endl; return 0; done: rep(i,0,sz(V)) cout << V[i] << endl; }