def func284(testlist):
list1, list2, list3 = [], [], []
for i in testlist:
list1.append(len(str(i)))
maxlength = max(list1)
list1.clear()
for i in testlist:
list1.append(f'{i:{chr(0)}<{maxlength}}')
list1.sort(reverse=True)
for i in list1:
list2.append(i.replace(chr(0), ''))
num = len(list2)
maxnum = 1
while num:
maxnum *= num
num -= 1
while maxnum:
list3.append(''.join(str(i) for i in list2))
for i in range(len(list2) - 1):
if int(list2[i] + list2[i + 1]) < int(list2[i + 1] + list2[i]):
list2[i], list2[i + 1] = list2[i + 1], list2[i]
list3.append(''.join(str(i) for i in list2))
maxnum -= 1
return int(max(list3))
#testlist = [1, 20, 23, 4, 8] # 8,4,23,20,1
#testlist = [4, 6, 65] # 6,65,4
#testlist = [262,242,29,2822,282] # 29,282,2822,262,242
#testlist = [856, 22, 222, 2221, 2223] # 856,2223,222,22,2221
testlist = [650, 580, 66, 9, 661, 66105, 59] # 9,66,661,66105,650,59,580
print(func284(testlist))