"""simple docstring"""


def 			__UpperCAmelCase    (	):







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






def 			__UpperCAmelCase    (	lowercase						):







  """simple docstring"""
  _UpperCAmelCase         =					1
  _UpperCAmelCase         =					2
  while i * i <= n:
    _UpperCAmelCase         =					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 			__UpperCAmelCase    (	):







  """simple docstring"""
  return next(i for i in triangle_number_generator() if count_divisors(lowercase						) > 5_00						)


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

"""simple docstring"""


from __future__ import annotations

from collections import Counter
from random import random


class 				a :


    def __init__(    self		:     Union[str, Any]    ):
      _UpperCAmelCase         =					{}


    def    lowerCAmelCase_     (    self		:     Optional[int]      , __lowerCAmelCase		:     str    ):
      _UpperCAmelCase         =					{}


    def    lowerCAmelCase_     (    self		:     str      , __lowerCAmelCase		:     str      , __lowerCAmelCase		:     str      , __lowerCAmelCase		:     float    ):
      if nodea not in self.connections:
        self.add_node(__lowerCAmelCase    )
      if nodea not in self.connections:
        self.add_node(__lowerCAmelCase    )
      _UpperCAmelCase         =					probability


    def    lowerCAmelCase_     (    self		:     Optional[Any]    ):
      return list(self.connections    )


    def    lowerCAmelCase_     (    self		:     List[Any]      , __lowerCAmelCase		:     str    ):
      _UpperCAmelCase         =					0
      _UpperCAmelCase         =					random()

      for dest in self.connections[node]:
        current_probability += self.connections[node][dest]
        if current_probability > random_value:
          return dest
      return ""






def 			__UpperCAmelCase    (	lowercase      ,lowercase      ,lowercase						):







  """simple docstring"""
  _UpperCAmelCase         =					MarkovChainGraphUndirectedUnweighted()

  for nodea, nodea, probability in transitions:
    graph.add_transition_probability(lowercase      ,lowercase      ,lowercase						)

  _UpperCAmelCase         =					Counter(graph.get_nodes()						)
  _UpperCAmelCase         =					start

  for _ in range(lowercase						):
    _UpperCAmelCase         =					graph.transition(lowercase						)
    visited[node] += 1

  return visited


if __name__ == "__main__":
    import doctest

    doctest.testmod()
