






import random






def   UpperCamelCase  (       snake_case__     :   Union[str, Any]	,snake_case__     :   Tuple	,snake_case__     :   Union[str, Any] = False  ):




     '''simple docstring'''






     __snake_case			:Union[str, Any]          =						{i: [] for i in range(a__  )}

     # if probability is greater or equal than 1, then generate a complete graph
     if probability >= 1:
          return complete_graph(a__  )
     # if probability is lower or equal than 0, then return a graph without edges
     if probability <= 0:
          return graph

     # for each couple of nodes, add an edge from u to v
     # if the number randomly generated is greater than probability probability
     for i in range(a__  ):
          for j in range(i + 1	,a__  ):
               if random.random() < probability:
                    graph[i].append(a__  )
                    if not directed:
                         # if the graph is undirected, add an edge in from j to i, either
                         graph[j].append(a__  )
     return graph






def   UpperCamelCase  (       snake_case__     :   Any  ):




     '''simple docstring'''






     return {
         i: [j for j in range(a__  ) if i != j] for i in range(a__  )
     }


if __name__ == "__main__":
     import doctest

     doctest.testmod()










import math

lowerCamelCase__							=     10
lowerCamelCase__							=     7
lowerCamelCase__							=     BALLS_PER_COLOUR * NUM_COLOURS






def   UpperCamelCase  (       snake_case__     :   int = 20  ):




     '''simple docstring'''






     __snake_case			:Dict          =						math.comb(snake_case__	,snake_case__  )
     __snake_case			:int          =						math.comb(NUM_BALLS - BALLS_PER_COLOUR	,snake_case__  )

     __snake_case			:List[str]          =						NUM_COLOURS * (1 - missing_colour / total)

     return f'''{result:.9f}'''


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


