



from functools import reduce

lowercase_													=      (
    '''73167176531330624919225119674426574742355349194934'''
    '''96983520312774506326239578318016984801869478851843'''
    '''85861560789112949495459501737958331952853208805511'''
    '''12540698747158523863050715693290963295227443043557'''
    '''66896648950445244523161731856403098711121722383113'''
    '''62229893423380308135336276614282806444486645238749'''
    '''30358907296290491560440772390713810515859307960866'''
    '''70172427121883998797908792274921901699720888093776'''
    '''65727333001053367881220235421809751254540594752243'''
    '''52584907711670556013604839586446706324415722155397'''
    '''53697817977846174064955149290862569321978468622482'''
    '''83972241375657056057490261407972968652414535100474'''
    '''82166370484403199890008895243450658541227588666881'''
    '''16427171479924442928230863465674813919123162824586'''
    '''17866458359124566529476545682848912883142607690042'''
    '''24219022671055626321111109370544217506941658960408'''
    '''07198403850962455444362981230987879927244284909188'''
    '''84580156166097919133875499200524063689912560717606'''
    '''05886116467109405077541002256983155200055935729725'''
    '''71636269561882670428252483600823257530420752963450'''
)






def        __lowerCAmelCase		(	__lowerCamelCase						:     str = N						)	->    int:
					return max(
					    # mypy cannot properly interpret reduce
					    int(reduce(lambda __lowerCamelCase					, __lowerCamelCase						: str(int(__lowerCamelCase						) * int(__lowerCamelCase						)						)					, n[i : i + 13]						)						)
					    for i in range(len(__lowerCamelCase						) - 12						)						)


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









from manim import *






class     __a			(  SCREAMING_SNAKE_CASE					):



	def 		UpperCamelCase				(    self				:     Tuple)->				Dict:
						__lowerCAmelCase						 =Rectangle(height=0.5					,						width=0.5)
						__lowerCAmelCase						 =Rectangle(height=0.4_6					,						width=0.4_6).set_stroke(width=0)

						__lowerCAmelCase						 =[mem.copy() for i in range(6)]
						__lowerCAmelCase						 =[mem.copy() for i in range(6)]
						__lowerCAmelCase						 =VGroup(*snake_case_).arrange(snake_case_					,						buff=0)
						__lowerCAmelCase						 =VGroup(*snake_case_).arrange(snake_case_					,						buff=0)
						__lowerCAmelCase						 =VGroup(snake_case_					,						snake_case_).arrange(snake_case_					,						buff=0)
						__lowerCAmelCase						 =Text("""CPU"""					,						font_size=24)
						__lowerCAmelCase						 =Group(snake_case_					,						snake_case_).arrange(snake_case_					,						buff=0.5					,						aligned_edge=snake_case_)
						cpu.move_to([-2.5, -0.5, 0])
						self.add(snake_case_)

						__lowerCAmelCase						 =[mem.copy() for i in range(1)]
						__lowerCAmelCase						 =VGroup(*snake_case_).arrange(snake_case_					,						buff=0)
						__lowerCAmelCase						 =Text("""GPU"""					,						font_size=24)
						__lowerCAmelCase						 =Group(snake_case_					,						snake_case_).arrange(snake_case_					,						buff=0.5					,						aligned_edge=snake_case_)
						gpu.align_to(snake_case_					,						snake_case_)
						gpu.set_x(gpu.get_x() - 1)

						self.add(snake_case_)

						__lowerCAmelCase						 =[mem.copy() for i in range(6)]
						__lowerCAmelCase						 =VGroup(*snake_case_).arrange(snake_case_					,						buff=0)

						__lowerCAmelCase						 =Text("""Model"""					,						font_size=24)
						__lowerCAmelCase						 =Group(snake_case_					,						snake_case_).arrange(snake_case_					,						buff=0.5					,						aligned_edge=snake_case_)
						model.move_to([3, -1.0, 0])

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

						__lowerCAmelCase						 =MarkupText(
						    F"""First, an empty model skeleton is loaded\ninto <span fgcolor='{YELLOW}'>memory</span> without using much RAM."""					,						font_size=24					,						)

						__lowerCAmelCase						 =Square(side_length=2.2)
						key.move_to([-5, 2, 0])

						__lowerCAmelCase						 =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(snake_case_					,						run_time=2.5)					,						Write(snake_case_)					,						Write(snake_case_))

						self.add(snake_case_)

						__lowerCAmelCase						 =[]
						__lowerCAmelCase						 =[]
						__lowerCAmelCase						 =[]
						for i, rect in enumerate(snake_case_):
											__lowerCAmelCase						 =Rectangle(height=0.4_6					,						width=0.4_6).set_stroke(width=0.0).set_fill(snake_case_					,						opacity=0.7)
											cpu_target.move_to(snake_case_)
											cpu_target.generate_target()
											__lowerCAmelCase						 =0.4_6 / 4
											__lowerCAmelCase						 =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=snake_case_)
																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=snake_case_					,						buff=0.0)
											else:
																cpu_target.target.next_to(cpu_targs[i - 1].target					,						direction=snake_case_					,						buff=0.0)
											cpu_targs.append(snake_case_)

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

						self.play(*snake_case_)
						self.play(*snake_case_)

						self.wait()




