





"""simple docstring"""





from manim import *




class 							snake_case							(			__UpperCAmelCase ):

      '''simple docstring'''



      def       A_					(							self       :      List[Any] ):


        '''simple docstring'''




        __UpperCAmelCase    :						Optional[Any]       =						Rectangle(height=0.5						,				width=0.5 )
        __UpperCAmelCase    :						Union[str, Any]       =						Rectangle(height=0.4_6						,				width=0.4_6 ).set_stroke(width=0 )

        __UpperCAmelCase    :						Union[str, Any]       =						[mem.copy() for i in range(6 )]
        __UpperCAmelCase    :						Optional[Any]       =						[mem.copy() for i in range(6 )]
        __UpperCAmelCase    :						Optional[Any]       =						VGroup(*__lowercase ).arrange(__lowercase						,				buff=0 )
        __UpperCAmelCase    :						Dict       =						VGroup(*__lowercase ).arrange(__lowercase						,				buff=0 )
        __UpperCAmelCase    :						Any       =						VGroup(__lowercase						,				__lowercase ).arrange(__lowercase						,				buff=0 )
        __UpperCAmelCase    :						Optional[Any]       =						Text('''CPU'''						,				font_size=24 )
        __UpperCAmelCase    :						Dict       =						Group(__lowercase						,				__lowercase ).arrange(__lowercase						,				buff=0.5						,				aligned_edge=__lowercase )
        cpu.move_to([-2.5, -0.5, 0] )
        self.add(__lowercase )

        __UpperCAmelCase    :						str       =						[mem.copy() for i in range(1 )]
        __UpperCAmelCase    :						int       =						VGroup(*__lowercase ).arrange(__lowercase						,				buff=0 )
        __UpperCAmelCase    :						str       =						Text('''GPU'''						,				font_size=24 )
        __UpperCAmelCase    :						Tuple       =						Group(__lowercase						,				__lowercase ).arrange(__lowercase						,				buff=0.5						,				aligned_edge=__lowercase )
        gpu.align_to(__lowercase						,				__lowercase )
        gpu.set_x(gpu.get_x() - 1 )

        self.add(__lowercase )

        __UpperCAmelCase    :						Tuple       =						[mem.copy() for i in range(6 )]
        __UpperCAmelCase    :						Dict       =						VGroup(*__lowercase ).arrange(__lowercase						,				buff=0 )

        __UpperCAmelCase    :						str       =						Text('''Model'''						,				font_size=24 )
        __UpperCAmelCase    :						int       =						Group(__lowercase						,				__lowercase ).arrange(__lowercase						,				buff=0.5						,				aligned_edge=__lowercase )
        model.move_to([3, -1.0, 0] )

        self.play(
            Create(__lowercase						,				run_time=1 )						,				Create(__lowercase						,				run_time=1 )						,				Create(__lowercase						,				run_time=1 )						,				)

        __UpperCAmelCase    :						Union[str, Any]       =						MarkupText(
            f'''First, an empty model skeleton is loaded\ninto <span fgcolor=\'{YELLOW}\'>memory</span> without using much RAM.'''						,				font_size=24						,				)

        __UpperCAmelCase    :						List[Any]       =						Square(side_length=2.2 )
        key.move_to([-5, 2, 0] )

        __UpperCAmelCase    :						Dict       =						MarkupText(
            f'''<b>Key:</b>\n\n<span fgcolor=\'{YELLOW}\'>●</span> Empty Model'''						,				font_size=18						,				)

        key_text.move_to([-5, 2.4, 0] )

        step_a.move_to([2, 2, 0] )
        self.play(Write(__lowercase						,				run_time=2.5 )						,				Write(__lowercase )						,				Write(__lowercase ) )

        self.add(__lowercase )

        __UpperCAmelCase    :						List[Any]       =						[]
        __UpperCAmelCase    :						List[str]       =						[]
        __UpperCAmelCase    :						Union[str, Any]       =						[]
        for i, rect in enumerate(__lowercase ):
          __UpperCAmelCase    :						Dict       =						Rectangle(height=0.4_6						,				width=0.4_6 ).set_stroke(width=0.0 ).set_fill(__lowercase						,				opacity=0.7 )
          cpu_target.move_to(__lowercase )
          cpu_target.generate_target()
          __UpperCAmelCase    :						Optional[Any]       =						0.4_6 / 4
          __UpperCAmelCase    :						int       =						0.4_6 / 3

          if i == 0:
            cpu_target.target.next_to(cpu_left_col_base[0].get_corner(DOWN + LEFT )						,				buff=0.0_2						,				direction=__lowercase )
            cpu_target.target.set_x(cpu_target.target.get_x() + 0.1 )
          elif i == 3:
            cpu_target.target.next_to(cpu_targs[0].target						,				direction=__lowercase						,				buff=0.0 )
          else:
            cpu_target.target.next_to(cpu_targs[i - 1].target						,				direction=__lowercase						,				buff=0.0 )
          cpu_targs.append(__lowercase )

          first_animations.append(rect.animate(run_time=0.5 ).set_stroke(__lowercase ) )
          second_animations.append(MoveToTarget(__lowercase						,				run_time=1.5 ) )

        self.play(*__lowercase )
        self.play(*__lowercase )

        self.wait()






"""simple docstring"""





def       lowerCamelCase_       (   )						->str:





  """simple docstring"""


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


def       lowerCamelCase_       (   UpperCAmelCase_  )						->Union[str, Any]:





  """simple docstring"""


  __UpperCAmelCase    :						Dict       =						1
  __UpperCAmelCase    :						Any       =						2
  while i * i <= n:
    __UpperCAmelCase    :						Tuple       =						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       lowerCamelCase_       (   )						->Optional[int]:





  """simple docstring"""


  return next(i for i in triangle_number_generator() if count_divisors(UpperCAmelCase_  ) > 5_00  )


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