#include<iostream>
#include<string>
using namespace std;
typedef struct Element {
int length;
string data;
} Words;
void Swap(Words &x, Words &y, Words &t)
{
if (x.length == y.length)
{
if (x.data.compare(y.data) < 0)
{
return;
}
}
t = x;
x = y;
y = t;
}
int Partition(Words list[], int left, int right)
{
Words pivot, temp;
int low, high;
low = left;
high = right + 1;
pivot = list[left];
do {
do
low++;
while (low <= right && list[low].length < pivot.length);
do
high--;
while (high >= left && list[high].length > pivot.length);
if (low < high)
Swap(list[low], list[high], temp);
} while (low < high);
Swap(list[left], list[high], temp);
return high;
}
void Quick_sort(Words list[], int left, int right)
{
if (left < right)
{
int q = Partition(list, left, right);
Quick_sort(list, left, q - 1);
Quick_sort(list, q + 1, right);
}
}
int main(void)
{
int N;
string temp = "";
cin >> N;
Words *List = new Words[N];
for (int i = 0; i < N; i++)
{
cin >> List[i].data;
List[i].length = List[i].data.length();
if (List[i].length > 50)
{
return 0;
}
}
Quick_sort(List, 0, N - 1);
for (int i = 0; i < N; i++)
{
if (temp != List[i].data)
{
temp = List[i].data;
}
else
continue;
cout << List[i].data << "\n";
}
delete[] List;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHN0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIHN0cnVjdCBFbGVtZW50IHsKCWludCBsZW5ndGg7CglzdHJpbmcgZGF0YTsKfSBXb3JkczsKCgp2b2lkIFN3YXAoV29yZHMgJngsIFdvcmRzICZ5LCBXb3JkcyAmdCkKewoJaWYgKHgubGVuZ3RoID09IHkubGVuZ3RoKQoJewoJCWlmICh4LmRhdGEuY29tcGFyZSh5LmRhdGEpIDwgMCkKCQl7CgkJCXJldHVybjsKCQl9Cgl9CgoJdCA9IHg7Cgl4ID0geTsKCXkgPSB0Owp9CgoKaW50IFBhcnRpdGlvbihXb3JkcyBsaXN0W10sIGludCBsZWZ0LCBpbnQgcmlnaHQpCnsKCVdvcmRzIHBpdm90LCB0ZW1wOwoJaW50IGxvdywgaGlnaDsKCglsb3cgPSBsZWZ0OwoJaGlnaCA9IHJpZ2h0ICsgMTsKCXBpdm90ID0gbGlzdFtsZWZ0XTsKCWRvIHsKCQlkbwoJCQlsb3crKzsKCQl3aGlsZSAobG93IDw9IHJpZ2h0ICYmIGxpc3RbbG93XS5sZW5ndGggPCBwaXZvdC5sZW5ndGgpOwoJCWRvCgkJCWhpZ2gtLTsKCQl3aGlsZSAoaGlnaCA+PSBsZWZ0ICYmIGxpc3RbaGlnaF0ubGVuZ3RoID4gcGl2b3QubGVuZ3RoKTsKCQkKCQlpZiAobG93IDwgaGlnaCkKCQkJU3dhcChsaXN0W2xvd10sIGxpc3RbaGlnaF0sIHRlbXApOwoJfSB3aGlsZSAobG93IDwgaGlnaCk7CgoJU3dhcChsaXN0W2xlZnRdLCBsaXN0W2hpZ2hdLCB0ZW1wKTsKCglyZXR1cm4gaGlnaDsKfQoKdm9pZCBRdWlja19zb3J0KFdvcmRzIGxpc3RbXSwgaW50IGxlZnQsIGludCByaWdodCkKewoJaWYgKGxlZnQgPCByaWdodCkKCXsKCQlpbnQgcSA9IFBhcnRpdGlvbihsaXN0LCBsZWZ0LCByaWdodCk7CgkJUXVpY2tfc29ydChsaXN0LCBsZWZ0LCBxIC0gMSk7CgkJUXVpY2tfc29ydChsaXN0LCBxICsgMSwgcmlnaHQpOwoJfQp9CgoKCmludCBtYWluKHZvaWQpCnsKCWludCBOOwoJc3RyaW5nIHRlbXAgPSAiIjsKCgljaW4gPj4gTjsKCglXb3JkcyAqTGlzdCA9IG5ldyBXb3Jkc1tOXTsKCglmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykKCXsKCQljaW4gPj4gTGlzdFtpXS5kYXRhOwoJCUxpc3RbaV0ubGVuZ3RoID0gTGlzdFtpXS5kYXRhLmxlbmd0aCgpOwoJCWlmIChMaXN0W2ldLmxlbmd0aCA+IDUwKQoJCXsKCQkJcmV0dXJuIDA7CgkJfQoJfQoKCVF1aWNrX3NvcnQoTGlzdCwgMCwgTiAtIDEpOwoKCWZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKQoJewoJCWlmICh0ZW1wICE9IExpc3RbaV0uZGF0YSkKCQl7CgkJCXRlbXAgPSBMaXN0W2ldLmRhdGE7CgkJfQoJCWVsc2UKCQkJY29udGludWU7CgoJCWNvdXQgPDwgTGlzdFtpXS5kYXRhIDw8ICJcbiI7Cgl9CgoJZGVsZXRlW10gTGlzdDsKCglyZXR1cm4gMDsKfQ==
NQphYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQphYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYgphYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFiYQphYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQpkYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ==
5
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaba
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa