#include <iostream>

#include <list>


using namespace std;


int main() {


int n; cin >> n;

list<string> words;


for (int i = 0; i < n; i++) {

string k; cin >> k;

bool inserted = false;

bool dup = false;

for (list<string>::iterator iter = words.begin(); iter != words.end(); iter++) {

//중복이면 넘김

if (k == *iter) {

dup = true;

break;

}

//사이즈가 작거나 사이즈가 같을 때 사전순으로 작을 때 삽입

if ((k.size() == iter->size() && k < *iter) || k.size() < iter->size()) {

words.insert(iter, k);

inserted = true;

break;

}

}

//사전순으로 가장 크거나 길이가 가장 길 때 삽입

if (!inserted && !dup) words.insert(words.end(), k);

}


for (list<string>::iterator iter = words.begin(); iter != words.end(); iter++) cout << *iter << endl;


return 0;

}




백준 1181이고

저렇게 하면 시간초과가 뜨는데...

빠른 것 같은데 왜 시간초과가 뜨는지 모르겠음