
# a = [42, 23, 66, 42, 93, 47, 30]
# b = 'dsf aaerwq dfasdf '
# c = ('sdf', 'sdqwet', 'ghetrertg')

# метод .sort возвращает None
# new_list = a
# new_list = new_list.sort()
# print(new_list)

# Принимает любую итерабельную последовательность
# Не изменяет начальную коллекцию
# Возвращает список
# sorted(a)


# sorted_string = sorted(b, reverse=True)
# sorted_tuple = sorted(c)

# print(sorted_string)
# print(sorted_tuple)
# print(sorted(a))


# Сортировка будет происходить по двум признакам последовательно
# def foo(x):
# 	return x%10, x//10%10

# print(sorted(a, key=foo))


# my_list_1 = ['ZZZ 5', 'aaa 7', 'BBB 23', 'www 45', 'EEE 5', 'ddd 5']

# print(sorted(my_list_1, key = str.lower))
# print(sorted(my_list_1, key = lambda x: (int(x.split()[1]), x.split()[0].lower() )))

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


# subject_marks = [('English', 88), ('Science', 90), ('Maths', 97), ('Physics', 93),('History', 82)]

# subject_marks = [('English', 88), ('Science', 90), ('Maths', 88),
#                  ('Physics', 93), ('History', 78), ('French', 78),
#                  ('Art', 78), ('Chemistry', 88), ('Programming', 91)]

# subject_marks = sorted(subject_marks, key = lambda x: x[1])
# for key, value in subject_marks:
# 	print(key, value)


# subject_marks = sorted(subject_marks, key = lambda x: x[1], reverse=True)
# for key, value in subject_marks:
# 	print(key, value)


# subject_marks = sorted(subject_marks, key = lambda x: (-x[1], x[0]))
# for key, value in subject_marks:
# 	print(key, value)

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# models = [{'make': 'Nokia', 'model': 216, 'color': 'Black'},
#           {'make': 'Mi Max', 'model': 2, 'color': 'Gold'},
#           {'make': 'Samsung', 'model': 7, 'color': 'Blue'},
#           {'make': 'Apple', 'model': 10, 'color': 'Silver'},
#           {'make': 'Oppo', 'model': 9, 'color': 'Red'},
#           {'make': 'Huawei', 'model': 4, 'color': 'Grey'},
#           {'make': 'Honor', 'model': 3, 'color': 'Black'}]

# models = sorted(models, key=lambda x: x.get('color'))

# for i in models:
# 	print("Производитель: ", i.get('make'), ", модель: ", i.get('model'), ", цвет: ", i.get('color'), sep='')
	


# for i in sorted(models, key=lambda x : models.)

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# my_list = []

# while True:
# 	st = input()
# 	if st == 'конец':
# 		break
# 	my_list.append(st.rpartition(':'))

# for i in sorted(my_list, key=lambda x: -int(x[2])):
# 	print(i[0])

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# n = int(input())
# my_list = []
# my_dict = {}

# for i in range(n):
# 	st = input()
# 	if my_dict.get(st) == None:
# 		my_dict.update({st: 1})
# 	else:
# 		my_dict.update({st: my_dict.get(st) + 1})

# for key, value in my_dict.items():
# 	my_list.append([key, value])

# my_list = sorted(my_list, key=lambda x: x[1])

# print(my_list[-1][0], ', ', my_list[-1][1], sep='')
# print(my_list[0][0], ', ', my_list[0][1], sep='')

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# print(type(input().split()))

# my_dict = {}
# n = input()
# for i in range(n):
# 	st = input().split()

def sort_1():
    fone_book = {}
    req_list = []
    rec_cnt = int(input())
    for i in range(rec_cnt):
        record = input().split()
        if record[1] not in fone_book.keys():
            fone_book[record[1]] = [record[0]]
        else:
            tmp = fone_book[record[1]]
            tmp.append(record[0])
            fone_book[record[1]] = tmp

    req_cnt = int(input())
    for i in range(req_cnt):
        req_list.append(input())
    for i in req_list:
        if i in fone_book.keys():
            print(*fone_book[i])
        else:
            print('Неизвестный номер')
    
# sort_1()

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    

