





"""simple docstring"""






def      lowercase__ (					)    ->			int:



			'''simple docstring'''
			for n in range(1							,			1_0_0_0_0_0_0			):
						yield n * (n + 1) // 2






def      lowercase__ (					lowerCAmelCase__   :			List[str]			)    ->			str:



			'''simple docstring'''
			a__  :	Tuple		 =			1
			a__  :	str		 =			2
			while i * i <= n:
						a__  :	int		 =			0
						while n % i == 0:
									n //= i
									multiplicity += 1
						divisors_count *= multiplicity + 1
						i += 1
			if n > 1:
						divisors_count *= 2
			return divisors_count






def      lowercase__ (					)    ->			str:



			'''simple docstring'''
			return next(i for i in triangle_number_generator() if count_divisors(lowerCAmelCase__			) > 5_0_0			)


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






"""simple docstring"""






__UpperCAmelCase						=			[
    [0, 16, 13, 0, 0, 0],
    [0, 0, 10, 12, 0, 0],
    [0, 4, 0, 0, 14, 0],
    [0, 0, 9, 0, 0, 20],
    [0, 0, 0, 7, 0, 4],
    [0, 0, 0, 0, 0, 0],
]






def      lowercase__ (					lowerCAmelCase__   :			Dict							,			lowerCAmelCase__   :			Optional[int]							,			lowerCAmelCase__   :			List[str]							,			lowerCAmelCase__   :			Tuple			)    ->			Dict:



			'''simple docstring'''
			# Return True if there is node that has not iterated.
			a__  :	int		 =			[False] * len(lowerCAmelCase__			)
			a__  :	Optional[Any]		 =			[s]
			a__  :	Optional[int]		 =			True

			while queue:
						a__  :	Any		 =			queue.pop(0			)
						for ind in range(len(graph[u]			)			):
									if visited[ind] is False and graph[u][ind] > 0:
												queue.append(lowerCAmelCase__			)
												a__  :	Any		 =			True
												a__  :	Union[str, Any]		 =			u

			return visited[t]






def      lowercase__ (					lowerCAmelCase__   :			List[str]							,			lowerCAmelCase__   :			List[Any]							,			lowerCAmelCase__   :			Optional[Any]			)    ->			Any:



			'''simple docstring'''
			a__  :	Any		 =			[-1] * (len(lowerCAmelCase__			))
			a__  :	Any		 =			0
			a__  :	List[str]		 =			[]
			a__  :	Tuple		 =			[i[:] for i in graph]  # Record original cut, copy.
			while bfs(lowerCAmelCase__							,			lowerCAmelCase__							,			lowerCAmelCase__							,			lowerCAmelCase__			):
						a__  :	Any		 =			float("Inf"			)
						a__  :	Optional[int]		 =			sink

						while s != source:
									# Find the minimum value in select path
									a__  :	Union[str, Any]		 =			min(lowerCAmelCase__							,			graph[parent[s]][s]			)
									a__  :	List[str]		 =			parent[s]

						max_flow += path_flow
						a__  :	List[str]		 =			sink

						while v != source:
									a__  :	int		 =			parent[v]
									graph[u][v] -= path_flow
									graph[v][u] += path_flow
									a__  :	List[str]		 =			parent[v]

			for i in range(len(lowerCAmelCase__			)			):
						for j in range(len(graph[0]			)			):
									if graph[i][j] == 0 and temp[i][j] > 0:
												res.append((i, j)			)

			return res


if __name__ == "__main__":
		print(mincut(test_graph, source=0, sink=5))