
# Algorithm for the pigeonhole sorting







def 						SCREAMING_SNAKE_CASE__     (   __lowerCAmelCase				):
    snake_case__    =					min(__lowerCAmelCase				)  # min() finds the minimum value
    snake_case__    =					max(__lowerCAmelCase				)  # max() finds the maximum value

    snake_case__    =					max_val - min_val + 1  # size is difference of max and min values plus one

    # list of pigeonholes of size equal to the variable size
    snake_case__    =					[0] * size

    # Populate the pigeonholes.
    for x in a:
        assert isinstance(__lowerCAmelCase     ,		__lowerCAmelCase				), "integers only please"
        holes[x - min_val] += 1

    # Putting the elements back into the array in an order.
    snake_case__    =					0
    for count in range(__lowerCAmelCase				):
        while holes[count] > 0:
            holes[count] -= 1
            snake_case__    =					count + min_val
            i += 1





def 						SCREAMING_SNAKE_CASE__     (   ):
    snake_case__    =					[8, 3, 2, 7, 4, 6, 8]
    pigeonhole_sort(__lowerCAmelCase				)
    print("Sorted order is:"     ,		" ".join(__lowerCAmelCase				)				)


if __name__ == "__main__":
     main()





import math

__magic_name__  							=	10
__magic_name__  							=	7
__magic_name__  							=	BALLS_PER_COLOUR * NUM_COLOURS





def 						SCREAMING_SNAKE_CASE__     (   __lowerCAmelCase = 20				):
    snake_case__    =					math.comb(__lowerCAmelCase     ,		__lowerCAmelCase				)
    snake_case__    =					math.comb(NUM_BALLS - BALLS_PER_COLOUR     ,		__lowerCAmelCase				)

    snake_case__    =					NUM_COLOURS * (1 - missing_colour / total)

    return F"""{result:.9f}"""


if __name__ == "__main__":
     print(solution(20))



