#include<stdio.h>
#include<string.h>
#define MaxSize 105
int partition(int* len, int* tag, int low, int high) {
int pivot = len[low];
int pivotpos = tag[low];
while (low < high) {
while (low < high && len[high] >= pivot)high--;
len[low] = len[high];
tag[low] = tag[high];
while (low < high && len[low] <= pivot)low++;
len[high] = len[low];
tag[high] = tag[low];
}
len[low] = pivot;
tag[low] = pivotpos;
return low;
}
void quickSort(int* len, int* tag, int low, int high) {
if (low < high) {
int pivotpos = partition(len, tag, low, high);
quickSort(len, tag, low, pivotpos - 1);
quickSort(len, tag, pivotpos + 1, high);
}
}
int main() {
int n;
scanf("%d", &n);
getchar();//此处极易出错
char S[n][MaxSize];
int len[n], tag[n], i, j;
for (i = 0; i < n; i++) {
gets(S[i]);
if (strcmp(S[i], "stop") == 0)break;
len[i] = strlen(S[i]);
tag[i] = i;
}
n = i;
quickSort(len, tag, 0, n - 1);
for (i = 0; i < n; i++)
puts(S[tag[i]]);
return 0;
}