import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
static LinkedList<String> list;
public static void main
(String[] args
) { list = new LinkedList<String>();
add("C3138");
add("C3119");
add("A1488");
add("A1480");
add("A1517");
add("B1297");
add("C2597");
add("B1356");
add("C9000");
add("C3517");
add("C3729");
add("C1729");
add("B1729");
printLL();
}
public static void add
(String value
) { // Integer value form the string passed into the method
int valueInt = getInt(value);
// If linked list is empty, add value and return from method
if (list.size() == 0) {
list.add(value);
return;
}
// Compare this item to be added to the first item
int firstNode = getInt(list.get(0));
if (list.get(0).charAt(0) > value.charAt(0)
|| (list.get(0).charAt(0) == value.charAt(0) && firstNode > valueInt)){
list.add(0, value);
return;
}
// Compare this item to the last item
int lastNode = getInt(list.get(list.size() - 1));
if (list.get(list.size() - 1).charAt(0) < value.charAt(0) ||
(list.get(list.size() - 1).charAt(0) == value.charAt(0) && lastNode < valueInt)) {
list.add(list.size(), value);
return;
}
// add the inbetween items
int i = 1;
int tempInt = getInt(list.get(i));
while (i < list.size() && ( list.get(i).charAt(0) < value.charAt(0)
|| ((list.get(i).charAt(0) == value.charAt(0)) && (valueInt > tempInt)))) {
i++;
tempInt = getInt(list.get(i));
}
list.add(i, value);
}
public static int getInt
(String item
) { return Integer.
parseInt(item.
replaceAll("\\D",
"")); }
public static void printLL() {
for(int i = 0; i < list.size(); i++) {
System.
out.
print(list.
get(i
) + " "); }
}
}
CgppbXBvcnQgamF2YS51dGlsLio7CmltcG9ydCBqYXZhLmxhbmcuKjsKaW1wb3J0IGphdmEuaW8uKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJc3RhdGljIExpbmtlZExpc3Q8U3RyaW5nPiBsaXN0OwoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewoJCWxpc3QgPSBuZXcgTGlua2VkTGlzdDxTdHJpbmc+KCk7CgkJYWRkKCJDMzEzOCIpOwoJCWFkZCgiQzMxMTkiKTsKCQlhZGQoIkExNDg4Iik7CgkJYWRkKCJBMTQ4MCIpOwoJCWFkZCgiQTE1MTciKTsKCQlhZGQoIkIxMjk3Iik7CgkJYWRkKCJDMjU5NyIpOwoJCWFkZCgiQjEzNTYiKTsKCQlhZGQoIkM5MDAwIik7CgkJYWRkKCJDMzUxNyIpOwoJCWFkZCgiQzM3MjkiKTsKCQlhZGQoIkMxNzI5Iik7CgkJYWRkKCJCMTcyOSIpOwoKCQlwcmludExMKCk7Cgl9CglwdWJsaWMgc3RhdGljIHZvaWQgYWRkKFN0cmluZyB2YWx1ZSkgewoJCS8vIEludGVnZXIgdmFsdWUgZm9ybSB0aGUgc3RyaW5nIHBhc3NlZCBpbnRvIHRoZSBtZXRob2QKCQlpbnQgdmFsdWVJbnQgPSBnZXRJbnQodmFsdWUpOwoKCQkvLyBJZiBsaW5rZWQgbGlzdCBpcyBlbXB0eSwgYWRkIHZhbHVlIGFuZCByZXR1cm4gZnJvbSBtZXRob2QKCQlpZiAobGlzdC5zaXplKCkgPT0gMCkgewoJCQlsaXN0LmFkZCh2YWx1ZSk7CgkJCXJldHVybjsKCQl9CgoJCS8vIENvbXBhcmUgdGhpcyBpdGVtIHRvIGJlIGFkZGVkIHRvIHRoZSBmaXJzdCBpdGVtCgkJaW50IGZpcnN0Tm9kZSA9IGdldEludChsaXN0LmdldCgwKSk7CgkJaWYgKGxpc3QuZ2V0KDApLmNoYXJBdCgwKSA+IHZhbHVlLmNoYXJBdCgwKSAKCQkJCXx8IChsaXN0LmdldCgwKS5jaGFyQXQoMCkgPT0gdmFsdWUuY2hhckF0KDApICYmIGZpcnN0Tm9kZSA+IHZhbHVlSW50KSl7CgkJCWxpc3QuYWRkKDAsIHZhbHVlKTsKCQkJcmV0dXJuOwoJCX0KCgkJLy8gQ29tcGFyZSB0aGlzIGl0ZW0gdG8gdGhlIGxhc3QgaXRlbQoJCWludCBsYXN0Tm9kZSA9IGdldEludChsaXN0LmdldChsaXN0LnNpemUoKSAtIDEpKTsKCQlpZiAobGlzdC5nZXQobGlzdC5zaXplKCkgLSAxKS5jaGFyQXQoMCkgPCB2YWx1ZS5jaGFyQXQoMCkgfHwgCgkJCQkobGlzdC5nZXQobGlzdC5zaXplKCkgLSAxKS5jaGFyQXQoMCkgPT0gdmFsdWUuY2hhckF0KDApICYmIGxhc3ROb2RlIDwgdmFsdWVJbnQpKSB7CgkJCWxpc3QuYWRkKGxpc3Quc2l6ZSgpLCB2YWx1ZSk7CgkJCXJldHVybjsKCQl9CgkJLy8gYWRkIHRoZSBpbmJldHdlZW4gaXRlbXMKCQkKCQlpbnQgaSA9IDE7CgkJaW50IHRlbXBJbnQgPSBnZXRJbnQobGlzdC5nZXQoaSkpOwoJCXdoaWxlIChpIDwgbGlzdC5zaXplKCkgJiYgKCBsaXN0LmdldChpKS5jaGFyQXQoMCkgPCB2YWx1ZS5jaGFyQXQoMCkKCQkJCXx8ICgobGlzdC5nZXQoaSkuY2hhckF0KDApID09IHZhbHVlLmNoYXJBdCgwKSkgJiYgKHZhbHVlSW50ID4gdGVtcEludCkpKSkgewoJCQlpKys7CgkJCXRlbXBJbnQgPSBnZXRJbnQobGlzdC5nZXQoaSkpOwoJCX0KCQlsaXN0LmFkZChpLCB2YWx1ZSk7CgkJCgkJCgkJCgl9IAoJcHVibGljIHN0YXRpYyBpbnQgZ2V0SW50KFN0cmluZyBpdGVtKSB7CgkJcmV0dXJuIEludGVnZXIucGFyc2VJbnQoaXRlbS5yZXBsYWNlQWxsKCJcXEQiLCAiIikpOwoJfQoKCXB1YmxpYyBzdGF0aWMgdm9pZCBwcmludExMKCkgewoJCWZvcihpbnQgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgaSsrKSB7CgkJCVN5c3RlbS5vdXQucHJpbnQobGlzdC5nZXQoaSkgKyAiICIpOwoJCX0KCQlTeXN0ZW0ub3V0LnByaW50bG4oIiIpOwoJfQp9