#include <algorithm>
#include <cstring>
#include <iomanip>
#include <iostream>
using namespace std;
struct List {
char word[20];
int repeat;
};
int main() {
List array[] = { { "as", 6 }, { "a", 1 }, { "appetite", 1 }, { "angry", 1 }, { "are", 2 }, { "and", 4 }, { "b", 1 } };
for(const auto i : array) cout << setw(15) << left << i.word << i.repeat << endl;
sort(begin(array), end(array), [](const auto& lhs, const auto& rhs){ return *lhs.word < *rhs.word || *lhs.word == *rhs.word && (strlen(lhs.word) < strlen(rhs.word) || strlen(lhs.word) == strlen(rhs.word) && strcmp(lhs.word, rhs.word) < 0); });
for(const auto i : array) cout << setw(15) << left << i.word << i.repeat << endl;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNzdHJpbmc+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IExpc3QgewogIGNoYXIgd29yZFsyMF07CiAgaW50IHJlcGVhdDsKfTsKCmludCBtYWluKCkgewoJTGlzdCBhcnJheVtdID0geyB7ICJhcyIsIDYgfSwgeyAiYSIsIDEgfSwgeyAiYXBwZXRpdGUiLCAxIH0sIHsgImFuZ3J5IiwgMSB9LCB7ICJhcmUiLCAyIH0sIHsgImFuZCIsIDQgfSwgeyAiYiIsIDEgfSB9OwoJCglmb3IoY29uc3QgYXV0byBpIDogYXJyYXkpIGNvdXQgPDwgc2V0dygxNSkgPDwgbGVmdCA8PCBpLndvcmQgPDwgaS5yZXBlYXQgPDwgZW5kbDsKCXNvcnQoYmVnaW4oYXJyYXkpLCBlbmQoYXJyYXkpLCBbXShjb25zdCBhdXRvJiBsaHMsIGNvbnN0IGF1dG8mIHJocyl7IHJldHVybiAqbGhzLndvcmQgPCAqcmhzLndvcmQgfHwgKmxocy53b3JkID09ICpyaHMud29yZCAmJiAoc3RybGVuKGxocy53b3JkKSA8IHN0cmxlbihyaHMud29yZCkgfHwgc3RybGVuKGxocy53b3JkKSA9PSBzdHJsZW4ocmhzLndvcmQpICYmIHN0cmNtcChsaHMud29yZCwgcmhzLndvcmQpIDwgMCk7IH0pOwoJCglmb3IoY29uc3QgYXV0byBpIDogYXJyYXkpIGNvdXQgPDwgc2V0dygxNSkgPDwgbGVmdCA8PCBpLndvcmQgPDwgaS5yZXBlYXQgPDwgZW5kbDsJCn0=