n = int(input())
a = []
for i in range(n):
a.append(input())
for i in range(n-2,-1,-1):
if a[i] <= a[i+1]:
continue
else:
j = 0
while j < len(a[i]) and j < len(a[i+1]):
if a[i][j] == a[i+1][j]:
j += 1
elif a[i][j] > a[i+1][j]:
break
a[i] = a[i][:j]
for i in range(n):
print(a[i])
#include<bits/stdc++.h>
using namespace std;
const long long MAX = 2e18;
int main(){
// freopen("test.INP", "r", stdin);
int test_case;
test_case = 1;
while (test_case--){
int n;
cin >> n;
vector<string> s(n);
for (int i = 0; i < n; i++) cin >> s[i];
for (int i = n - 2; i >= 0; i--){
int last = -1;
for (int j = 1; j < s[i].length(); j++){
if (s[i+1].length() <= j){
last = j;
break;
}
if (s[i+1][j] == s[i][j]) continue;
else if (s[i+1][j] > s[i][j]) break;
else {
last = j;
break;
}
}
if (last == -1) continue;
s[i] = s[i].substr(0, last);
}
for (int i = 0; i < n; i++){
cout << s[i] << endl;
}
}
}
1409A - Yet Another Two Integers Problem | 977A - Wrong Subtraction |
263A - Beautiful Matrix | 180C - Letter |
151A - Soft Drinking | 1352A - Sum of Round Numbers |
281A - Word Capitalization | 1646A - Square Counting |
266A - Stones on the Table | 61A - Ultra-Fast Mathematician |
148A - Insomnia cure | 1650A - Deletions of Two Adjacent Letters |
1512A - Spy Detected | 282A - Bit++ |
69A - Young Physicist | 1651A - Playoff |
734A - Anton and Danik | 1300B - Assigning to Classes |
1647A - Madoka and Math Dad | 710A - King Moves |
1131A - Sea Battle | 118A - String Task |
236A - Boy or Girl | 271A - Beautiful Year |
520B - Two Buttons | 231A - Team |
479C - Exams | 1030A - In Search of an Easy Problem |
158A - Next Round | 71A - Way Too Long Words |