def special_promotion_calc(items_list, shopping_bag):
    """
    Calculate the special promotion withdrawing the more expensive elements first from the shopping bag
    :param items_list: list of items impacted by the promotion
    :param shopping_bag: current shopping bag
    :return: price of promotions
    """
    no_special_items = shopping_bag['special']
    no_promo_applied = no_special_items // 3
    # As the customer is always favoured we need to withdraw the more expensive items first
    no_item_in_promo = no_promo_applied * 3
    for item in items_list:
        if item in shopping_bag:
            while shopping_bag[item] > 0 and no_item_in_promo > 0:
                shopping_bag[item] -= 1
                no_item_in_promo -= 1
    del shopping_bag['special']
    return no_promo_applied * 45