def sort_2():
    birthday_book = {}
    req_list = []
    rec_cnt = int(input())
    for i in range(rec_cnt):
        record = input().split()

        if record[2] not in birthday_book.keys():
            birthday_book[record[2]] = [[record[0], record[1]]]
        else:
            tmp = birthday_book[record[2]]
            tmp.append([record[0], record[1]])
            birthday_book[record[2]] = tmp

    req_cnt = int(input())
    for i in range(req_cnt):
        req_list.append(input())

    for i in req_list:
        if i in birthday_book.keys():
            for j in birthday_book.get(i):
                print(j[0], end=' ')
            print()
        else:
            print('Нет данных')

# sort_2()

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    

def sort_3():
    drivers = {}
    new_drivers = []
    in_str = ""
    in_data = []
    
    while True:
        int_str = input()
        if int_str == "конец":
            break
        in_data = int_str.split(", ")
        if in_data[0] not in drivers.keys():
            drivers[in_data[0]] = [int(in_data[1]), 1]
        else:
            drivers[in_data[0]] = [drivers.get(in_data[0])[0] + int(in_data[1]), drivers.get(in_data[0])[1] + 1]
    
    for key, value in drivers.items():
        new_drivers.append((key, value[0]/value[1]))

    new_drivers = sorted(new_drivers, key=lambda x: (-x[1], x[0][0])) 

    for i in new_drivers:
        print(i[0], i[1])

# sort_3()

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    

# Сортировка пузырьком
def sort_bubble():
    a = [1, 7, -3, 9, 0, -67, 34, 12, 45, 1000, 6,  8, -2, 99]
    n = len(a)
    flag = True

    for i in range(n - 1):
        flag = True
        for j in range(n - i - 1):
            if a[j] > a[j + 1]:                  # если порядок элементов пары неправильный
                a[j], a[j + 1] = a[j + 1], a[j]  # меняем элементы пары местами 
                flag = False
        if flag == True:
            break

    print('Отсортированный список:', a)

# sort_bubble()
    
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    

# Сортировка выбором
def sort_selection():
    a = [78, -32, 5, 39, 58, -5, -63, 57, 72, 9, 53, -1, 63, -97,
        -21, -94, -47, 57, -8, 60, -23, -72, -22, -79, 90, 96, -41,
        -71, -48, 84, 89, -96, 41, -16, 94, -60, -64, -39, 60, -14,
        -62, -19, -3, 32, 98, 14, 43, 3, -56, 71, -71, -67, 80, 27,
        92, 92, -64, 0, -77, 2, -26, 41, 3, -31, 48, 39, 20, -30,
        35, 32, -58, 2, 63, 64, 66, 62, 82, -62, 9, -52, 35, -61,
        87, 78, 93, -42, 87, -72, -10, -36, 61, -16, 59, 59, 22,
        -24, -67, 76, -94, 59]

    n = len(a)
    
    new_a = []

    for i in range(len(a)):
        el = min(a)
        index = a.index(el)
        a.pop(index)
        new_a.append(el)

    print(new_a)

# sort_selection()

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    

# Сортировка простыми вставками
def sort_simple_insertion():
    a = [1, 7, -3, 9, 0, -67, 34, 12, 45, 1000, 6,  8, -2, 99]
    n = len(a)

    for i in range(1, n): 
        elem = a[i]  # берем первый элемент из неотсортированной части списка
        j = i
        
        # пока элемент слева существует и больше нашего текущего элемента
        while j >= 1 and a[j - 1] > elem:
            # смещаем j-й элемент отсортированной части вправо
            a[j] = a[j - 1]
            # сами идём влево, дальше ищем место для нашего текущего элемента
            j -= 1

        # нашли место для нащего текущего элемента из неотсортированной части
        # и вставляем его на индекс j в отсортированной части
        a[j] = elem

    for i in range(1, n):
        elem = a[1] # первый элемент
        j = i       


    print('Отсортированный список:', a)
    
# sort_simple_insertion()
    
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    

# Бинарный поиск
def binary_search(list, key):
    low = 0
    high = len(list) - 1

    while low <= high:
        mid = (low + high) // 2
        midVal = list[mid]
        if midVal == key:
            return mid
        if midVal > key:
            high = mid - 1
        else:
            low = mid + 1
    return 'not found :('


