

from __future__ import annotations

import os
from collections.abc import Mapping

_SCREAMING_SNAKE_CASE					:  Any             =      tuple[int, int]






class 	UpperCAmelCase__		:






  """simple docstring"""


  def __init__(							self						:		Dict     ,       __lowerCamelCase						:		set[int]     ,       __lowerCamelCase						:		Mapping[EdgeT, int] )		->							None:
       SCREAMING_SNAKE_CASE__   =   vertices
       SCREAMING_SNAKE_CASE__   =   {
           (min(__lowerCamelCase ), max(__lowerCamelCase )): weight for edge, weight in edges.items()
       }






  def 				lowercase_		(							self						:		Tuple     ,       __lowerCamelCase						:		EdgeT     ,       __lowerCamelCase						:		int )		->							None:
       self.vertices.add(edge[0] )
       self.vertices.add(edge[1] )
       SCREAMING_SNAKE_CASE__   =   weight







  def 				lowercase_		(							self						:		Optional[Any] )		->							Graph:
       SCREAMING_SNAKE_CASE__   =   Graph({min(self.vertices )}     ,       {} )
       SCREAMING_SNAKE_CASE__   =   42
       SCREAMING_SNAKE_CASE__   =   42
       SCREAMING_SNAKE_CASE__   =   42
       SCREAMING_SNAKE_CASE__   =   42

       while len(subgraph.vertices ) < len(self.vertices ):
            SCREAMING_SNAKE_CASE__   =   max(self.edges.values() ) + 1
            for edge, weight in self.edges.items():
                 if (edge[0] in subgraph.vertices) ^ (edge[1] in subgraph.vertices):
                      if weight < min_weight:
                           SCREAMING_SNAKE_CASE__   =   edge
                           SCREAMING_SNAKE_CASE__   =   weight

            subgraph.add_edge(__lowerCamelCase     ,       __lowerCamelCase )

       return subgraph



def     UpperCAmelCase_       (						_A = "p107_network.txt"    ):





     '''simple docstring'''




     SCREAMING_SNAKE_CASE__   =   os.path.abspath(os.path.dirname(_A    )    )
     SCREAMING_SNAKE_CASE__   =   os.path.join(_A				,		_A    )
     SCREAMING_SNAKE_CASE__   =   {}
     SCREAMING_SNAKE_CASE__   =   42
     SCREAMING_SNAKE_CASE__   =   42
     SCREAMING_SNAKE_CASE__   =   42

     with open(_A    ) as f:
          SCREAMING_SNAKE_CASE__   =   f.read().strip().split('''\n'''    )

     SCREAMING_SNAKE_CASE__   =   [line.split(''','''    ) for line in data]

     for edgea in range(1				,		len(_A    )    ):
          for edgea in range(_A    ):
               if adjaceny_matrix[edgea][edgea] != "-":
                    SCREAMING_SNAKE_CASE__   =   int(adjaceny_matrix[edgea][edgea]    )

     SCREAMING_SNAKE_CASE__   =   Graph(set(range(len(_A    )    )    )				,		_A    )

     SCREAMING_SNAKE_CASE__   =   graph.prims_algorithm()

     SCREAMING_SNAKE_CASE__   =   sum(graph.edges.values()    )
     SCREAMING_SNAKE_CASE__   =   sum(subgraph.edges.values()    )

     return initial_total - optimal_total


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





from functools import reduce

_SCREAMING_SNAKE_CASE					:  Any             =      (
    '''73167176531330624919225119674426574742355349194934'''
    '''96983520312774506326239578318016984801869478851843'''
    '''85861560789112949495459501737958331952853208805511'''
    '''12540698747158523863050715693290963295227443043557'''
    '''66896648950445244523161731856403098711121722383113'''
    '''62229893423380308135336276614282806444486645238749'''
    '''30358907296290491560440772390713810515859307960866'''
    '''70172427121883998797908792274921901699720888093776'''
    '''65727333001053367881220235421809751254540594752243'''
    '''52584907711670556013604839586446706324415722155397'''
    '''53697817977846174064955149290862569321978468622482'''
    '''83972241375657056057490261407972968652414535100474'''
    '''82166370484403199890008895243450658541227588666881'''
    '''16427171479924442928230863465674813919123162824586'''
    '''17866458359124566529476545682848912883142607690042'''
    '''24219022671055626321111109370544217506941658960408'''
    '''07198403850962455444362981230987879927244284909188'''
    '''84580156166097919133875499200524063689912560717606'''
    '''05886116467109405077541002256983155200055935729725'''
    '''71636269561882670428252483600823257530420752963450'''
)
def     UpperCAmelCase_       (						_A = N    ):





     '''simple docstring'''




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


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


