



from collections import defaultdict



def        __a     (    lowerCAmelCase_   :					int = 5				)      -> int:






						'''simple docstring'''



						UpperCAmelCase_=   defaultdict(lowerCAmelCase_				)
						UpperCAmelCase_=   0

						while True:
												UpperCAmelCase_=   get_digits(lowerCAmelCase_				)
												freqs[digits].append(lowerCAmelCase_				)

												if len(freqs[digits]				) == max_base:
																		UpperCAmelCase_=   freqs[digits][0] ** 3
																		return base

												num += 1



def        __a     (    lowerCAmelCase_   :					int				)      -> str:






						'''simple docstring'''



						return "".join(sorted(str(num**3				)				)				)


if __name__ == "__main__":
	print(f'{solution() = }')









from __future__ import annotations

import random

# Adjacency list representation of this graph:
# https://en.wikipedia.org/wiki/File:Single_run_of_Karger%E2%80%99s_Mincut_algorithm.svg
__A				    =						{
    '''1''': ['''2''', '''3''', '''4''', '''5'''],
    '''2''': ['''1''', '''3''', '''4''', '''5'''],
    '''3''': ['''1''', '''2''', '''4''', '''5''', '''10'''],
    '''4''': ['''1''', '''2''', '''3''', '''5''', '''6'''],
    '''5''': ['''1''', '''2''', '''3''', '''4''', '''7'''],
    '''6''': ['''7''', '''8''', '''9''', '''10''', '''4'''],
    '''7''': ['''6''', '''8''', '''9''', '''10''', '''5'''],
    '''8''': ['''6''', '''7''', '''9''', '''10'''],
    '''9''': ['''6''', '''7''', '''8''', '''10'''],
    '''10''': ['''6''', '''7''', '''8''', '''9''', '''3'''],
}



def        __a     (    lowerCAmelCase_   :					dict[str, list[str]]				)      -> set[tuple[str, str]]:






						'''simple docstring'''



						UpperCAmelCase_=   {node: {node} for node in graph}

						UpperCAmelCase_=   {node: graph[node][:] for node in graph}

						while len(lowerCAmelCase_				) > 2:
												# Choose a random edge.
												UpperCAmelCase_=   random.choice(list(graph_copy.keys()				)				)
												UpperCAmelCase_=   random.choice(graph_copy[u]				)

												# Contract edge (u, v) to new node uv
												UpperCAmelCase_=   u + v
												UpperCAmelCase_=   list(set(graph_copy[u] + graph_copy[v]				)				)
												uv_neighbors.remove(lowerCAmelCase_				)
												uv_neighbors.remove(lowerCAmelCase_				)
												UpperCAmelCase_=   uv_neighbors
												for neighbor in uv_neighbors:
																		graph_copy[neighbor].append(lowerCAmelCase_				)

												UpperCAmelCase_=   set(contracted_nodes[u].union(contracted_nodes[v]				)				)

												# Remove nodes u and v.
												del graph_copy[u]
												del graph_copy[v]
												for neighbor in uv_neighbors:
																		if u in graph_copy[neighbor]:
																								graph_copy[neighbor].remove(lowerCAmelCase_				)
																		if v in graph_copy[neighbor]:
																								graph_copy[neighbor].remove(lowerCAmelCase_				)

    # Find cutset.
						UpperCAmelCase_=   [contracted_nodes[node] for node in graph_copy]
						return {
						    (node, neighbor)
						    for node in groups[0]
						    for neighbor in graph[node]
						    if neighbor in groups[1]
						}


if __name__ == "__main__":
	print(partition_graph(TEST_GRAPH))




