Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Day 15: Chiton

day15/solution.livemd

Day 15: Chiton

Setup

Mix.install([{:kino, "~> 0.4.1"}])

input = Kino.Input.textarea("Place your input here")
cave_map =
  for {row, j} <- Kino.Input.read(input) |> String.split("\n") |> Enum.with_index(),
      {risk, i} <- String.graphemes(row) |> Enum.map(&amp;String.to_integer/1) |> Enum.with_index(),
      into: %{},
      do: {{j, i}, risk}
%{
  {76, 13} => 8,
  {37, 47} => 9,
  {65, 63} => 9,
  {38, 2} => 4,
  {1, 26} => 7,
  {83, 76} => 1,
  {32, 15} => 2,
  {89, 14} => 1,
  {35, 30} => 9,
  {37, 53} => 9,
  {4, 5} => 7,
  {8, 50} => 4,
  {78, 98} => 8,
  {95, 56} => 8,
  {74, 12} => 2,
  {11, 39} => 5,
  {65, 43} => 6,
  {22, 38} => 9,
  {14, 86} => 7,
  {20, 41} => 7,
  {29, 25} => 8,
  {86, 10} => 9,
  {83, 36} => 9,
  {29, 26} => 7,
  {47, 27} => 4,
  {4, 81} => 9,
  {31, 42} => 6,
  {9, 34} => 9,
  {90, 0} => 8,
  {67, 98} => 7,
  {13, 85} => 4,
  {63, 81} => 3,
  {82, 60} => 2,
  {47, 38} => 7,
  {15, 92} => 7,
  {58, 58} => 5,
  {20, 3} => 7,
  {61, 95} => 4,
  {23, 67} => 9,
  {78, 75} => 5,
  {79, 17} => 9,
  {75, 0} => 9,
  {16, 73} => 9,
  {76, 2} => 8,
  {58, 84} => 5,
  {58, 33} => 9,
  {47, 44} => 9,
  {54, 31} => 1,
  {13, ...} => 5,
  {...} => 8,
  ...
}

Part 1

This seems like a text-book Dijkstra’s algorithm for shortest path.

So, let’s give it a shot.

defmodule Dijskstra do
  def find_safest_path(map, from, to),
    do: find_safest_path(map, [from | Map.keys(map) -- [from]], to, %{from => {0, nil}})

  defp find_safest_path(_, [destination | _], destination, p), do: p

  defp find_safest_path(map, [{j, i} = current_node | remaining], destination, path_weight) do
    neighbors = [{j - 1, i}, {j + 1, i}, {j, i - 1}, {j, i + 1}]

    path_weight =
      neighbors
      |> Enum.reduce(path_weight, fn neighbor, path_weight ->
        case map[neighbor] do
          nil ->
            path_weight

          cave_risk ->
            {curr_node_risk, _} = path_weight[current_node]
            risk = curr_node_risk + cave_risk

            Map.update(path_weight, neighbor, {risk, current_node}, fn {curr_nb_r, _} = curr ->
              if curr_nb_r < risk do
                curr
              else
                {risk, current_node}
              end
            end)
        end
      end)

    candidates = Map.keys(path_weight)

    next_node =
      (candidates -- candidates -- remaining)
      |> Enum.min_by(fn c -> elem(path_weight[c], 0) end)

    find_safest_path(map, [next_node | remaining -- [next_node]], destination, path_weight)
  end
end

# destination = Enum.max(cave_map |> Map.keys)
# res = Dijskstra.find_safest_path(cave_map, {0, 0}, destination)

# {risk, _} = res[destination]

# risk
{:module, Dijskstra, <<70, 79, 82, 49, 0, 0, 12, ...>>, {:find_safest_path, 4}}

The algorithm works, but it is still taking too long.

I read around and discovered that the key to solve this exercise (part 2 specially) is to have a performant priority queue implementation.

So let’s give it a shot.

Priority Queue

A priority queue is basically a queue that removes sorted by priority.

A straightforward implementation would be to use an array that on insertion checks for the correct position to store the element based on its priority.

Example:

Say we have a PriorityQueue with the following elements, where each element represents its priority:

[1, 2, 3, 6, 9, 11]

If we add the element 7 the new state of the list should be:

[1, 2, 3, 6, 7, 9, 11]

All other operations would be already supported by the list itself, for example, we can remove from this queue at the head, which will be the lower priority since the add operation guarantees this invariant.

defmodule PriorityQueue do
  def new, do: []

  def add([{_, h_priority} = head | tail], element, priority)
      when priority > h_priority do
    [head | add(tail, element, priority)]
  end

  def add(queue, element, priority), do: [{element, priority} | queue]
end

# testing
pq =
  PriorityQueue.new()
  |> PriorityQueue.add(:low, 10)
  |> PriorityQueue.add(:high, 1)
  |> PriorityQueue.add(:medium, 5)
  |> IO.inspect()
  |> Enum.map(&amp;elem(&amp;1, 0))

if pq != [:high, :medium, :low] do
  raise "Error in queue implementation"
end
[high: 1, medium: 5, low: 10]
nil
defmodule Dijskstra do
  def find_shortest_path(map, from, to),
    do:
      find_shortest_path(
        map,
        %{from => 0},
        PriorityQueue.add(PriorityQueue.new(), from, 0),
        to
      )

  # this is the exit condition: when we reach our target (to) we return the accumulated risk
  defp find_shortest_path(_, risks, [{to, _} | _], to), do: risks[to]

  defp find_shortest_path(map, risks, [{{j, i}, cave_accum_risk} | queue], to) do
    neighbors = [{j - 1, i}, {j + 1, i}, {j, i - 1}, {j, i + 1}]

    {risks, queue} =
      for neighbor <- neighbors,
          # checking boundaries
          map[neighbor] != nil,
          # the updated risk for this neighbor is whatever risk got us here + its risk
          updated_risk = cave_accum_risk + map[neighbor],
          # we only need to change our path if the updated risk is lower
          updated_risk < Map.get(risks, neighbor, :infinity),
          # and we will reduce into our current risks and queue
          # (we reduce into the queue to add the next nodes to visit, this is quasi-BFS-like I'd say)
          reduce: {risks, queue} do
        {risks, queue} ->
          risks = Map.put(risks, neighbor, updated_risk)
          queue = PriorityQueue.add(queue, neighbor, updated_risk)
          {risks, queue}
      end

    find_shortest_path(map, risks, queue, to)
  end
end

destination = Enum.max(cave_map |> Map.keys())
res = Dijskstra.find_shortest_path(cave_map, {0, 0}, destination)

# {risk, _} = res[destination]

# risk
745

Awesome! This new implementation ran in 73ms, versus the previos >45,000ms of the original implementation without a decent Priority Queue.

On to part 2…

Part 2

Section

For part two, the tricky part is just creating the new map with the new tiles.

The entire cave is actually five times larger in both dimensions than you thought; 
the area you originally scanned is just one tile in a 5x5 tile area that forms the 
full map. Your original map tile repeats to the right and downward; each time the 
tile repeats to the right or downward, all of its risk levels are 1 higher than the 
tile immediately up or left of it. However, risk levels above 9 wrap back around to 1.
defmodule Tilefier do
  def expand(map, tiles) do
    {h, w} = Enum.max(Map.keys(map))
    {h, w} = {h + 1, w + 1}

    tiles = tiles - 1

    map
    |> expand(tiles, {h, w}, {h, 0})
    |> expand(tiles, {(tiles + 1) * h, w}, {0, w})
  end

  defp expand(map, tiles, {h, w}, {delta_j, delta_i}) do
    for tile <- 1..tiles, reduce: map do
      map ->
        for j <- 0..(h - 1),
            i <- 0..(w - 1),
            reduce: map do
          map ->
            tile_j = tile * delta_j + j
            tile_i = tile * delta_i + i

            risk =
              1..tile
              |> Enum.reduce(map[{j, i}], fn
                _, n -> if n + 1 >= 10, do: 1, else: n + 1
              end)

            Map.put(map, {tile_j, tile_i}, risk)
        end
    end
  end
end

cave_map = Tilefier.expand(cave_map, 5)

{h, w} = Enum.max(Map.keys(cave_map))

for j <- 0..h do
  for i <- 0..w do
    IO.write(:stdio, cave_map[{j, i}])
  end

  IO.write("\n")
end
47629997898657899798384691325359499289248216291799617233632494719517999318266919539499988756996477495873111891976891181949571243646151139135932731281172834474351582162811142937712164151119986711758851698422291218791229215168235475726224124614384239228394558546269327392225314882327526222119782286996271953331232981233132627934658683733523572549534133941566965737143841333642599343863733322189339711738216444234319234424373814576979484463468365164524415267717684825495244475361145497484443329144182284
28786893891484775199991231734398399164218597667893981777927453999879897993993698988699628798818578863989791491259588621111234284541941127532961877891419288813856411198191811411471919971173981992968997419181251236169973222234539565215223864317298891252139992496752221921292252258212118228419211317911852129236234727118433334564167632633497542831991236324111351786333213231336336932322933952132242812296323134734583822954444567527874374451865394211234743522246289744432434244744714343314416324335392331
46818446865779889298259967169999995951422638595396758992579715928756743252928216986968795251299989425792955797688199131936117827111111616253374961641786911368182613986785436313932719717981636231119153681316681879921124214722893822222272736448517275289712247929372419789654742414382182819274734222126479242779298113223532583391493333338384755962838639182335813148352189176585352549329392138584533323758135388131922433464369441251444444949586617394974129344692425946329128769646365143141324969564443486
93367871596999293482363969571495752869181491769198451753969159796589798648719779816797949588775946781447898261711131459347417168251686397129251287121956286417126181769181975982188192781815169988615789255891937282224256145852827936279741823136239823216739752823729287129218619329921389292627119972689136691214839333536725696393814738185293424734193432784186393483139823132972143113249131373822118379124771232594144464783671741492584929631453584521454389529741459424193424318325422435124248493322948123
44127788652898769898176974399911583164988888463898692214819461883593993919879997999976694998617176615523889976391987191928718541112269427519999957491971332592157299461411412198111811118771511972828772663499118741219821213982965222337153862111116851218244361326831157252252321922292222988262218393988377451122985232193232419317633344826497322222796232935547243794226836336343213331333319937332941419948856223319634321434352142874445593751843333381734314665835481533794744745432444244442114844315252115
14398917589726977426119997889129178913858611942865379691599297298192698223673919262155814679655869922541912869183718853722111899123128912496972215397648171261131831921371933478412137326692578176697113365212397129482996483322291123423912351718332641875928237224294213248214458952324843771368928771822447632341823159311759443331223453412346282944375298613934833531532435932556916343595488247913988293355874345293426142286155444233456452345739315548631972414594464264354614366712745461659935812419931446
33528727597595916119577182884119156371286871689969399596727848739241329787476879694919138282483785784463983861861612722168829399522126748239798279117141161783895984135243189858798171512124939359489689557419497297272383327993141163323785934181938122825227289491619524635429196981928262323514146159179166852151831838349443811425227443489614529214923393633839151272163574653121719213937343462525726128127796326294294945155492253633855459172563132513441474494126238327468576423282132414845457363683723923
62919825181923428817857388449961889996684919318295678965188829595949429698161959488992817281399987887312193629213453992896849955117299111779512142931678917629993161615153171927216159911392839241119899842321473132456411391795116622831122288162325314278912873111427272626428213832726112241394135222191195343258424356752241281622773394223339927343642538912398422253838373753932494383722335241524633321221645436953546786335239273388441533444113845475364912341953336494948486414351549483344635263574443233
92967719389991977448926796998681488252853979677759467499861549798398853236695987962897756789889886991317882149111218855913781711979259936396418178886157851197265181941996434771619817391886789199199711242899325122232996612489282218136114741752928999726896221837629215211754588272192841299789121121182235391143623334311772359139332924722585286313911183791733294873132632286569938321395231189123223229334641225473444542288346124144313583369639742412229481284431598424374339767114943241634229123433433144
88449459879187948819529854991785979186867925399375494792662516562177898559952991779398797276391951879955156198129815992163196511289618129797813641148651581377362767328891966116311288141981838741216298116626721923192611327421762239172923181892475225976269248847387843991217722742239925219294985232731922773783213421372243853287334128313429291358633618737135995849895411232883385334113632131519634384213388489432453248335496439844523942453131246974472984824611695191652234399449644522474324262174549532
98459592955583278988999588415467278579897593887149492979317398998815189988582317829463857688169971781956161316669438919911169952657838968191861499825151318142841911992629119969342893157496879927118289216727242777154912112227116376894917921297251193626242925395212211373122117145391426851798113822939132783835388826512322333822748791512813231836221473735313641632332248423322825641253796281922493314124389494649993762343344493385981262392434294733258484642475274344335953443393675236481739213351442523
93999998719295832991995795815195139798555963894869729124776953859635969999761668148962779487979926581411111982131694311211681692621624181966617491597183123588716496174617111187277925917388159818113769252222219324271542232279271373273529217772851261829423469982751728572822229838813612849926192922487136333332143538265334338138248438463132888396237293153457119386283968393333194992472395113721313359824744444325464937644544924935954957424399941734831426456822149739417941444421511358341622483242446193
99599269829553548245975729983869969775911178369179799182927359739992749199997892299797921165361553321161137193166465935618683119497117188612228947128181129313846184111385121111891331181813227647266443227224821427757614672979422151822829972333915823929223142495729522249623222291244229292433875837755433833593253886872578318153326293393118344412693413133425351683163335173433331235533131354498694886654494461436499798368942926443731441422945552371452424453646279427444628454444234664424246551971599776
19288927469948689169925919785978269868184354673899127595795818335891911481526917187694759618691996882139913857115979127113612189618937197929546578491123861681692944691212259263712829871586172971211799324112496822618123822472329172914821813165768951223497279271315571232336137482393198269728318232281143522351793372923493358343128312593292427687916233451838138242668234344724859341421937183942934339225463346281448313451446945423942361431353879812734456294924935377934545583596145253214829415314544133
78213471938896477911195869387173596774527596769385992879999728597998779759877815846299796894319759378932458214991758812221697149828461788563861787149611398111183961811988186198892695731181791542186148914356932511286992333271825193957289967497289825172241922229417292219929721991371684229281265329725912546714362239711344438293621416839117851839193628335213333152831332113183211248279533139237643183612365782547334182245554931473252794122896294121473944632444426394244322429432235938164424134875429472
18925689162169999292896887689418719865343655812897288111997846969697152718937585987687278996794728392913679127327111131391799879152982197645476692391839922211895717171826382914869619879838911781583941312478123843822224241281198126319321875658771341294113332291682828293749312597172198194912289269415242358923495493333535239221923742143298676988245231522444331279393931485142361828321921512339137152635346913451651444464634133213485325431978719935634263355544238141414259625347293943213262344124826374
92192946948897888379259268971249636179848879392378778999297363598433719979637789782936589978734519981321315715991899948136137918235174728195998141348988911131847461954482118174889189314769118984562119243242682611291115924724812934628583921611925245919912224295857216559322928599129142587122919567322135435379372231222613583592314573969413272213635612112333531696832766143313961123125369823312167843324654648148334233372469461342568417152438332474672322344464271794387725442417223423647193442327895443
19575657599899687856999814495984289985123926629167668999618924823979279845795196797141996447199965882168676861191179896711192551619539119623413773127877911172913593418138195681621781825211755821117699327978797221228191782221366272164122173452488423898812228312461452924921679273289293632286693222871143818981833233921289333247738327523328456359953491992333942357256313513278138439131474339771433398225492919294434413239144435884943863443956746116451211344415346836742462438924954124258544188254441933
94589622718726999988538451779892339497148681741915128896716159287846938166111299917798245684735813251569173382983711119964956288191344151825979285212623991782726139895714927722231112881935679584692436267128449319482222117516739921245526293618139632373411289383724191682513883334222399214678169571354737823955142159333322862784113235663731472924174348452239149483521279362499444533341132578927168246584893416625326144443397389522434677484258313528545956334125159463238147351155564445224368913827935769
38924617947397498899998991867819769885664728313447547955914292192799877989822767995749863669139927984913572815841851991111911297892187199677583942455865816612531321381198819193387811685197477124113819512468392695296211222212231891329821178869415356697692772364243249221992121449892279621858823522492162357941371631732233332334291243193228997152646771871388347535435133211323255191338173296993463351327346815248274284334444344531235421433911826375788298249945864654624432243436621244928431711457446243
77378949769518838976919818113199696817468793779299813897255962888645713765125395499449864997757141238848915187162994918712192922421171792857981488131192491836617399975682487623641651155197511886825234995912629827311512982321313353228281396819259924221351294772841118679359873475276226621862299793634511612373193842262319343242446433939241792136113533246231588395222978146198458638733773297331181474562272348421495337342145435355754414135281324722464435734269941633318925721956974984488431844229258567
76879287783491949385978629319186733958722576957939519737771958937936989158195995256787819889789399378798139889451215149618973142129784416983368716814162184888216914814719126921611636789892199189141148981924199156232625172918425323189552719447982792527329599932712592582123713272274789191321129125225919213521126734373628312953643429166382155819381363843161114382361369323482438338589121243223123633612132463223784548473942316475453127749326692149247495427222549347247143459354944969123235433423474472
68317949639996733699679988899967324947939566289677129995486598988158972631961676639977791287661279127942815174111784471178119991117843515814167739178823111659761919926918374217278774118881239877238123815392628522289558228922111222895462692527884128993422276187212113712948532838988522999234198834923492641373963339166933913322233391657371363899523911453338729832322482315964394919963311134521994513451375248417444127714412443334441276848247491163412256444983194343359342617541512117442224563211562456
89976223954812938994537859934767714587593337117988237576647998696469559992414469881367178959156719999118733416592314911564896114587882569861444822819934868775811971757166111352557199247828916126782111122984452761342512267591722569899367197255593392114597988692218286827722246366821135893912723789322223319556387245362337861283367191147821836661441322561819971332939793883335747793224691412383489143333442166749835647344897239447821225893294777255243367292118244314181499444685881433571252349459125444
55999325999984115384998428984895891381967843118952949784981857722953294978728521252857991378768988466611143611119522649511953919591691249217895422916315189519296883316431518983963236396811248987919957772225472222163375162216412161271235132891653312742629162131799442754262919417434741792235919812116888333658333327448627332752327238234624391276442385373127324281155386537312152854585281334612192322799944476944443855973844386343834934573541238755349648423843539226649764842326396569639244572321343381
89999297997669699197315679998995671558759298749789556437727668743418759896817191778999969497849992969111131811877171121842678111911678266986131985189166754883877985452986191792821288911117151895111317122224292298828223295378922212278937719724219629127786599498819656319721281393239912222826291622242823333531331993933431648913332338914882183532173123889761151992176742183239241434112333393731273335393444464244211414454275912444344912599329464328423499187226211328785329434135254522344441484238444641
35931939743168443994851465934193979918993634293364689997798868979544561226945299868199691246999973924614214185427955411596257614521418112911474531447579111881997918165567233715631197921171235711118413572532529653816652261736872563252922312258564255868122299211812927667834482674221813228234682222952468364363176492776337284798367436313342336967536697923331132292313877894559378533292433934579333316357947547428751388744839581947854742445344717864771813444224331342498891566148964431354414568144442746
87419496969862256841617994997298491554685986699729496646178579764996787275779157986299898987881796679852151717197336795272811511831951266579619771183151775728968187511789838688126819731191919899281778196326282821844781638392262294216237768172188229426288683917929862289194979923792184221212191139288921743739393295589274941337331532734887928329933153739979412813197339121518113481329533232321224139913285484141431669138515244844264384599813943114426484118152392421844123262922459243164434343233524112
34919984959979193113796199946862998133978759723959619998858979578488779841752929758499991974949785394512119516118121422481721115797311924418986183416172111996918168959988195286313186951111218515189641562322162722923253359283222681842213552919729452728322211712927916119921639742429716222232962629175267343327383313436446139433379295332466312183156383943332282313812722113274185353182733334317373128637845443849442454755724154448131644357742329426749415444339342492383322438529646429384444542848423974
75279897384859499216278968792797115199999999457399349313387849865989234989832719822944394978786874448638191849596151132738917981381822621111111156841145142449895197619134519194382193315541518989798555974921295161726224384912819249293373222222226795225625355191621872124562121549321442665262919181966618513231627283733549512392135131448433333333781633673646621273298323567323265143255377637312129217772962434273839484465162341324624255954444444489274478475773238431943467843437625436648874842323132888
49948978861239183653892699669127352529829854279867979692583986969388498675246914712363992972919893585115918997234129476491371177123846363193196538197818171369419717149951978635712582347411318312191469622612911834523158751248228823495747421421764921892928247152182825116218974682369345852242942321257173372312294563426986235933993451685853253287513291313935826329393622732918579347145696335315343236828448342331567453719734614411456279696436439862431242414693743141473384312968145825671744642645434793
88818163685994269493797798999948723244936862999867988324734746885198963881796949879529668682778863529992927479611537151481881911115983435514797311197819943584585799621917499281715198163177979388997463111313858172264826259299212222619454662581842221892115469569681173212851139282621927428818149911857422242496928337593736131132333372156577369295333291322657167179228432396224139373213853992925112296853335351713944861484724224344448326768847131644431243376827828133954341733524148432496411313622331796
87512989295694729497997866849999798754968239872629293191914975779591847244998967995979894782655867389862319131671583151811897795111181986517934198373131421212518688161295835511917811618191589376697849197342124278269426292291881622229219762814521948424253232362979927231694662212892272921269148771895121845323538937153731331299273333132187392563215953536434347318113834271577332391338313237125988291623295643464914826484244231138444424329841367432616464754545842922494538268844341244942434823619931273
87822985195384976198668787124792781616639193339559829657745951718731289798175987449164199798991792149893319621649518721977989823581389272774121444166193176885616282984239181928619855127521181911281325191442173275162983218819193469249138388523255527721428799672739319534129213972196623863229212239243621255328438627319432992121457135124949963436663883253981178384142164523132418321773497433132334135473236643954973842154311323256824623515117454777499436419228949525327563424352943288451854424344524658
45546911185849939479799932652982781739912826216597376892829658998473899192699144228489688953694987385665712229695114158181114376319389284112393732761848791393176911958491121371125533959179916471519849677682333171622526929222548742149139522341484387295981241428712216951223248223664416128112758262195178879344428273363713133365985325124163345259549831619235253982332716233435933477552723922386937321628998145553938447482424447619643623527445636165194272134636419344382734454614458866383413349714843273
92778999989794653999282846999593736491963519485793925799689698689869533277498783779786991772182999411388911119181576411139395711161484751217462159681413681179171979197164438851989488189711288329311152249912222129268752224141682227259586232857326179252479228128218121827554996219159929182239943142226335112333323137986333525279333836169734396843728136358133923932923293866511732126113129334115425333744622344443424819744463638144494727184541795483924746924413414313431497762284323722423144522653644485
75693392787857668979997686964488333419889298533687986621588529978155367999949191986715968897576779998671441389896877918111879717559944452199131964479819773269963118926647811115121219782617991868788111978255249191798812922298182866115556321124217558192188437117422913775892222623232189372811297989922218936635121281992313331929397722666743223532866921329954822853312488691333373434329148392231819113332914774623239211342444213141883377785433464397713243116593396442359971244448454543125941334292122444
18379645476967739495648269929593921619993555544979618929768991916841212798358558339779285772858978952948175658717884151675937113161413272111466665518172913187911212795232381946966944188139688396918916315928676982899526278614822427252438322257777662928312429812232381634349215717715529924179941712912742613978719391163738972593353836354943336888877313942353192334349274545132682882663113528115282312385372418982141227484918361446494746515444799998842415346421344545138565624379399377422463922639342349
27499699193471949185979956232633897791719866947712799183978759587299992269999915789594747747977659953851171121458215129618116734374491881282197715882381129418986169831111337111112689161585885818876116496228223256932623172922784548551299239321882699349223152919727194222244822222379127269699692998722751733933436714373428313389565966231134143299371145133426312183821533335593333348123837171171311983386284414454782548453942449167617734224525431148225624453742329493264444661444445923494828228242219449
79116151119991121598476218199976646964888845388686989818873989989292872498917999192996963835998728938122726222111223261958732921118775717599995649979719192998419119131398351912811121311717494611983914923383733322233437216984313222988682861111675118182121311952122124241946212392223242282851572219412513449484443334454832719542433319979397222278622929323242216323323535215732341333435339396268332152362455159555444556594382165354442118141833338973313143435332743443464632684345244454644141737944326347
96438187519857919399367817228398939886294299698566975978788745675939967219177856174755198259613574791754929862196812141147892833941914199731531171967718618989985678614117832128896728586621936172468581286513197321792325225891394415212521184264228217882972919119678972522894323991783969773214728357969239762421843281343633691241552632363229537533932899318312122178918363391543411289417188432583946817134187353295439245474471235266374347433164864414391142942323328912947441265452239152829954369415792824
23667999239985923866897238769617264913956819488996361199891989988798825986142379189388592727969186913477811134119613497791834987172837512416792159911747221191219119981993619725348129149961383817129712458892224522172451881294519828394862352781326112285833221232122119211472183645923125117249492823182356991333563328356299231562193941597346389243722339694433234323322132258329475613423622835151393429346711244467443946731134267321415261845749135483344171554434543443324336943158672453473394626241453145
26319917582972927575872994113193899728647999883881969198362924519791969616159737195874538855579328933742112869318313868698311522421491183975811199499217121947313562181217172726184821698564996668143914485322397142942497971942263353251229418692221151132823215842467329232828383729593271967511777925412559643341825315351818215337446436233152971333226224393432695357843134393949483161438217862288813652366175445293642646292932644855754734426318244433733541454371646895424541415159427254932897339992476347
36823956499911945426834982689169989689978155882777998874886989923139799399192993997899489842875227874793416751112215653794519379127119179118926699388811998599719113424181141121311411891159195398633898581452786222332676481562148123822128122913771149992211961182122453529225223242252291226121641974491969256389733344378759267325923493323923312488225111332217229323356463133633435336331233723275218551217136749184445548986137843613451443413442359933622244332833143446757424474454644744234483438632966232
89749839289169485444869924999666896148774565129991567494838772219949198279171958354998392911149899579185194139127159655597113511177791725988567623111267851594988332115121938128216946511941312225191168129621524123826176661822462228881283619967873422237896261519944322623214923932715762215242333621227923173263523493728777293357333999239472117898453334891737262115543373432513414382687332635344473233813428437463451483988831446844411134158322891956444591284837322665448454362452549379844374645558434492
69796998911729368851153599877149314813946899141636868588274997848888592899137618274993875949599733977181711912283147996226461198825142592415791125274797969938511895999961391124872938511498615161184418829282212339425811733757221993625361352681223638581817114962291611117241223598314962251972627229552993139332344153692284486833211473647246379233474969292822517331272222835233461942517336218373833166311424144345526471339559794432258475835748134458517131393362844238333394634457215362844732948494427742
36485698389389592919169939959824468618177911957998974949121895679799997999289988182753899457698194984759671949149161312127114116193557972928812216811918515123291678181111811139119929386491156871921519586178215125127242323822522721466818313992332792212962623431278929222292224122113149751226798213262169728932623623835343493363383257792942411344381332317373454238913133331333523322425186233781932437327183914373473494645451447449436881315352245549244342848456534912424444244463443353629734489214354843
61771182391917926969987359746848576881748789989289712959779789796869337669151796387561996661938585997288229341212813717119846185795968799285989119139182316188189181797144877126281749867211777214969611839933145232392482822195729681617981139619122124129342729929129281825598823739285197832288832517172294114425634341359393321683179272819224172123323523145383113123139293661993484139621894339994362828331522553674545246141443279428138392133528323443463425649422423424131477211459524173291544111547393944
89593366387699995591295946834828466342498995847999345992237996972919891919669979152726377735262921999161447749871111661231615794593957745351911695811145611334811718312191212177118126383748884637313211127255885198222277234272681561416885646212271692225672244592282942321232328822923749485999574842432223836699621933338834538379267252799675732338271333678335561339315343234343993313485159611168595354333494771173214444994564948137836381178684344938244478944667244142645434545411442459626172227961646544
98999789785939888993981678457798761292732596262796966747592228746967223861881894487358451218764475111911189189614199911419278956881987231384361737381717785861333985717833497299291559846956232987558622212229129172521112252138916799219834249547284849282889697244419682894451831131266195716734319866973332333123128363222336324912781132194535165839595139399171835552179391556294224237721682784542197718444344423423947433344743512389224321564627694161624141128294666328141266731533534883279389565321882955
63999213899521539527939899724983368481294969688171912477885587998189789845382739888219989427998978437411132491163264163814191183519447959231517179928212358899669811929189195649384199932119153811918954852224351227437527492521229462155816134262828113932346991177192213129121675149521114322126492212916596333546233854863851363233157326692724537393922414345711228821332423123278625163222543323751332312761744465734496597496247434426843771383564841413352545682233993244353423438973627433365443486244342387
89785888148998917759719998991564149965159791872279791898527671498584917877561253297788659419618921989189699925911912886182111911267525117626181298338181291963878251969512898867236431889976152172913219129171113612212399729322212237863622873729231944929231217498936217162391997834754299118726328312432123128222472332341183143332334897473398483134215513134232851914732827341211894586531122983743942354323423933358344345229425444344591858441959424532662424534396212584393845232291569764223319485415346543
61199996878599774983829996898992299953999358938198887851279879196242979849998412369668798335189897187221111798961188519493111791911331116411146914921999896238198121735318195111952347177981944629191829833222281917229962151422281212244222752225712513211191734921923284642921622216345828819215573121293194433339212833117326253339232335533386333682362432221284513213439575313273332745693992132668423231421554444132394422843736444134344664449744479347354333239562432454168642438444385671411324377953434253
97179619569926925986997515998985627687992381389796274583661188547511943582199129166979446168395928911828172167113713619711862611919673879811349249181738569477229965862215469321123127718155727941613912293928327822482472182297372212178498192245135129284967158833117697332657143223423882926683815272412331413943893359358329331848332328951921335624623139517826994422871844376825433453499313779492638352344252415491446146943144295944343916213244673573424162893711553398295548793654456451142488151374946345
56732665724569997128181587667991941256967998996941942947949999682879952624459691683897769822591116926784377683567111823929269877811215236717811911715215315815111179398116373556171279491887193361222713789548879467822293413137198892232634782892212282632642692622228141922748466728238151299821447233382489165998157893331452424821991334374589391332339374375371373333925213385957783934926231193255834449359127611926891444256353593211244548569141244344148548648248444413632449616889414513734221436694555146
79649994786999889469996762278933484249655679928467172191399773396957716997691741519179559933895773988175111589711199157111787338914459535176678113957828321241188441716882711871285262128166114491688419928622269182221126822289844912556164628778922416893943235229955282799382298239637323927722551279952113973337129333223793339195512366727573988913352791415434633116639381149331934174843413883366238116322418444823144433481444121662347783868419912446381252654574422774149225144214528595452499447734922743
41229878811442419953919574598912189975965816798571968911856938998697961991861937964477897959879699195233198992255352116412168561912329118617692781968217912296714911971817211297214817558891816198171121634421911336646322752327967212343122972871389217932812331782512218292832231832592866991292721928223274553212244775743386343817832345423318398249132814392344289362332931394334294361397711231383213933438566432335588685449745492894345653442941935124392541345539147344314241544531547241882234249432414454
91189181589863888999992951158769999971959199879372389783667178268149781691949347549523199958866169831229129269197499911111316226987111118216121198148349189477828937925189271215145865163421116997727194233123137121851112222242733719822222932723221925945129158893914813629138232625697627453222711883821534423424823296222333335384482193333314383433213615623126991412592473124934373671873856433382299493264553453593431733344444649559321444442549454432472673423711252361358423514548478298496754449331151437
59899799939491997915599959997691891695419459441268978786685979788716889189498972528359749883779998886191181114151211812661116111871291271652156155237918989779618189982799129151918363946185199488111999721229222526232292377222722298231238276326726634812919188172929119381123126212947415729621159922211183233133363734331348833383331934234938743783774592312129928313122149223423732315852683173226113332229434424447484544245994449444214534514985489488561342323113942423325133453484342696379428433722444333
93748427895885973669159848998389985883399978326596844341971149781987912279999186819263719177598228851485953891699618477126195911949119699441118943761795545218225189219812338111129792137482128861933996259616491271172958823721612215122171155222915487281665632933629132192344922223181324859323997214411736172751238228316993483272332623328226633312659839277674314473124321345513333429243596143411832552284728386234933942711459438344373443933774442376194138878542558423543245662444453135461725452294366339
97788477288599796368519549998411981774797728889999998164369491924293341839349799335271989417791856391889958839961181747962165111952219288581883999111111927547151213531445294145181144638219152881296741299116994117229285817327622216332139969299411122222213865826232464255631525629225574932126399231785231122711522833139692843873332744324117131152223333332497693734357536674263673133668514323741134289634223382263394424171395498444385543522824226333444444351871484546864778537478424477962543485224539174
79191112832119869847897988776995858978916579993349588197978691891759117939159399886729993959798499228121222394322197195891819988711696918912768111445169921818971291286122814126141199783111416181951133923233341543321821691292119982271712912387922255627113292918231239723392523725221189422252729216224413434445265443293271231322119338282312349813336673822431312934234183441363483633229153336383132733552454555637655431438234243322144939342345192444778493354242314534529455247459474433126444749424384466
98244977997449799468992981418131929974537218928952262328479628943615691769916265681744994853997861471935518811855181157911319252924213118564832913916337343958173915472671287112737679285511596411897258214662992296629226812242136313532422967594312412744845416928412658378239822384878139662261752291836932577311331773133792335324742464353317861542352385595652713952376948934193349598924177337286331294714368842244288424481344643585357546442897265346349661676382416348715914521445161913528844839744231582
36699448918767495997288753793292539752895411481964791897875699116444893464871894635198192812293258974771155912987851611839986481431364186391652259217581291898671122755591457598291574621921392331436918588226612319896272294119759254247529741276336132869231291978223386661256861931268573213241344254712969933772342191738331522186136535863185238744724397134231218933449777236797214237968432435245536582317114488345321284944263329724764697429634985583541824534232914455188834781832534817954354635664769342
66999748874968999465696377569921399897998895124169979772872742411987111479395347867859733988196974267711185998517911157671748867113241191811991623527118188398385352219822258141645897896184419921718537882229611962812226878285997822435221292211273463822929941949646332193336925275691891729552113282964899333172217392333798939611893354633231332238457493313115215175744321444713638671291283166322439317591144428332841344481914172291446574434244334956851442422632628685543255582474978231239427743354142861
39969442858917969291937959741796985819478696438979284586317991299921286146997779127792882945659995624117155396912817131214816185281719692158971754918139569742811231113239725711888123881399315676111673522826641712392824232592729639282171326918286512924167185392234222434183682299923499241142678722278463393775282341393534361383174139328243712939762313527829641334533354529479331113451135225378983338957441488639345241464547249428524143935482314187342463893175244564446563158144222456224633648919444916
92395389594891979193978579818691885877679997292868179899719929499976979397977787877959187379888362861341649161591218121418968192971299698878111831397928191182113151118718141818889898816129848199947397245275127261232923252917921318231171998922294241813921229322426222982925292999191992723195921115841835638623837234313436312813242934228211913331535292413233143353733319313631311121211383421613222695294674973494834542454742392435314533932212444264631352434425446484442142474242223232249453272433371631
73475955346989858917577978383797811451985892696792159599297689394997849834549897999591938898977689788458616645719196912868818949481892256219691371781326161131879141511895194565191811161214991918879189956972775682121712397992915159291336732171248289243727224298125262291621567621292227232511212998129116718388679323282341811312626131244784328235939135483833531923637331273267873231333834362232311923122782949978143439345292242373724235589543934614124659494464213474844238437898434244494547334342213423
82385897787498858517458758669599169832498989389873998816683889859922958889896578855834552139959518849349691889851996962856986977161127194351919149198411992779499196113316999191768996694566324116162995145171299196211717396719718827223821546212125121952211388151121722442711121287911771567743522727311625628231121732282841782182993833493265732323623216332249926223283355382223239812288267885463383842273673934223284339395289329311494451437684343473432744335113733439446649333434192339937899657449495338
46886998144982949199946919757971688985385897318722871693496769849794196957798981941871956525899858695799711925519315121115712186818279919649691842983398271451787195181521716881919215298216763691196971681182213662142623222682329792938112175171295319441938256289821629263282799212132631932787471221718279229332477325373433379343181314922328628231642155214936739193273137439381132324374214389858233282938133144358843648454448145429242513343973934275326632514784121438424854149224343548532549196934439314
22882929116189819299949785185837814918158851469886555949734959914769531914971989394637992865829111173399313122729192131115189629694892512926996257199766615184516112587164212518219141574811397693122228441142423383121324222629173171591362313711736821187772629562722369827532362932125268592241871423333955225353449423243533373128428261247342482284793229888373167383347193864347314323637961335298253444416633646455153435464448423953937235845359339581433199948427849445821497545842543474817244631936455552
59599657187995847529899838674692898234417988716142949787598471779184476957879963979891771189884895176161176829811695863191194978571391934552819982725315189861958288129558716898117418191288229199591628727228793192271697421221518968241214566392119383642629197216939923166982791922852921239933121161273983833981421338271853233262917935232567741322149475373121832714113427719381213396313234114423227238419494419253244938296434437312814634367885243325158648423294382522453882149232441742434522553433834952
96696467997966698988454658872167981266127878787657799836886521983746121899727992617861969975489299691771757811817771919956576998327819237723898989876881194799763219485723291183811372897217118659131171288286892292888212116768711943892134883491919198799221581187432159683431229492248391832822976124228239939791331399932322787982215491324599451212121981133269229854326179454233151335941294393318723533934114181244241114343389819332651243561156232323219224437133196543728156534426244615231541442983464414
95581651829912553138124846965939998197359387153896729857286859369775898161282398945936493138779858111669276293112366424923595717614111921846149826491783196839796147188691927239341915614751424988196922277138731422347753513461682872522213295725193751289421794181725829971213834145212672586253519921713338824984253345886462457279398363332431683621486239153281529283693118232494525632378369736462113282444993519536445699757356838141947444354279473259734126439263139471422934351563674348947184757322439355
11556996798229915996793742348486498899359998814649783828621167988988929999779975284999869266893993722266711781933112611781485345959751991146111992575189493973227819919913111188118639511197137791411483337782289214422372289259645616186211225722211368629151418433892112112422229922974162221824881252259444889339132553348339136175672729732233683332247973126252954491322322353333113318527333293599236336155599144124366445944124728678383184334479444335818423736316551243343346444422442963844431461134744726
96977968114131279341562993886792952896498219793147493827895679963897974189289429919799785511593893791718817922524238145267311499781316391751932181425851493891678117491818529139153112181189662261491481282992813363534925637842251189242741286214329253696251491278922851292963124126422329229177337251259239311392447464513674895336229135385239732543136471736251238913396231317423523753343133128844836236134142241355857562478591644733124649634184365424758284736234912441734242853463486445424423995594734724
99868996993188479143818694997988876887379977196141667949669999818859998824395199912943944642993597151197911711429958125492971511819998799848118821725277815177111192996111993541621112315415575311461826221812282253116923651318262292111981195922993283638892628822221311722211465273222342652668642257293733292339336422713476242937331322219221613311439474991373993333242283332257638433345376377975336831484431344144753382458735314844243332133272442254158511248411444435339444336874954445648748818644794259
89929392876368598889483959119889778987892911599989964858787598871969956999987648918991399297863791739113141398747961999159416122199188919891312261119117596989861998217116711119875912911241131897481284122425241985817211126152723321129912191242337222122861719197211932822782222198612312235224291859239523353635219692832223726383443223112321235344833323397282121832214393389333321972342334633531296134163446474632171394333483749455433422343234645594443441839323294332541449144443218345344574464231724527
42912852998817399819559281962341838651785299991892889998179199695158893647955668791391255269989484875312396311992841192166139217345294976289631111291399111928121171626991475816677981241236637119159598642341742211395221327724132845631518739174222231241122213923228273711258692778819235234774822126161975345285332241633243883524395674262984128533334235223332413433938482236971388992134634588593323727218645639644335274435499463541678537319523964444534633444352454414959334718249911324574569961443483832
43977629976188994923929996794948927697751298727893115769198967662947267654878885283279972957657776195418873118729911513413111781515913871886231983891422687121917877315837876598999639438118316876888721652998422983112262452422289262612498299734219491253379823212898842694898761911174154922942798799983276311953319422337356353339137372351931184532151236448193432391995371591987212228526513315381981119438742216442153344846746444124848346214229564326234755921454341211648261219832333963762442649219222154
97663977554689923199788658588297796895958711979828265577859892969982195981749677293758951894999998391877418866579113421189976969931881791616982218193937668896191317119321619285178831486916291511111941298852997768122453229118717114299281272719332921414877991721242822143272139628994259712731262222215231996311887923356433122982822531139238382144313252598811283235393325438324173911536182384237333332634211742299813446754423319393364224134949325542436361992239434641443654943528412264729349534844444374
98939499279913986979979834987852794358737722568829919499492387989339649419691811936567697568836967361914151138112419718118194519896381546984883367993112151151349819144175152171292214767871867994717847212526224922352182922921562191749265719599447811422326226245192125528626328231332587898297811582895832363733513346329313313267321285137682161155892253343733735621323663973743934244369891931892269391694347484462445743142442437843239624879327226691336445484484673243477418485414535547191214291337141271
38879798313987625676977496949249499194699592286339399633478827658998877914699639784176225593715136834998181942419873678718851715135151121571161339744141174458993876911998812571174189528733661482624794511929215352198478982996282624626223268227244185525228556911498712211992368228529163984477259373581562213132646321958919311739373573733437933835529663633966712251982332211347933963127419558836148469267332424375743216912142284148468484454814494663177474417782336219344332245814417423852166994725957137
51164419289439184824727991686974832399999511269412467199889639798275741385881436398674776198691981496227552139154129593583811279718594341111162237152357821199174181938685249699254741978588721971219251733866324126523161469492238182961545222227334826346893221128529214979635171136585218969983218232136284497743523763427257151334929317265633333844593745791433223963132518174628224769632917119432934324739551885463487453836826244513142837674444495561485681254433417424362928573933587174312822154314543584
82259773129484631659898872287999197439436216493929799121188338614927999599928759193299911816662993299336188423159574276191998339811121854154732751413181123229944972513811161113986121431112292777311431144729953426168538721211944192223296526584386252429223433115518362492227222419723254222331388842254225583116453727964983232215521333431763769549736353133454422662947351333833352183436533344249995336533669422756483817519434332663244454287487165184746424456553377315846244494446329454764445535111644764
69291187779712199497145888699628382471962169199899899271948991959866126899883742678881612799488869897131229888182321151825699971173949358217327121191191138215911216197723791199485378999272381159997191824233199929343226293671118228415146932843823221221224932612232721883481221159648911138349226111821293534421113145433731478222933952625714395493433233233514372334383299459233226175912224945133722293231464553222425654484258933314416373682541651454434434462548344549431156134433728612333515624483331434
92825687739995957891763148482812199918459119959195795869927987138981244121369986513495299988315915771393679884111616891287425959392321112956122116121681697113819824919235523247119762451631119942612688241478199522272791239853616141343222316723322723279271822492193512134663435822187356274222115372379935258921163338381234196472725245433342783443383438138293351321462324577454693329846738533322648348114636913227444949234521758383635654445389455449454924931446243257343568856571443195784964443375945922
88996886889695779879676973131677498156973139699843991296799998649697992189959787479744568694155399979911799799171688198178718424278851926718424171195411231781111975171811329116189858185567971526641118112281181128279921928982953538996213782953528221652234289222218628292243122729196929667818263775222922339229223938113213919316464911732489316463933276334539133332973931335423383121713177892937488633313344133133414922432412142757512284359142757414438744564124444318414244653449423282428891314859974442
16985379843928119776928998916912251299538893719992897787798989319982989376944946919196889117988479692719648195413922188713911912712336231164991482111391889881919142119319148715515712121799122819958171382175921652413329982412212382344734227511259322241299199212125322142125982662682323281123392116928249328613276352443119352332349345584533862236143335231121132323643325323619377379343439223441322713935143972438746355422146344345145669564497334725444634223224343475443643472148848145454133455243382414
89822564714119189787983974988514791399793982789651342889484895689988616661884991976789938858597998889193367582522129189819418519962581241181419389176245399159591679119972777299511218789114996961811999121447869363323129192152962117369235229252149128735641126161278122118388831162232989122511717292211123255897147443423121326317322847134633136325123984675223727238923322949994227334319123362282831332223436691825855453423243742843395824574424743623419578633483834913443315111533844542123447339394244333
89189946628929799889667983899788429699654868864991538249822347526614599837955375216474931159299945979129115773913181199177819491189953171176597997511264935193345863772561194816648632758514226131115618123122688412429221128892151229116428228761811862237514621445697488367221592775974386962533724222672923423379952353133223991326233122753933987292297334862573255671859947833261388618549717364483533378313453448116346424433411243734423386414419831331844597368436678296115894437249972965182847559464448942
96987581998367847993389129872878619253799756938416366113886889694859798756489518941475927616881599811719869211947895811449123198398972136481186714952747722499799171596181986759162915258613872799261192282197132215891692255123421941918324759229782516385883351181128261729219786127312636972498381137221339321824332691271336623453215212943586133189362749699446229223937283132189723842374718351949224833244143293544371238244773456432632315469724429147385171155733133414839424329183495348582946215133594435
92899883897449929999478676199879577279557889592929943447545852591888163535645779286775544587379891511391199491855113111158978721198168838166899161313115455865696361299927464675688139788665569848191262241221151296622422226918983221927994927791127242422656697671747231113857578679924189977667195921237335233226231773353333712919433213811513881223835353376771878285834222496868978113529118877821613234844634433734288446444482312154432492262499233494646448788298939694533351797918922463122998893272434595
56497921597191429837788987797931924994398987947863896598189588657559285744971969798199489942959911556751813261821253194889919881814213511541919815897491761929169976866139685518217181921159115316112266786292437293236421599112199292532462265212192691851287213127118797724179662932829213226122642722337789731354831434753261122321131364357337632321371296239832423822981883528177314393132433723375383344889184246594254586437223343224247546844874343248231734194353493319299463928842541424354483448649445599
99559962238987877996292749274176292796772818998969983899165977984126494176199398722336179729919729791166117334919898811731385138528731381788392911917119491127618819523751528721141983344728183112183181227722844512191992284249624963984249289941312212822151223872992163486263983225219445583929422329429233883395562321211339535173517419535139115242332393326233498311327459737419433632155669413153343153134499441667343232244164628462852164624122635344341443734451942243856184852154474326677152426445426424
88969724177968974661987718495983336598115932879849987999822279237698998876979891969334917976565899599917183528817918577219882951619444761922614398195119811193338134871911998718191217144512818767691161112829463992812968832199316272155587213372541921622192221444924598212211982921232825562392987871227222393157411392317994321142738326669832448365213273321333255513561932332219313234393667341319898233833341426852241342811543225384943777194355947632438443244436662467214344332142434541477845242191934494
89291976956859469899554519969928477843591986499817397662478191921356684998628699671119853419694715779131218716796157191166562117113958895461219751192841877358921213246779511973971178222196452171582688124232982781726821227767322822416991657232186221395298846913232435788162218418228933321756328269379923534319389283793233887843393352711276834329733241631995712434354689927332952933914443286743937148113464542149139481434499895441446382238794543184435274211682354546579113844316314412555439785414825922
77584939858275484879783899783525617981972511919883699991688382987267789722919448264479818299879776788869514196938659598189491189463672819218362212199471111279949319837889183312155937558192931198188789997162521714976161929151229157478392132947332321158222238115142194899129442326614866921314221929989111827363282518727213126233126858941324315844343226933334922625321591123155343772597713242533213119122293847439362983832423734423796915243542695545433714444513373643261223426645488361882435364432422123
95968991892479299989983296737927297897955791588897195969993697996677953782836693841477971799558959951617911291358131119119431784813831891816681269991821617111471811778816489394771495258818281166916116272812231246924222122154289592494291292779237111293272822258292288992759141588251636992939227712722738392334235713533323326539161351531231388134822231438393336931339911386125269936274711314133882383384941344534682464443443764127246264234249924593334254941444714244112249723637114738582242524499349449
48687433948288179896954348798537897348139967917998999769894327888999748593498932127965613491389499395979854415939928191716545981964891845924117812811911187191543899911185961451914323817672451249151141618196552614113921282765619217591295613522892392212229821265491112229617256212543492878356235126225272921766372522413239387672132861231672463391341332333193237651222333172836732365451398946734623733638313287748363352434149878324397234278357441245244344421434876233344428394784347656241915784573484474
58731118919768911819495712436461511391359327312811728344743515821628111429377121641511199867117588516984222912187912292151682354757262241246143842392283945585462693273922253148823275262221197822869962719533312329812331326279346586837335235725495341339415669657371438413336425993438637333221893397117382164442343192344243738145769794844634683651645244152677176848254952444753611454974844433291441822849327555345421345535484925687181595574579476275635526378828795936516355586472256518595554431255293395
39897914912595886211112342845419411275329618778914192888138564111981918114114719199711739819929689974191812512361699732222345395652152238643172988912521399924967522219212922522582121182284192113179118521292362347271184333345641676326334975428319912363241113517863332132313363369323229339521322428122963231347345838229544445675278743744518653942112347435222462897444324342447447143433144163243353923317434245845694933165555678638985485562976415322345854633357391855543545355855825454425527435446413442
57929557976881991319361178271111116162533749616417869113681826139867854363139327197179816362311191536813166818799211242147228938222222727364485172752897122479293724197896547424143821828192747342221264792427792981132235325833914933333383847559628386391823358131483521891765853525493293921385845333237581353881319224334643694412514444449495866173949741293446924259463291287696463651431413249695644434869246499242133544575471552362555555151697728415185231455713536157431239871757476254252435171675554597
14478982617111314593474171682516863971292512871219562864171261817691819759821881927818151699886157892558919372822242561458528279362797418231362398232167397528237292871292186193299213892926271199726891366912148393335367256963938147381852934247341934327841863934831398231329721431132491313738221183791247712325941444647836717414925849296314535845214543895297414594241934243183254224351242484933229481235882343615255575894782852513695131742564695632565491631852561535214535429436533546235359514433159234
55238899763919871919287185411122694275199999574919713325921572994614114121981118111187715119728287726634991187412198212139829652223371538621111168512182443613268311572522523219222922229882622183939883774511229852321932324193176333448264973222227962329355472437942268363363432133313333199373329414199488562233196343214343521428744455937518433333817343146658354815337947447454324442444421148443152521159967334421745432545463253985556614862954444492845425776946592644815855856543555355553225955426363226
25419128691837188537221118991231289124969722153976481712611318319213719334784121373266925781766971133652123971294829964833222911234239123517183326418759282372242942132482144589523248437713689287718224476323418231593117594433312234534123462829443752986139348335315324359325569163435954882479139882933558743452934261422861554442334564523457393155486319724145944642643546143667127454616599358124199314466985456314537253397266555344567563456841426659742183525615575375465725477823856572761146923521142557
44639838618616127221688293995221267482397982791171411617838959841352431898587981715121249393594896895574194972972723833279931411633237859341819381228252272894916195246354291969819282623235141461591791668521518318383494438114252274434896145292149233936338391512721635746531217192139373434625257261281277963262942949451554922536338554591725631325134414744941262383274685764232821324148454573636837239238817437315315156266513364744966561283674243624552585515237349438579687534393243525956568474794834134
73121936292134539928968499551172991117795121429316789176299931616151531719272161599113928392411198998423214731324564113917951166228311222881623253142789128731114272726264282138327261122413941352221911953432584243567522412816227733942233399273436425389123984222538383737539324943837223352415246333212216454369535467863352392733884415334441138454753649123419533364949484864143515494833446352635744432332756547164657897446341384499552644555224956586475123452164447515159597525462651594455746374685554344
13178821491112188559137817119792599363964181788861578511972651819419964347716198173918867891991997112428993251222329966124892822181361147417529289997268962218376292152117545882721928412997891211211822353911436233343117723591393329247225852863139111837917332948731326322865699383213952311891232232293346412254734445422883461241443135833696397424122294812844315984243743397671149432416342291234334331445752336584555653399457235255424694471741853523331592395542619535485441878225154352745331234544544255
99551561981298159921631965112896181297978136411486515813773627673288919661163112881419818387412162981166267219231926113274217622391729231818924752259762692488473878439912177227422399252192949852327319227737832134213722438532873341283134292913586336187371359958498954112328833853341136321315196343842133884894324532483354964398445239424531312469744729848246116951916522343994496445224743242621745495324499591543564359446517541955634153564242357185583195935722716212763345411551755633585435373285651643
19561613166694389199111699526578389681918614998251513181428419119926291199693428931574968799271182892167272427771549121122271163768949179212972511936262429253952122113731221171453914268517981138229391327838353888265123223338227487915128132318362214737353136416323322484233228256412537962819224933141243894946499937623433444933859812623924342947332584846424752743443359534433936752364817392133514425235491515751114873454455514496192373413545315844369595753586385455446164554414786347592841324462553634
14111119821316943112116816926216241819666174915971831235887164961746171111872779259173881598181137692522222193242715422322792713732735292177728512618294234699827517285728222298388136128499261929224871363333321435382653343381382484384631328883962372931534571193862839683933331949924723951137213133598247444443254649376445449249359549574243999417348314264568221497394179414444215113583416224832424461935855555436575148755655135146165168535411152845942537567933251841528152555532622469452733594353557214
11611371931664659356186831194971171886122289471281811293138461841113851211118913311818132276472664432272248214277576146729794221518228299723339158239292231424957295222496232222912442292924338758377554338335932538868725783181533262933931183444126934131334253516831633351734333312355331313544986948866544944614364997983689429264437314414229455523714524244536462794274446284544442346644242465519715997765515572547511819479153137554842552533156663482563535564757381538555739565555345775535357662182611887
21399138571159791271136121896189371979295465784911238616816929446912122592637128298715861729712117993241124968226181238224723291729148218131657689512234972792713155712323361374823931982697283182322811435223517933729234933583431283125932924276879162334518381382426682343447248593414219371839429343392254633462814483134514469454239423614313538798127344562949249353779345455835961452532148294153145441336574457392559424562557156534153472542464981923845567315135146488145656694617256364325931526425655244
89324582149917588122216971498284617885638617871496113981111839618119881861988926957311817915421861489143569325112869923332718251939572899674972898251722419222294172922199297219913716842292812653297259125467143622397113444382936214168391178518391936283352133331528313321131832112482795331392376431836123657825473341822455549314732527941228962941214739446324444263942443224294322359381644241348754294723476893658445293356665142584363815233917315232584155743555537415355433531543346149275535245986531583
29136791273271111313917998791529821976454766923918399222118957171718263829148696198798389117815839413124781238438222242412811981263193218756587713412941133322916828282937493125971721981949122892694152423589234954933335352392219237421432986769882452315224443312793939314851423618283219215123391371526353469134516514444646341332134853254319787199356342633555442381414142596253472939432132623441248263746457124562762555575745244324596436542189821146745374466655349252525361736458314154324373455235937485
13213157159918999481361379182351747281959981413489889111318474619544821181748891893147691189845621192432426826112911159247248129346285839216119252459199122242958572165593229285991291425871229195673221354353793722312226135835923145739694132722136356121123335316968327661433139611231253698233121678433246546481483342333724694613425684171524383324746723223444642717943877254424172234236471934423278954435765759259445344483571572453679528263549443585783433455575382815498836553528334534758214553438916554
21686768611911798967111925516195391196234137731278779111729135934181381956816217818252117558211176993279787972212281917822213662721641221734524884238988122283124614529249216792732892936322866932228711438189818332339212893332477383275233284563599534919923339423572563135132781384391314743397714333982254929192944344132391444358849438634439567461164512113444153468367424624389249541242585441882544419336513121315545524341255546995154974554167857227562322455526457947853573549135165235369655299365552144
15691733829837111199649562881913441518259792852126239917827261398957149277222311128819356795846924362671284493194822221175167399212455262936181396323734112893837241916825138833342223992146781695713547378239551421593333228627841132356637314729241743484522391494835212793624994445333411325789271682465848934166253261444433973895224346774842583135285459563341251594632381473511555644452243689138279357695914527736437255554418491633545788595369424639656167445236261574349258462266675556335479124938146871
49135728158418519911119112978921871996775839424558658166125313213811988191933878116851974771241138195124683926952962112222122318913298211788694153566976927723642432492219921214498922796218588235224921623579413716317322333323342912431932289971526467718713883475354351332113232551913381732969934633513273468152482742843344443445312354214339118263757882982499458646546244322434366212449284317114574462438457926359385395445555455642346532544122937486899319351156975765735543354547732355139542822568557354
88489151871629949187121929224211717928579814881311924918366173999756824876236416511551975118868252349959126298273115129823213133532282813968192599242213512947728411186793598734752762266218622997936345116123731938422623193432424464339392417921361135332462315883952229781461984586387337732973311814745622723484214953373421454353557544141352813247224644357342699416333189257219569749844884318442292585673383459532516448453256546466865525246392435833575546845371152744429136832167185195599542955331369678
87981398894512151496189731421297844169833687168141621848882169148147191269216116367898921991891411489819241991562326251729184253231895527194479827925273295999327125925821237132722747891913211291252259192135211267343736283129536434291663821558193813638431611143823613693234824383385891212432231236336121324632237845484739423164754531277493266921492474954272225493472471434593549449691232354334234744723243574334895659584153427586564238851437713251358516538333651458358254561465155171234346544534585583
79428151741117844711781199911178435158141677391788231116597619199269183742172787741188812398772381238153926285222895582289221112228954626925278841289934222761872121137129485328389885229992341988349234926413739633391669339133222333916573713638995239114533387298323224823159643949199633111345219945134513752484174441277144124433344412768482474911634122564449831943433593426175415121174422245632115624562486359528555238825523554445552387959358512274523367555194215454461453728652623228553335674322673567
91187334165923149115648961145878825698614448228199348687758119717571661113525571992478289161267821111229844527613425122675917225698993671972555933921145979886922182868277222463668211358939127237893222233195563872453623378612833671911478218366614413225618199713329397938833357477932246914123834891433334421667498356473448972394478212258932947772552433672921182443141814994446858814335712523494591254444553277851946758455918341558932336914315888366354478313229355425292511555796992544682363451561236555
66111436111195226495119539195916912492178954229163151895192968833164315189839632363968112489879199577722254722221633751622164121612712351328916533127426291621317994427542629194174347417922359198121168883336583333274486273327523272382346243912764423853731273242811553865373121528545852813346121923227999444769444438559738443863438349345735412387553496484238435392266497648423263965696392445723213433811155587155554966184955497454945145684652349866451759534954641337751875953437417671741355683432454492
91111318118771711218426781119116782669861319851891667548838779854529861917928212889111171518951113171222242922988282232953789222122789377197242196291277865994988196563197212813932399122228262916222428233335313319939334316489133323389148821835321731238897611519921767421832392414341123333937312733353934444642442114144542759124443449125993294643284234991872262113287853294341352545223444414842384446414555575355322525565386123555455123611431575439534511298337322439896431545246365633455552595349555752
46142141854279554115962576145214181129114745314475791118819979181655672337156311979211712357111184135725325296538166522617368725632529223122585642558681222992118129276678344826742218132282346822229524683643631764927763372847983674363133423369675366979233311322923138778945593785332924339345793333163579475474287513887448395819478547424453447178647718134442243313424988915661489644313544145681444427468158658539862499855941692158965853556455828975882924555335442453519912677259175542465525679255553857
98521517171973367952728115118319512665796197711831517757289681875117898386881268197311919198992817781963262828218447816383922622942162377681721882294262886839179298622891949799237921842212121911392889217437393932955892749413373315327348879283299331537399794128131973391215181134813295332323212241399132854841414316691385152448442643845998139431144264841181523924218441232629224592431644343432335241124396595252542771249626355955375495611924154225537595229263413532955234373133561354275545454344635223
45121195161181214224817211157973119244189861834161721119969181689599881952863131869511112185151896415623221627229232533592832226818422135529197294527283222117129279161199216397424297162222329626291752673433273833134364461394333792953324663121831563839433322823138127221132741853531827333343173731286378454438494424547557241544481316443577423294267494154443393424923833224385296464293844445428484239748956554951553565866835265559242755468853431537851526555441453513494433549631757531495555653959534185
86381918495961511327389179813818226211111111568411451424498951976191345191943821933155415189897985559749212951617262243849128192492933732222222267952256253551916218721245621215493214426652629191819666185132316272837335495123921351314484333333337816336736466212732983235673232651432553776373121292177729624342738394844651623413246242559544444444892744784757732384319434678434376254366488748423231328883173545384941595576273452435735366165555555591385589586884349542154578954548736547759985953434243999
51159189972341294764913711771238463631931965381978181713694197171499519786357125823474113183121914696226129118345231587512482288234957474214217649218929282471521828251162189746823693458522429423212571733723122945634269862359339934516858532532875132913139358263293936227329185793471456963353153432368284483423315674537197346144114562796964364398624312424146937431414733843129681458256717446426454347939559453442678564821845725522567381717547541973542353525714854252584495423179256936782855753756545814
99929274796115371514818819111159834355147973111978199435845857996219174992817151981631779793889974631113138581722648262592992122226194546625818422218921154695696811732128511392826219274288181499118574222424969283375937361311323333721565773692953332913226571671792284323962241393732138539929251122968533353517139448614847242243444483267688471316444312433768278281339543417335241484324964113136223317964446462824155972595835335455559437879958242755542354487938939244165452844635259543517522424733442817
98623191316715831518118977951111819865179341983731314212125186881612958355119178116181915893766978491973421242782694262922918816222292197628145219484242532323629799272316946622128922729212691487718951218453235389371537313312992733331321873925632159535364343473181138342715773323913383132371259882916232956434649148264842442311384444243298413674326164647545458429224945382688443412449424348236199312734316754575125937595355342249555535431952478543727575865656953133515649379955452355153545934721142384
98933196216495187219779898235813892727741214441661931768856162829842391819286198551275211819112813251914421732751629832188191934692491383885232555277214287996727393195341292139721966238632292122392436212553284386273194329921214571351249499634366638832539811783841421645231324183217734974331323341354732366439549738421543113232568246235151174547774994364192289495253275634243529432884518544243445246584347754165184953265422434367935734626228565888511547521339151636438674535463154399562965535455635769
56657122296951141581811143763193892841123937327618487913931769119584911213711255339591799164715198496776823331716225269292225487421491395223414843872959812414287122169512232482236644161281127582621951788793444282733637131333659853251241633452595498316192352539823327162334359334775527239223869373216289981455539384474824244476196436235274456361651942721346364193443827344546144588663834133497148432739119256664149558593535558721754734638556747276215383245747521455493845565725569977494524451825954384
13889111191815764111393957111614847512174621596814136811791719791971644388519894881897112883293111522499122221292687522241416822272595862328573261792524792281282181218275549962191599291822399431422263351123333231379863335252793338361697343968437281363581339239329232938665117321261131293341154253337446223444434248197444636381444947271845417954839247469244134143134314977622843237224231445226536444855733455554535921855574749255515838295652816594135857135524525424542518873395434833534255633764755596
86714413898968779181118797175599444521991319644798197732699631189266478111151212197826179918687881119782552491917988129222981828661155563211242175581921884371174229137758922226232321893728112979899222189366351212819923133319293977226667432235328669213299548228533124886913333734343291483922318191133329147746232392113424442131418833777854334643977132431165933964423599712444484545431259413342921224443125885734341322453555324252994488896544575418824354227614417553461182355559565654236152445313233555
29481756587178841516759371131614132721114666655181729131879112127952323819469669441881396883969189163159286769828995262786148224272524383222577776629283124298122323816343492157177155299241799417129127426139787193911637389725933538363549433368888773139423531923343492745451326828826631135281152823123853724189821412274849183614464947465154447999988424153464213445451385656243793993774224639226393423496483529193252338595129472557515857626555811119953526457532455656249676735481411488533574133741453451
38511711214582151296181167343744918812821977158823811294189861698311113371111126891615858858188761164962282232569326231729227845485512992393218826993492231529197271942222448222223791272696996929987227517339334367143734283133895659662311341432993711451334263121838215333355933333481238371711713119833862844144547825484539424491676177342245254311482256244537423294932644446614444459234948282282422194497395525565893659564153551278728845335636542259336735564853431514375555772555556134515939339353321551
81227262221112232619587329211187757175999956499797191929984191191313983519128111213117174946119839149233837333222334372169843132229886828611116751181821213119521221242419462123922232422828515722194125134494844433344548327195424333199793972222786229293232422163233235352157323413334353393962683321523624551595554445565943821653544421181418333389733131434353327434434646326843452444546441417379443263473566261666555667615493276465553229252944449184424254546443854554575743795456355565755252848155437458
17549298621968121411478928339419141997315311719677186189899856786141178321288967285866219361724685812865131973217923252258913944152125211842642282178829729191196789725228943239917839697732147283579692397624218432813436336912415526323632295375339328993183121221789183633915434112894171884325839468171341873532954392454744712352663743474331648644143911429423233289129474412654522391528299543694157928245298464316541356585582346377485458544275975525412253153434439123158552376563341263931165471526813935
34778111341196134977918349871728375124167921599117472211912191199819936197253481291499613838171297124588922245221724518812945198283948623527813261122858332212321221192114721836459231251172494928231823569913335633283562992315621939415973463892437223396944332343233221322583294756134236228351513934293467112444674439467311342673214152618457491354833441715544345434433243369431586724534733946262414531457822355578554157842245378432526372956851246594455282665545654554435447154269783564584415737352564256
37421128693183138686983115224214911839758111994992171219473135621812171727261848216985649966681439144853223971429424979719422633532512294186922211511328232158424673292328283837295932719675117779254125596433418253153518182153374464362331529713332262243934326953578431343939494831614382178622888136523661754452936426462929326448557547344263182444337335414543716468954245414151594272549328973399924763477286556314753757313143755966865845537429355544844652565482757916535652526261538365143918441113587458
47934167511122156537945193791271191791189266993888119985997191134241811411213114118911591953986338985814527862223326764815621481238221281229137711499922119611821224535292252232422522912261216419744919692563897333443787592673259234933239233124882251113322172293233564631336334353363312337232752185512171367491844455489861378436134514434134423599336222443328331434467574244744546447442344834386329662328247851295556659197248954724562554524553461144733355443944254557868535585565755855345594549743177343
91851941391271596555971135111777917259885676231112678515949883321151219381282169465119413122251911681296215241238261766618224622288812836199678734222378962615199443226232149239327157622152423336212279231732635234937287772933573339992394721178984533348917372621155433734325134143826873326353444732338134284374634514839888314468444111341583228919564445912848373226654484543624525493798443746455584344924539548574562594199942557955522245269433912167555612395948433776559565473563651481955485756669545513
71817119122831479962264611988251425924157911252747979699385118959999613911248729385114986151611844188292822123394258117337572219936253613526812236385818171149622916111172412235983149622519726272295529931393323441536922844868332114736472463792334749692928225173312722228352334619425173362183738331663114241443455264713395597944322584758357481344585171313933628442383333946344572153628447329484944277422535255456637582441661815543369586946859245569628242414473955349444415745568326473955843159515538853
47596719491491613121271141161935579729288122168119185151232916781811118111391199293864911568719215195861782151251272423238225227214668183139923327922129626234312789292222922241221131497512267982132621697289326236238353434933633832577929424113443813323173734542389131333313335233224251862337819324373271839143734734946454514474494368813153522455492443428484565349124244442444634433536297344892143548438294125484584515756562558551547992426463356651355453959567645123535555355574554464731845591325465954
72882293412128137171198461857959687992859891191391823161881891817971448771262817498672117772149696118399331452323924828221957296816179811396191221241293427299291292818255988237392851978322888325171722941144256343413593933216831792728192241721233235231453831131231392936619934841396218943399943628283315225536745452461414432794281383921335283234434634256494224234241314772114595241732915441115473939442633664785656357252554381539249413244639434554574536751533534535242588322561635284312655222658414155
91614477498711116612316157945939577453519116958111456113348117183121912121771181263837488846373132111272558851982222772342726815614168856462122716922256722445922829423212323288229237494859995748424322238366996219333388345383792672527996757323382713336783355613393153432343439933134851596111685953543334947711732144449945649481378363811786843449382444789446672441426454345454114424596261722279616465444515882284325555115675159248947492289795455149355589155778355253756545656522553561737283338172757655
19111891896141999114192789568819872313843617373817177858613339857178334972992915598469562329875586222122291291725211122521389167992198342495472848492828896972444196828944518311312661957167343198669733323331231283632223363249127811321945351658395951393991718355521793915562942242377216827845421977184443444234239474333447435123892243215646276941616241411282946663281412667315335348832793895653218829555455534534158544455854623491335432675738715272735252239315777439252377842644645994381491676432993166
74111324911632641638141911835194479592315171799282123588996698119291891956493841999321191538119189548522243512274375274925212294621558161342628281139323469911771922131291216751495211143221264922129165963335462338548638513632331573266927245373939224143457112288213324231232786251632225433237513323127617444657344965974962474344268437713835648414133525456822339932443534234389736274333654434862443423872855576845517618517358545537954882494675952524463656793344114355464534549184738544476554597355453498
91896999259119128861821119112675251176261812983381812919638782519695128988672364318899761521729132191291711136122123997293222122378636228737292319449292312174989362171623919978347542991187263283124321231282224723323411831433323348974733984831342155131342328519147328273412118945865311229837439423543234239333583443452294254443445918584419594245326624245343962125843938452322915697642233194854153465434534144469455456331536555455612969552161535643773535645417323695414956343312671875334421596526457654
72211117989611885194931117919113311164111469149219998962381981217353181951119523471779819446291918298332222819172299621514222812122442227522257125132111917349219232846429216222163458288192155731212931944333392128331173262533392323355333863336823624322212845132134395753132733327456939921326684232314215544441323944228437364441343446644497444793473543332395624324541686424384443856714113243779534342532665555243415533954847555245455775551855581458465444341673543565279753549555496782522435488164545364
18281721671137136197118626119196738798113492491817385694772299658622154693211231277181557279416139122939283278224824721822973722121784981922451351292849671588331176973326571432234238829266838152724123314139438933593583293318483323289519213356246231395178269944228718443768254334534993137794926383523442524154914461469431442959443439162132446735734241628937115533982955487936544564511424881513749463455363526512557257154255316155454127324355784684535273914822664419316659814765567562253599262485157456
67843776835671118239292698778112152367178119117152153158151111793981163735561712794918871933612227137895488794678222934131371988922326347828922122826326426926222281419227484667282381512998214472333824891659981578933314524248219913343745893913323393743753713733339252133859577839349262311932558344493591276119268914442563535932112445485691412443441485486482484444136324496168894145137342214366945551461238722137912555367464614322355659671252355455259659759359555524743551727991525624845332547715666257
81751115897111991571117873389144595351766781139578283212411884417168827118712852621281661144916884199286222691822211268222898449125561646287789224168939432352299552827993822982396373239277225512799521139733371293332237933391955123667275739889133527914154346331166393811493319341748434138833662381163224184448231444334814441216623477838684199124463812526545744227741492251442145285954524994477349227433529555934255544592555232773458894979521123557492363765685533885251336255325639616563511558845133854
52331989922553521164121685619123291186176927819682179122967149119718172112972148175588918161981711216344219113366463227523279672123431229728713892179328123317825122182928322318325928669912927219282232745532122447757433863438178323454233183982491328143923442893623329313943342943613977112313832139334385664323355886854497454928943456534429419351243925413455391473443142415445315472418822342494324144549677543446699796551856513915456764553152146235413652456641258455425352655642658352993345351543525565
12291292691974999111113162269871111182161211981483491894778289379251892712151458651634211169977271942331231371218511122222427337198222229327232219259451291588939148136291382326256976274532227118838215344234248232962223333353844821933333143834332136156231269914125924731249343736718738564333822994932645534535934317333444446495593214444425494544324726734237112523613584235145484782984967544493311514375664564614542844455555751661432555553651565543583784534822363472469534625659589319517865551442262548
61911811141512118126611161118712912716521561552379189897796181899827991291519183639461851994881119997212292225262322923772227222982312382763267266348129191881729291193811231262129474157296211599222111832331333637343313488333833319342349387437837745923121299283131221492234237323158526831732261133322294344244474845442459944494442145345149854894885613423231139424233251334534843426963794284337224443331545535558595655356115551555325645625196591599672453434224153534436244564595453717481539544833555444
14859538916996184771261959119491196994411189437617955452182251892198123381111297921374821288619339962596164912711729588237216122151221711552229154872816656329336291321923449222231813248593239972144117361727512382283169934832723326233282266333126598392776743144731243213455133334292435961434118325522847283862349339427114594383443734439337744423761941388785425584235432456624444531354617254522943663395839497345144153822561549455484554144885553487215249989653669534654356773555564246572836563315477441
18899588399611817479621651119522192885818839991111119275471512135314452941451811446382191528812967412991169941172292858173276222163321399692994111222222138658262324642556315256292255749321263992317852311227115228331396928438733327443241171311522233333324976937343575366742636731336685143237411342896342233822633944241713954984443855435228242263334444443518714845468647785374784244779625434852245391745334493374415535282416519555496654633935337444555555462982595657975889648589535588173654596335641285
81212223943221971958918199887116969189127681114451699218189712912861228141261411997831114161819511339232333415433218216912921199822717129123879222556271132929182312397233925237252211894222527292162244134344452654432932712313221193382823123498133366738224313129342341834413634836332291533363831327335524545556376554314382342433221449393423451924447784933542423145345294552474594744331264447494243844663565666748766542549345354433255141453456213555889514465353425645631566358561585544237555851535495577
19355188118551811579113192529242131185648329139163373439581739154726712871127376792855115964118972582146629922966292268122421363135324229675943124127448454169284126583782398223848781396622617522918369325773113317731337923353247424643533178615423523855956527139523769489341933495989241773372863312947143688422442884244813446435853575464428972653463496616763824163487159145214451619135288448397442315825479953355399535592455754696468657553918376457451772787493527459826125632556272124639955941855342693
47711559129878516118399864814313641863916522592175812918986711227555914575982915746219213923314369185882266123198962722941197592542475297412763361328692312919782233866612568619312685732132413442547129699337723421917383315221861365358631852387447243971342312189334497772367972142379684324352455365823171144883453212849442633297247646974296349855835418245342329144551888347818325348179543546356647693428225599456432395155374431835875718531745196694652935645343125566299945892943645928165465746775871453
77111859985179111576717488671132411918119916235271181883983853522198222581416458978961844199217185378822296119628122268782859978224352212922112734638229299419496463321933369252756918917295521132829648993331722173923337989396118933546332313322384574933131152151757443214447136386712912831663224393175911444283328413444819141722914465744342443349568514424226326286855432555824749782312394277433541428612255539443952455592125283312557685545355445167962553533743739796654366693585189342341538854465253972
41171553969128171312148161852817196921589717549181395697428112311132397257118881238813993156761116735228266417123928242325927296392821713269182865129241671853922342224341836822999234992411426787222784633937752823413935343613831741393282437129397623135278296413345333545294793311134511352253789833389574414886393452414645472494285241439354823141873424638931752445644465631581442224562246336489194449168552599741456352575658351539635254146593425298453574914286355675557674269255333567335744759121555127
13416491615912181214189681929712996988781118313979281911821131511187181418188898988161298481999473972452751272612329232529179213182311719989222942418139212293224262229829252929991919927231959211158418356386238372343134363128132429342282119133315352924132331433537333193136313111212113834216132226952946749734948345424547423924353145339322124442646313524344254464844421424742422232322494532724333716315785184515945653565853413546425644143323555375742463545536557595553253585353334343351564383544482742
84586166457191969128688189494818922562196913717813261611318791415118951945651918111612149919188791899569727756821217123979929151592913367321712482892437272242981252622916215676212922272325112129981291167183886793232823418113126261312447843282359391354838335319236373312732678732313338343622323119231227829499781434393452922423737242355895439346141246594944642134748442384378984342444945473343422134233893151189254541456313353484835346691654145725235761515575324585955349548919545355515658445453324534
93496918898519969628569869771611271943519191491984119927794991961133169991917689966945663241161629951451712991962117173967197188272238215462121251219522113881511217224427111212879117715677435227273116256282311217322828417821829938334932657323236232163322499262232833553822232398122882678854633838422736739342232843393952893293114944514376843434734327443351137334394466493334341923399378996574494953384784145334395441416391431422515562548795454584543855446224844541557751444545213441148911768551516449
57997119255193151211157121868182799196496918429833982714517871951815217168819192152982167636911969716811822136621426232226823297929381121751712953194419382562898216292632827992121326319327874712217182792293324773253734333793431813149223286282316421552149367391932731374393811323243742143898582332829381331443588436484544481454292425133439739342753266325147841214384248541492243435485325491969344393149244255469954759565559256531353624454184145386437743625895232549535965251335454659643651217145541425
33993131227291921311151896296948925129269962571997666151845161125871642125182191415748113976931222284411424233831213242226291731715913623137117368211877726295627223698275323629321252685922418714233339552253534494232435333731284282612473424822847932298883731673833471938643473143236379613352982534444166336464551534354644484239539372358453593395814331999484278494458214975458425434748172446319364555527744757566264546575559534164148346956461441692544211159538951556932518656953654585928355742147566663
61611768298116958631911949785713919345528199827253151898619582881295587168981174181912882291995916287272287931922716974212215189682412145663921193836426291972169399231669827919228529212399331211612739838339814213382718532332629179352325677413221494753731218327141134277193812133963132341144232272384194944192532449382964344373128146343678852433251586484232943825224538821492324417424345225534338349521515521364355149317545548423925745478996354436269759534315493633564993251343552853545633664544945163
17717578118177719199565769983278192377238989898768811947997632194857232911838113728972171186591311712882868922928882121167687119438921348834919191987992215811874321596834312294922483918328229761242282399397913313999323227879822154913245994512121219811332692298543261794542331513359412943933187235339341141812442411143433898193326512435611562323232192244371331965437281565344262446152315414429834644145225292355352225454491921443762354672267343434321335548244217654839267645537355726342652553194575525
16692762931123664249235957176141119218461498264917831968397961471886919272393419156147514249881969222771387314223477535134616828725222132957251937512894217941817258299712138341452126725862535199217133388249842533458864624572793983633324316836214862391532815292836931182324945256323783697364621132824449935195364456997573568381419474443542794732597341264392631394714229343515636743489471847573224393555114621647556711868467949252158555465381584361845237541374241582533145462674785459158295868433541466
22667117819331126117814853459597519911461119925751894939732278199199131111881186395111971377914114833377822892144223722892596456161862112257222113686291514184338921121124222299229741622218248812522594448893391325533483391361756727297322336833322479731262529544913223223533331133185273332935992363361555991441243664459441247286783831843344794443358184237363165512433433464444224429638444314611347447266611255235477556155235839789494295445581555446929534847427662354454457555533553174955542572245855837
17188179225242381452673114997813163917519321814258514938916781174918185291391531121811896622614914812829928133635349256378422511892427412862143292536962514912789228512929631241264223292291773372512592393113924474645136748953362291353852397325431364717362512389133962313174235237533431331288448362361341422413558575624785916447331246496341843654247582847362349124417342428534634864454244239955947347245253352466968673589612755844235751745295476535869395847345123552845353964574597556535534116615845835
11979117114299581254929715118199987998481188217252778151771111929961119935416211123154155753114618262218122822531169236513182622921119811959229932836388926288222213117222114652732223426526686422572937332923393364227134762429373313222192216133114394749913739933332422833322576384333453763779753368314844313441447533824587353148442433321332724422541585112484114444353394443368749544456487488186447942595542455255864493569846425955354443244383553365269622359522555546441555447985165556759859929755815361
91131413987479619991594161221991889198913122611191175969898619982171167111198759129112411318974812841224252419858172111261527233211299121912423372221228617191972119328227822221986123122352242918592395233536352196928322237263834432231123212353448333233972821218322143933893333219723423346335312961341634464746321713943334837494554334223432346455944434418393232943325414491444432183453445744642317245274557585743282415444594851566544533454345756615554552941434315443652551255554329456455685575342835638
53123963119928411921661392173452949762896311112913991119281211716269914758166779812412366371191595986423417422113952213277241328456315187391742222312411222139232282737112586927788192352347748221261619753452853322416332438835243956742629841285333342352233324134339384822369713889921346345885933237272186456396443352744354994635416785373195239644445346334443524544149593347182499113245745699614434838329756741755446385546511574652789648421634175555645744555463565525161445829351122435685671172554594943
54188731187299115134131117815159138718862319838914226871219178773158378765989996394381183168768887216529984229831122624524222892626124982997342194912533798232128988426948987619111741549229427987999832763119533194223373563533391373723519311845321512364481934323919953715919872122285265133153819811194387422164421533448467464441248483462142295643262347559214543412116482612198323339637624426492192221549853327553264455957857555235959457325331675437345866132565452322759372321943444174873553751321333265
18774188665791134211899769699318817916169822181939376688961913171193216192851788314869162915111119412988529977681224532291187171142992812727193329214148779917212428221432721396289942597127312622222152319963118879233564331229828225311392383821443132525988112832353933254383241739115361823842373333326342117422998134467544233193933642241349493255424363619922394346414436549435284122647293495348444443745322853311924557865534421414475335245151436653547472113341545752554765154639523375831451645955555485
19141511381124197181181945198963815469848833679931121511513498191441751521712922147678718679947178472125262249223521829229215621917492657195994478114223262262451921255286263282313325878982978115828958323637335133463293133132673212851376821611558922533437337356213236639737439342443698919318922693916943474844624457431424424378432396248793272266913364454844846732434774184854145355471912142913371412715458595573556854253553548954341735981438337712447556595595784354588529596525646658212325312448252382
49981819424198736787188517151351511215711613397441411744589938769119988125711741895287336614826247945119292153521984789829962826246262232682272441855252285569114987122119923682285291639844772593735815622131326463219589193117393735737334379338355296636339667122519823322113479339631274195588361484692673324243757432169121422841484684844548144946631774744177823362193443322458144174238521669947259571378443535486854327123253395259579595565925515774288585528893447321455443356925528534963277115836168248
62275521391541295935838112797185943411111622371523578211991741819386852496992547419785887219712192517338663241265231614694922381829615452222273348263468932211285292149796351711365852189699832182321362844977435237634272571513349293172656333338445937457914332239631325181746282247696329171194329343247395518854634874538368262445131428376744444955614856812544334174243629285739335871743128221543145435841662996574598564947937355624253948785555516672596792365544528535473139684144698285423933265425654695
93361884231595742761919983398111218541547327514131811232299449725138111611139861214311122927773114311447299534261685387212119441922232965265843862524292234331155183624922272224197232542223313888422542255831164537279649832322155213334317637695497363531334544226629473513338333521834365333442499953365336694227564838175194343326632444542874871651847464244565533773158462444944463294547644455351116447644771533867594928621545443774355565398598276295857535567664488426957355515557431565875556646222755875
71312298881823211518256999711739493582173271211911911382159112161977237911994853789992723811599971918242331999293432262936711182284151469328438232212212249326122327218834812211596489111383492261118212935344211131454337314782229339526257143954934332332335143723343832994592332261759122249451337222932314645532224256544842589333144163736825416514544344344625483445494311561344337286123335156244833314342575664333536765595369144425527484793652762565545545573659455651542267245544839723444626735594442545
13936798841116168912874259593923211129561221161216816971138198249192355232471197624516311199426126882414781995222727912398536161413432223167233227232792718224921935121346634358221873562742221153723799352589211633383812341964727252454333427834433834381382933513214623245774546933298467385333226483481146369132274449492345217583836356544453894554494549249314462432573435688565714431957849644433759459225747124338555151345632869494746765556491566551565135142557354368454679967682554216895175554486156133
99117997991716881981787184242788519267184241711954112317811119751718113291161898581855679715266411181122811811282799219289829535389962137829535282216522342892222186282922431227291969296678182637752229223392292239381132139193164649117324893164639332763345391333329739313354233831217131778929374886333133441331334149224324121427575122843591427574144387445641244443184142446534494232824288913148599744424455244244525133543523253868623395461253868525549855675235555429525355764551534393539912425961185553
27196481954139221887139119127123362311649914821113918898819191421193191487155157121217991228199581713821759216524133299824122123823447342275112593222412991992121253221421259826626823232811233921169282493286132763524431193523323493455845338622361433352311211323236433253236193773793434392234413227139351439724387463554221463443451456695644973347254446342232243434754436434721488481454541334552433824146254183549857466533257455456256771675518445836555745334335454586554754583259959256565244566354493525
91933675825221291898194185199625812411814193891762453991595916791199727772995112187891149969618119991214478693633231291921529621173692352292521491287356411261612781221183888311622329891225117172922111232558971474434231213263173228471346331363251239846752237272389233229499942273343191233622828313322234366918258554534232437428433958245744247436234195786334838349134433151115338445421234473393942443334547712936966564534354853954416935685535854734521689744594945124554426222644955653234558441415355444
91291157739131811991778194911899531711765979975112649351933458637725611948166486327585142261311156181231226884124292211288921512291164282287618118622375146214456974883672215927759743869625337242226729234233799523531332239913262331227539339872922973348625732556718599478332613886185497173644835333783134534481163464244334112437344233864144198313318445973684366782961158944372499729651828475594644489424564559227457535544522354845534497525521942442955618479547789317226915548351183176293958661575559153
17198692119478958114491231983989721364811867149527477224997991715961819867591629152586138727992611922821971322158916922551234219419183247592297825163858833511811282617292197861273126369724983811372213393218243326912713366234532152129435861331893627496994462292239372831321897238423747183519492248332441432935443712382447734564326323154697244291473851711557331334148394243291834953485829462151335944355254314655482349355884567543743426571835531258496282266844244525941535431294516459693157326244615546
13911994918551131111589787211981688381668991613131154558656963612999274646756881397886655698481912622412211512966224222269189832219279949277911272424226566976717472311138575786799241899776671959212373352332262317733533337129194332138115138812238353533767718782858342224968689781135291188778216132348446344337342884464444823121544324922624992334946464487882989396945333517979189224631229988932724345955745544845399557555593423265543513373511344515757559899319141715644462818129133574233119914383545616
67518132618212531948899198818142135115419198158974917619291699768661396855182171819211591153161122667862924372932364215991121992925324622652121926918512872131271187977241796629328292132261226427223377897313548314347532611223211313643573376323213712962398324238229818835281773143931324337233753833448891842465942545864372233432242475468448743432482317341943534933192994639288425414243544834486494455991295357615365697548334454335358657955985454359342845215464514421311574139953652535465594559751556611
11661173349198988117313851385287313817883929119171194911276188195237515287211419833447281831121831812277228445121919922842496249639842492899413122128221512238729921634862639832252194455839294223294292338833955623212113395351735174195351391152423323933262334983113274597374194336321556694131533431531344994416673432322441646284628521646241226353443414437344519422438561848521544743266771524264454264245511552778454343355275739573963275735233746455452554845562153354967295963265585437788263537556537535
99171835288179185772198829516194447619226143981951198111933381348719119987181912171445128187676911611128294639928129688321993162721555872133725419216221922214449245982122119829212328255623929878712272223931574113923179943211427383266698324483652132733213332555135619323322193132343936673413198982338333414268522413428115432253849437771943559476324384432444366624672143443321424345414778452421919344944452537963352453922654336495154888215466158743549554355547773578325455443253545652588956353212145515
91312187167961571911665621171139588954612197511928418773589212132467795119739711782221964521715826881242329827817268212277673228224169916572321862213952988469132324357881622184182289333217563282693799235343193892837932338878433933527112768343297332416319957124343546899273329529339144432867439371481134645421491394814344998954414463822387945431844352742116823545465791138443163144125554397854148259224575653251241592545511916552557493349815654295546385322793465657681224955427425523666541896525936133
88695141969386595981894911894636728192183622121994711112799493198378891833121559375581929311981887899971625217149761619291512291574783921329473323211582222381151421948991294423266148669213142219299891118273632825187272131262331268589413243158443432269333349226253215911231553437725977132425332131191222938474393629838324237344237969152435426955454337144445133736432612234266454883618824353644324221233314958541473194943534845534817126354653716656544825555624484754372334537756599472993546475543533234
16179112913581311191194317848138318918166812699918216171114718117788164893947714952588182811669161162728122312469242221221542895924942912927792371112932728222582922889927591415882516369929392277127227383923342357135333233265391613515312313881348222314383933369313399113861252699362747113141338823833849413445346824644434437641272462642342499245933342549414447142441122497236371147385822425244993494495152455645793575554554875238357375345351135614445365152555825355223351834748225849693353635511451551
59798544159399281917165459819648918459241178128119111871915438999111859614519143238176724512491511416181965526141139212827656192175912956135228923922122298212654911122296172562125434928783562351262252729217663725224132393876721328612316724633913413323331932376512223331728367323654513989467346237336383132877483633524341498783243972342783574412452443444214348762333444283947843476562419157845734844749424398859474463545251989435418345389468552356355455532545987344455539415895458767352126895684595585
69842229121879122921516823547572622412461438423922839455854626932739222531488232752622211978228699627195333123298123313262793465868373352357254953413394156696573714384133364259934386373332218933971173821644423431923442437381457697948446346836516452441526771768482549524447536114549748444332914418228493275553454213455354849256871815955745794762756355263788287959365163555864722565185955544312552933951438666456532456646595136798292616685681587386746637489939816147627466697583367629616665542366314416
41918125123616997322223453956521522386431729889125213999249675222192129225225821211822841921131791185212923623472711843333456416763263349754283199123632411135178633321323133633693232293395213224281229632313473458382295444456752787437445186539421123474352224628974443243424474471434331441632433539233174342458456949331655556786389854855629764153223458546333573918555435453558558254544255274354464134428545356956715144276666789749196596673187526433456965744468412966654656466966936565536638546557524553
68131668187992112421472289382222227273644851727528971224792937241978965474241438218281927473422212647924277929811322353258339149333333838475596283863918233581314835218917658535254932939213858453332375813538813192243346436944125144444494958661739497412934469242594632912876964636514314132496956444348692464992421335445754715523625555551516977284151852314557135361574312398717574762542524351716755545971357511353244655686582663473666666262718839526296342566824647268542341982868587365363546282786665618
25589193728222425614585282793627974182313623982321673975282372928712921861932992138929262711997268913669121483933353672569639381473818529342473419343278418639348313982313297214311324913137382211837912477123259414446478367174149258492963145358452145438952974145942419342431832542243512424849332294812358823436152555758947828525136951317425646956325654916318525615352145354294365335462353595144331592346993454726366686915893963624716242853675716743676512742963672646325646531547644657346461625544261345
66349911874121982121398296522233715386211111685121824436132683115725225232192229222298826221839398837745112298523219323241931763334482649732222279623293554724379422683633634321333133331993733294141994885622331963432143435214287444559375184333338173431466583548153379474474543244424444211484431525211599673344217454325454632539855566148629544444928454257769465926448158558565435553555532259554263632261178445532856543656574364196667725973165555513956536887157613755926966967654666466664336166537474337
36521239712948299648332229112342391235171833264187592823722429421324821445895232484377136892877182244763234182315931175944333122345341234628294437529861393483353153243593255691634359548824791398829335587434529342614228615544423345645234573931554863197241459446426435461436671274546165993581241993144669854563145372533972665553445675634568414266597421835256155753754657254778238565727611469235211425577196567425648364418377666455678674567952537761853294636726686486576836588934967683872257134632253668
55741949729727238332799314116332378593418193812282522728949161952463542919698192826232351414615917916685215183183834944381142522744348961452921492339363383915127216357465312171921393734346252572612812779632629429494515549225363385545917256313251344147449412623832746857642328213241484545736368372392388174373153151562665133647449665612836742436245525855152373494385796875343932435259565684747948341349928548426426267377624475855177672394785354735663696626348451549681798645414354636167679585815945245
84232147313245641139179511662283112228816232531427891287311142727262642821383272611224139413522219119534325842435675224128162277339422333992734364253891239842225383837375393249438372233524152463332122164543695354678633523927338844153344411384547536491234195333649494848641435154948334463526357444323327565471646578974463413844995526445552249565864751234521644475151595975254626515944557463746855543443867658275768918557452495511663755666335167697586234563275558626261618636573762615566857485796665455
24289932512223299661248928221813611474175292899972689622183762921521175458827219284129978912112118223539114362333431177235913933292472258528631391118379173329487313263228656993832139523118912322322933464122547344454228834612414431358336963974241222948128443159842437433976711494324163422912343343314457523365845556533994572352554246944717418535233315923955426195354854418782251543527453312345445442556863447695666764411568346366535715582852964634442613416653721646596552989336265463856442345655655366
11662672192319261132742176223917292318189247522597626924884738784399121772274223992521929498523273192277378321342137224385328733412831342929135863361873713599584989541123288338533411363213151963438421338848943245324833549643984452394245313124697447298482461169519165223439944964452247432426217454953244995915435643594465175419556341535642423571855831959357227162127633454115517556335854353732856516435511612654675461557628652166745264675353468296694216146833827323874456522662866744696546484396762754
21672724277715491211222711637689491792129725119362624292539521221137312211714539142685179811382293913278383538882651232233382274879151281323183622147373531364163233224842332282564125379628192249331412438949464999376234334449338598126239243429473325848464247527434433595344339367523648173921335144252354915157511148734544555144961923734135453158443695957535863854554461645544147863475928413244625536346512626862225984565566625517213484524656426955471616864697496566557275665525897458613952435573664745
25222221932427154223227927137327352921777285126182942346998275172857282222983881361284992619292248713633333214353826533433813824843846313288839623729315345711938628396839333319499247239511372131335982474444432546493764454492493595495742439994173483142645682214973941794144442151135834162248324244619358555554365751487556551351461651685354111528459425375679332518415281525555326224694527335943535572146966666547686259866766246257276279646522263956153648678144362952639263666643733571563844615464668325
22722482142775761467297942215182282997233391582392922314249572952224962322229124422929243387583775543383359325388687257831815332629339311834441269341313342535168316333517343333123553313135449869488665449446143649979836894292644373144142294555237145242445364627942744462845444423466442424655197159977655155725475118194791531375548425525331566634825635355647573815385557395655553457755353576621826118876626683658622921581264248665953663644267774593674646675868492649666841676666456886646468773293722998
32411249682261812382247232917291482181316576895122349727927131557123233613748239319826972831823228114352235179337292349335834312831259329242768791623345183813824266823434472485934142193718394293433922546334628144831345144694542394236143135387981273445629492493537793454558359614525321482941531454413365744573925594245625571565341534725424649819238455673151351464881456566946172563643259315264256552447685568413661535673668267645264583653575192134956678426246257599256767715728367475436142637536766355
91435693251128699233327182519395728996749728982517224192222941729221992972199137168422928126532972591254671436223971134443829362141683911785183919362833521333315283133211318321124827953313923764318361236578254733418224555493147325279412289629412147394463244442639424432242943223593816442413487542947234768936584452933566651425843638152339173152325841557435555374153554335315433461492755352459865315834587914769556314467776253695474926344128426343695266854666648526466544642654457251386646356197642694
31247812384382222424128119812631932187565877134129411333229168282829374931259717219819491228926941524235892349549333353523922192374214329867698824523152244433127939393148514236182832192151233913715263534691345165144446463413321348532543197871993563426335554423814141425962534729394321326234412482637464571245627625555757452443245964365421898211467453744666553492525253617364583141543243734552359374857568235673873666686856355435617547653291932257856485577766451363636472847569425265435484566346148596
24324268261129111592472481293462858392161192524591991222429585721655932292859912914258712291956732213543537937223122261358359231457396941327221363561211233353169683276614331396112312536982331216784332465464814833423337246946134256841715243833247467232234446427179438772544241722342364719344232789544357657592594453444835715724536795282635494435857834334555753828154988365535283345347582145534389165546876861361556455594682683564781639374651554696894544566686493926519947664639445645869325664549127665
32797879722122819178222136627216412217345248842389881222831246145292492167927328929363228669322287114381898183323392128933324773832752332845635995349199233394235725631351327813843913147433977143339822549291929443441323914443588494386344395674611645121134441534683674246243892495412425854418825444193365131213155455243412555469951549745541678572275623224555264579478535735491351652353696552993655521447624232426656635452366657116265185665278968338673433566637568158964684651246276346471766311476663255
26712844931948222211751673992124552629361813963237341128938372419168251388333422239921467816957135473782395514215933332286278411323566373147292417434845223914948352127936249944453334113257892716824658489341662532614444339738952243467748425831352854595633412515946323814735115556444522436891382793576959145277364372555544184916335457885953694246396561674452362615743492584622666755563354791249381468716125638847548366665529512744656899616471535741767278556347372685451369573377786667446581235149257982
51246839269529621122221223189132982117886941535669769277236424324922199212144989227962185882352249216235794137163173223333233429124319322899715264677187138834753543513321132325519133817329699346335132734681524827428433444434453123542143391182637578829824994586465462443224343662124492843171145744624384579263593853954455554556423465325441229374868993193511569757657355433545477323551395428225685573549568137461496416556666566753457643655233148597911421462267186876846654465658843466241653933679668465
99591262982731151298232131335322828139681925992422135129477284111867935987347527622662186229979363451161237319384226231934324244643393924179213611353324623158839522297814619845863873377329733118147456227234842149533734214543535575441413528132472246443573426994163331892572195697498448843184422925856733834595325164484532565464668655252463924358335755468453711527444291368321671851955995429553313696784494561643627559564367657577976636357413546944686657956482263855531247943278296216611653166442471789
98192419915623262517291842532318955271944798279252732959993271259258212371327227478919132112912522591921352112673437362831295364342916638215581938136384316111438236136932348243833858912124322312363361213246322378454847394231647545312774932669214924749542722254934724714345935494496912323543342347447232435743348956595841534275865642388514377132513585165383336514583582545614651551712343465445345855834354685445916761695264538697675349962548824362469627649444762569469365672576266282345457655645696694
81539262852228955822892211122289546269252788412899342227618721211371294853283898852299923419883492349264137396333916693391332223339165737136389952391145333872983232248231596439491996331113452199451345137524841744412771441244333444127684824749116341225644498319434335934261754151211744222456321156245624863595285552388255235544455523879593585122745233675551942154544614537286526232285533356743226735673597461639666349936634665556663498161469623385634478666215326565572564839763734339664446785433784678
12298445276134251226759172256989936719725559339211459798869221828682772224636682113589391272378932222331955638724536233786128336719114782183666144132256181997133293979388333574779322469141238348914333344216674983564734489723944782122589329477725524336729211824431418149944468588143357125234945912544445532778519467584559183415589323369143158883663544783132293554252925115557969925446823634515612365555664388962157869566129452669143447125426999477465589424331466536313622666817113655793474562672347666
77222547222216337516221641216127123513289165331274262916213179944275426291941743474179223591981211688833365833332744862733275232723823462439127644238537312732428115538653731215285458528133461219232279994447694444385597384438634383493457354123875534964842384353922664976484232639656963924457232134338111555871555549661849554974549451456846523498664517595349546413377518759534374176717413556834324544922266698266665177295166518565156256795763451977562861645165752448862986164548528782852466794543565513
12222429229882822329537892221227893771972421962912778659949881965631972128139323991222282629162224282333353133199393343164891333233891488218353217312388976115199217674218323924143411233339373127333539344446424421141445427591244434491259932946432842349918722621132878532943413525452234444148423844464145555753553225255653861235554551236114315754395345112983373224398964315452463656334555525953495557525666686466433636676497234666566234722542686541645622319448433541917542656357476744566663616451666863
57253252965381665226173687256325292231225856425586812229921181292766783448267422181322823468222295246836436317649277633728479836743631334233696753669792333113229231387789455937853329243393457933331635794754742875138874483958194785474244534471786477181344422433134249889156614896443135441456814444274681586585398624998559416921589658535564558289758829245553354424535199126772591755424655256792555538579269769641973511966152713269176964667566939186993135666446553564621123788361286653576636781366664968
19632628282184478163839226229421623776817218822942628868391792986228919497992379218422121219113928892174373939329558927494133733153273488792832993315373997941281319733912151811348132953323232122413991328548414143166913851524484426438459981394311442648411815239242184412326292245924316443434323352411243965952525427712496263559553754956119241542255375952292634135329552343731335613542755454543446352235417616363653882351737466166486516722135265336648616331374524643166345484244672465386656565455746334
56232216272292325335928322268184221355291972945272832221171292791611992163974242971622223296262917526734332738331343644613943337929533246631218315638394333228231381272211327418535318273333431737312863784544384944245475572415444813164435774232942674941544433934249238332243852964642938444454284842397489565549515535658668352655592427554688534315378515265554414535134944335496317575314955556539595341859167665162664676977946376661353866579964542648962637666552564624515544651742868642516666764161645296
97492129516172622438491281924929337322222222679522562535519162187212456212154932144266526291918196661851323162728373354951239213513144843333333378163367364662127329832356732326514325537763731212921777296243427383948446516234132462425595444444448927447847577323843194346784343762543664887484232313288831735453849415955762734524357353661655555555913855895868843495421545789545487365477599859534342439994284656495152616687384563546846477276666666612496691697995451653265689165659847658861196164545354111
62261291183452315875124822882349574742142176492189292824715218282511621897468236934585224294232125717337231229456342698623593399345168585325328751329131393582632939362273291857934714569633531534323682844834233156745371973461441145627969643643986243124241469374314147338431296814582567174464264543479395594534426785648218457255225673817175475419735423535257148542525844954231792569367828557537565458141661564553789675932956836633678492828658652184653464636825965363695516534281367147893966864867656925
11131385817226482625929921222261945466258184222189211546956968117321285113928262192742881814991185742224249692833759373613113233337215657736929533329132265716717922843239622413937321385399292511229685333535171394486148472422434444832676884713164443124337682782813395434173352414843249641131362233179644464628241559725958353354555594378799582427555423544879389392441654528446352595435175224247334428175557573935266183616946446566661548981169353866653465598149141355276563955746361654628633535844553928
19734212427826942629229188162222921976281452194842425323236297992723169466221289227292126914877189512184532353893715373133129927333313218739256321595353643434731811383427157733239133831323712598829162329564346491482648424423113844442432984136743261646475454584292249453826884434124494243482361993127343167545751259375953553422495555354319524785437275758656569531335156493799554523551535459347211423845427865686236148616466453351666646542163589654838686976767164244626751481166563466264656145832253495
19144217327516298321881919346924913838852325552772142879967273931953412921397219662386322921223924362125532843862731943299212145713512494996343666388325398117838414216452313241832177349743313233413547323664395497384215431132325682462351511745477749943641922894952532756342435294328845185442434452465843477541651849532654224343679357346262285658885115475213391516364386745354631543995629655354556357695458865276295164376533545478146845737339676999622658632441262747549785646574265411673176646566746871
67768233317162252692922254874214913952234148438729598124142871221695122324822366441612811275826219517887934442827336371313336598532512416334525954983161923525398233271623343593347755272392238693732162899814555393844748242444761964362352744563616519427213463641934438273445461445886638341334971484327391192566641495585935355587217547346385567472762153832457475214554938455657255699774945244518259543841221367775251669614646669832865845749667858387326494356858632566514956676836671188515635562936165495
24991222212926875222414168222725958623285732617925247922812821812182755499621915992918223994314222633511233332313798633352527933383616973439684372813635813392393292329386651173212611312933411542533374462234444342481974446363814449472718454179548392474692441341431343149776228432372242314452265364448557334555545359218555747492555158382956528165941358571355245254245425188733954348335342556337647555966844566665646132966685851366626949316763927615246968246635636535653629984416545944645366744875866617
97825524919179881292229818286611555632112421755819218843711742291377589222262323218937281129798992221893663512128199231333192939772266674322353286692132995482285331248869133337343432914839223181911333291477462323921134244421314188337778543346439771324311659339644235997124444845454312594133429212244431258857343413224535553242529944888965445754188243542276144175534611823555595656542361524453132335554236996845452433564666435363115599917655686529935465338725528664572293466661676765347263556424344666
31592867698289952627861482242725243832225777766292831242981223238163434921571771552992417994171291274261397871939116373897259335383635494333688887731394235319233434927454513268288266311352811528231238537241898214122748491836144649474651544479999884241534642134454513856562437939937742246392263934234964835291932523385951294725575158576265558111199535264575324556562496767354814114885335741337414534517594631214363449616231583668626968737666922221164637568643566767351787846592522599644685244852564562
49622822325693262317292278454855129923932188269934922315291972719422224482222237912726969969299872275173393343671437342831338956596623113414329937114513342631218382153333559333334812383717117131198338628441445478254845394244916761773422452543114822562445374232949326444466144444592349482822824221944973955255658936595641535512787288453356365422593367355648534315143755557725555561345159393393533215518416636676914761675264662389839956446747653361447846675964542625486666883666667245626141441464432662
92338373332223343721698431322298868286111167511818212131195212212424194621239222324228285157221941251344948444333445483271954243331997939722227862292932324221632332353521573234133343533939626833215236245515955544455659438216535444211814183333897331314343533274344346463268434524445464414173794432634735662616665556676154932764655532292529444491844242545464438545545757437954563555657552528481554374584677372777666778726514387576664331363155551295535365657554965665686854816567466676866363959266548569
28651319732179232522589139441521252118426422821788297291911967897252289432399178396977321472835796923976242184328134363369124155263236322953753393289931831212217891836339154341128941718843258394681713418735329543924547447123526637434743316486441439114294232332891294744126545223915282995436941579282452984643165413565855823463774854585442759755254122531534344391231585523765633412639311654715268139356319575427652467696693457488596569655386186636523364264545541234269663487674452374142276582637924146
45889222452217245188129451982839486235278132611228583322123212211921147218364592312511724949282318235699133356332835629923156219394159734638924372233969443323432332213225832947561342362283515139342934671124446744394673113426732141526184574913548334417155443454344332433694315867245347339462624145314578223555785541578422453784325263729568512465944552826655456545544354471542697835645844157373525642568933466689665268953356489543637483167962357615566393776656765665546558265371894675695526848463675367
48532239714294249797194226335325122941869222115113282321584246732923282838372959327196751177792541255964334182531535181821533744643623315297133322622439343269535784313439394948316143821786228881365236617544529364264629293264485575473442631824443373354145437164689542454141515942725493289733999247634772865563147537573131437559668658455374293555448446525654827579165356525262615383651439184411135874588397667425864868424254866177976956648531466655955763676593868127646763637372649476254129552224698569
58145278622233267648156214812382212812291377114999221196118212245352922522324225229122612164197449196925638973334437875926732592349332392331248822511133221722932335646313363343533633123372327521855121713674918444554898613784361345144341344235993362224433283314344675742447445464474423448343863296623282478512955566591972489547245625545245534611447333554439442545578685355855657558553455945497431773439358962316667761218359165835673665635664572255844466554155365668979646696676866966456615651854288454
12962152412382617666182246222888128361996787342223789626151994432262321492393271576221524233362122792317326352349372877729335733399923947211789845333489173726211554337343251341438268733263534447323381342843746345148398883144684441113415832289195644459128483732266544845436245254937984437464555843449245395485745625941999425579555222452694339121675556123959484337765595654735636514819554857566695455135641659685673615211153668166633356371544123278666723416159544887661676584674762592166596867771656624
82928221233942581173375722199362536135268122363858181711496229161111724122359831496225197262722955299313933234415369228448683321147364724637923347496929282251733127222283523346194251733621837383316631142414434552647133955979443225847583574813445851713139336284423833339463445721536284473294849442774225352554566375824416618155433695869468592455696282424144739553494444157455683264739558431595155388533646366567748693552772926654471697157961356671739353525584166451555526856679437584166954261626649964
58617821512512724232382252272146681831399233279221296262343127892922229222412211314975122679821326216972893262362383534349336338325779294241134438133231737345423891313333133352332242518623378193243732718391437347349464545144744943688131535224554924434284845653491242444424446344335362973448921435484382941254845845157565625585515479924264633566513554539595676451235355553555745544647318455913254659549315236595695626867673669662658113537574467762466564161678756234646666466685665575842956612436576165
83993314523239248282219572968161798113961912212412934272992912928182559882373928519783228883251717229411442563434135939332168317927281922417212332352314538311312313929366199348413962189433999436282833152255367454524614144327942813839213352832344346342564942242342413147721145952417329154411154739394426336647856563572525543815392494132446394345545745367515335345352425883225616352843126552226584141553744775896767468363665492641351524355741545665685647862644645646353699433672746395423766333769525266
12725588519822227723427268156141688564621227169222567224459228294232123232882292374948599957484243222383669962193333883453837926725279967573233827133367833556133931534323434399331348515961116859535433349477117321444499456494813783638117868434493824447894466724414264543454541144245962617222796164654445158822843255551156751592489474922897954551493555891557783552537565456565225535617372833381727576555626993395436666226786261359158513391816566251466691266889466364867656767633664672848394449283868766
21222912917252111225213891679921983424954728484928288969724441968289445183113126619571673431986697333233312312836322233632491278113219453516583959513939917183555217939155629422423772168278454219771844434442342394743334474351238922432156462769416162414112829466632814126673153353488327938956532188295554555345341585444558546234913354326757387152727352522393157774392523778426446459943814916764329931666566645645269655566965734512446543786849826383846363341426888541363488953755756115492512787543114277
85222435122743752749252122946215581613426282811393234699117719221312912167514952111432212649221291659633354623385486385136323315732669272453739392241434571122882133242312327862516322254332375133231276174446573449659749624743442684377138356484141335254568223399324435342343897362743336544348624434238728555768455176185173585455379548824946759525244636567933441143554645345491847385444765545973554534983966687956628729628469656648165993515786163635574767814455225466575645651295849655587665618466564519
12917111361221239972932221223786362287372923194492923121749893621716239199783475429911872632831243212312822247233234118314333233489747339848313421551313423285191473282734121189458653112298374394235432342393335834434522942544434459185844195942453266242453439621258439384523229156976422331948541534654345341444694554563315365554556129695521615356437735356454173236954149563433126718753344215965264576545645255571566567442647666566723171663272646754884646756528434716525167454423782986445532617637568765
83322228191722996215142228121224422275222571251321119173492192328464292162221634582881921557312129319443333921283311732625333923233553338633368236243222128451321343957531327333274569399213266842323142155444413239442284373644413434466444974447934735433323956243245416864243844438567141132437795343425326655552434155339548475552454557755518555814584654443416735435652797535495554967825224354881645453643776666354526644165958666356566886662966692569576555452784654676381864651666517893633546599275656475
29392832782248247218229737221217849819224513512928496715883311769733265714322342388292668381527241233141394389335935832933184833232895192133562462313951782699442287184437682543345349931377949263835234425241549144614694314429594434391621324467357342416289371155339829554879365445645114248815137494634553635265125572571542553161554541273243557846845352739148226644193166598147655675622535992624851574566474637623668368265366427266565238435466895795646384125933775521427761925876678673364611373596268567
78954887946782229341313719889223263478289221228263264269262222814192274846672823815129982144723338248916599815789333145242482199133437458939133233937437537137333392521338595778393492623119325583444935912761192689144425635359321124454856914124434414854864824844441363244961688941451373422143669455514612387221379125553674646143223556596712523554552596597593595555247435517279915256248453325477156662572349833248123666478575725433466761782363466566361761861461666635854662838112636735956443658826777368
92862226918222112682228984491255616462877892241689394323522995528279938229823963732392772255127995211397333712933322379333919551236672757398891335279141543463311663938114933193417484341388336623811632241844482314443348144412166234778386841991244638125265457442277414922514421452859545249944773492274335295559342555445925552327734588949795211235574923637656855338852513362553256396165635115588451338544631666145366655613666343884569915181632234668513474876796644996362447366436741727674622669956244965
63442191133664632275232796721234312297287138921793281233178251221829283223183259286699129272192822327455321224477574338634381783234542331839824913281439234428936233293139433429436139771123138321393343856643233558868544974549289434565344294193512439254134553914734431424154453154724188223424943241445496775434466997965518565139154567645531521462354136524566412584554253526556426583529933453515435255651788654557711817662967624126567875664263257346524763567752369566536463766753769463114456462654636676
23312313712185111222224273371982222293272322192594512915889391481362913823262569762745322271188382153442342482329622233333538448219333331438343321361562312699141259247312493437367187385643338229949326455345359343173334444464955932144444254945443247267342371125236135842351454847829849675444933115143756645646145428444555557516614325555536515655435837845348223634724695346256595893195178655514422625486775675725653955566666862772543666664762676654694895645933474583571645736761691421628976662553373659
72122922252623229237722272229823123827632672663481291918817292911938112312621294741572962115992221118323313336373433134883338333193423493874378377459231212992831312214922342373231585268317322611333222943442444748454424599444944421453451498548948856134232311394242332513345348434269637942843372244433315455355585956553561155515553256456251965915996724534342241535344362445645954537174815395448335554442656646669616766467226662666436756736217612611783564545335264645547355675616564828592641655944666555
25961649127117295882372161221512217115522291548728166563293362913219234492222318132485932399721441173617275123822831699348327233262332822663331265983927767431447312432134551333342924359614341183255228472838623493394271145943834437344393377444237619413887854255842354324566244445313546172545229436633958394973451441538225615494554845541448855534872152499896536695346543567735555642465728365633154774416941518456255264933672651566595665255996664598326351191764771645765467884666675357683947674426588552
29911699411722928581732762221633213996929941112222221386582623246425563152562922557493212639923178523112271152283313969284387333274432411713115222333333249769373435753667426367313366851432374113428963422338226339442417139549844438554352282422633344444435187148454686477853747842447796254348522453917453344933744155352824165195554966546339353374445555554629825956579758896485895355881736545963356412856445514485526646393527621666517765744146448555666666573193616768186991759691646699284765617446752396
92323334154332182169129211998227171291238792225562711329291823123972339252372522118942225272921622441343444526544329327123132211933828231234981333667382243131293423418344136348363322915333638313273355245455563765543143823424332214493934234519244477849335424231453452945524745947443312644474942438446635656667487665425493453544332551414534562135558895144653534256456315663585615855442375558515354955774676777859877653651456465544366252564567324666991625576464536756742677469672696655348666962646516688
21466299229662922681224213631353242296759431241274484541692841265837823982238487813966226175229183693257731133177313379233532474246435331786154235238559565271395237694893419334959892417733728633129471436884224428842448134464358535754644289726534634966167638241634871591452144516191352884483974423158254799533553995355924557546964686575539183764574517727874935274598261256325562721246399559418553426936581164466411646613566865717579768664129487568562883898514638561937236743667383235741166152966453714
58822661231989627229411975925424752974127633613286923129197822338666125686193126857321324134425471296993377234219173833152218613653586318523874472439713423121893344977723679721423796843243524553658231711448834532128494426332972476469742963498558354182453423291445518883478183253481795435463566476934282255994564323951553744318358757185317451966946529356453431255662999458929436459281654657467758714539336611567543416266485542946986829642856217715763146756454236677311156913154756139276576857886982564
88222961196281222687828599782243522129221127346382292994194964633219333692527569189172955211328296489933317221739233379893961189335463323133223845749331311521517574432144471363867129128316632243931759114442833284134448191417229144657443424433495685144242263262868554325558247497823123942774335414286122555394439524555921252833125576855453554451679625535337437397966543666935851893423415388544652539723366641554163566613236394423668796656466556278173664644854841817765477714696291453452649965576364183
52282664171239282423259272963928217132691828651292416718539223422243418368229992349924114267872227846339377528234139353436138317413932824371293976231352782964133453335452947933111345113522537898333895744148863934524146454724942852414393548231418734246389317524456444656315814422245622463364891944491685525997414563525756583515396352541465934252984535749142863556755576742692553335673357447591215551279663611852567463686769462641746365257614536319564685125397466786668785371366444678446855861232666238
24527512726123292325291792131823117199892229424181392122932242622298292529299919199272319592111584183563862383723431343631281324293422821191333153529241323314335373331931363131112121138342161322269529467497349483454245474239243531453393221244426463135243442544648444214247424222323224945327243337163157851845159456535658534135464256441433235553757424635455365575955532535853533343433515643835444827426896295626156764676964524657536755254434666486853574656647668616664364696464445454462675494655593853
95697277568212171239799291515929133673217124828924372722429812526229162156762129222723251121299812911671838867932328234181131262613124478432823593913548383353192363733127326787323133383436223231192312278294997814343934529224237372423558954393461412465949446421347484423843789843424449454733434221342338931511892545414563133534848353466916541457252357615155753245859553495489195453555156584454533245344914262291365652567424464595946457712765256836346872626686435696166451659121656466626769556564435645
14517129919621171739671971882722382154621212512195221138815112172244271112128791177156774352272731162562823112173228284178218299383349326573232362321633224992622328335538222323981228826788546338384227367393422328433939528932931149445143768434347343274433511373343944664933343419233993789965744949533847841453343954414163914314225155625487954545845438554462248445415577514445452134411489117685515164495895256445416552527412542533626673659816565695654966557335955652668862555656324552259122879662627551
68118221366214262322268232979293811217517129531944193825628982162926328279921213263193278747122171827922933247732537343337934318131492232862823164215521493673919327313743938113232437421438985823328293813314435884364845444814542924251334397393427532663251478412143842485414922434354853254919693443931492442554699547595655592565313536244541841453864377436258952325495359652513354546596436512171455414251355366571165861676661367642464735565295256497548854736916343651646176362446565761754762328256652536
44114242338312132422262917317159136231371173682118777262956272236982753236293212526859224187142333395522535344942324353337312842826124734248228479322988837316738334719386434731432363796133529825344441663364645515343546444842395393723584535933958143319994842784944582149754584254347481724463193645555277447575662645465755595341641483469564614416925442111595389515569325186569536545859283557421475666638855868677375657686661645275259457167572552713655322261649162667143629767164765696139466853258677774
72722879319227169742122151896824121456639211938364262919721693992316698279192285292123993312116127398383398142133827185323326291793523256774132214947537312183271411342771938121339631323411442322723841949441925324493829643443731281463436788524332515864842329438252245388214923244174243452255343383495215155213643551493175455484239257454789963544362697595343154936335649932513435528535456336645449451632626632475466251428656659534136856589117465547371861645426514744675114362454663964656744775655156274
28828689229288821211676871194389213488349191919879922158118743215968343122949224839183282297612422823993979133139993232278798221549132459945121212198113326922985432617945423315133594129439331872353393411418124424111434338981933265124356115623232321922443713319654372815653442624461523154144298346441452252923553522254544919214437623546722673434343213355482442176548392676455373557263426525531945755256336313466463336565512132554873465783378454545432446659355328765941378756648466837453763664215686636
27713873142234775351346168287252221329572519375128942179418172582997121383414521267258625351992171333882498425334588646245727939836333243168362148623915328152928369311823249452563237836973646211328244499351953644569975735683814194744435427947325973412643926313947142293435156367434894718475732243935551146216475567118684679492521585554653815843618452375413742415825331454626747854591582958684335414666225732758667822979578151363269666576492695472956348652485352693644256573785896561269316979544652577
33778228921442237228925964561618621122572221136862915141843389211211242222992297416222182488125225944488933913255334833913617567272973223368333224797312625295449132232235333311331852733329359923633615559914412436644594412472867838318433447944433581842373631655124334334644442244296384443146113474472666112552354775561552358397894942954455815554469295348474276623544544575555335531749555425722458558377722366346588667266346941891515316556692666557131645958538773465565568666644664285166653683356966948
28299281336353492563784225118924274128621432925369625149127892285129296312412642232922917733725125923931139244746451367489533622913538523973254313647173625123891339623131742352375334313312884483623613414224135585756247859164473312464963418436542475828473623491244173424285346348644542442399559473472452533524669686735896127558442357517452954765358693958473451235528453539645745975565355341166158458356364463577179784691723866955346862856316587646971416958456234663956464175685618667646645227726956946
22181228225311692365131826229211198119592299328363889262882222131172221146527322234265266864225729373329233933642271347624293733132221922161331143947499137399333324228333225763843334537637797533683148443134414475338245873531484424333213327244225415851124841144443533944433687495444564874881864479425955424552558644935698464259553544432443835533652696223595225555464415554479851655567598599297558153616653566366975514671957536166465554355494664476371733461633666657552666558196276667861961131866926472
12242524198581721112615272332112991219124233722212286171919721193282278222219861231223522429185923952335363521969283222372638344322311232123534483332339728212183221439338933332197234233463353129613416344647463217139433348374945543342234323464559444344183932329433254144914444321834534457446423172452745575857432824154445948515665445334543457566155545529414343154436525512555543294564556855753428356385668696854393526555615962677655644565456867726665663152545426554763662366665431567566796686453946749
64234174221139522132772413284563151873917422223124112221392322827371125869277881923523477482212616197534528533224163324388352439567426298412853333423522333241343393848223697138899213463458859332372721864563964433527443549946354167853731952396444453463344435245441495933471824991132457456996144348383297567417554463855465115746527896484216341755556457445554635655251614458293511224356856711725545949431867852866557496657622685763891759532745286666756855666574676636272556931462233546796782283665615154
65299842298311226245242228926261249829973421949125337982321289884269489876191117415492294279879998327631195331942233735635333913737235193118453215123644819343239199537159198721222852651331538198111943874221644215334484674644412484834621422956432623475592145434121164826121983233396376244264921922215498533275532644559578575552359594573253316754373458661325654523227593723219434441748735537513213332651964438664375566168968666346161568436442786548456977243676563433861483432154555285984664862432444376
29885299776812245322911871711429928127271933292141487799172124282214327213962899425971273126222221523199631188792335643312298282253113923838214431325259881128323539332543832417391153618238423733333263421174229981344675442331939336422413494932554243636199223943464144365494352841226472934953484444437453228533119245578655344214144753352451514366535474721133415457525547651546395233758314516459555554856433964422135668976645532525586446356262547764658583224452656863665876265741634486942562756166666596
21252622492235218292292156219174926571959944781142232622624519212552862632823133258789829781158289583236373351334632931331326732128513768216115589225334373373562132366397374393424436989193189226939169434748446244574314244243784323962487932722669133644548448467324347741848541453554719121429133714127154585955735568542535535489543417359814383377124475565955957843545885295965256466582123253124482523826569616684667965364664659165452846192549448823558667616616895465699631617636757769323436423559363493
51192921535219847898299628262462622326822724418552522855691149871221199236822852916398447725937358156221313264632195891931173937357373343793383552966363396671225198233221134793396312741955883614846926733242437574321691214228414846848445481449466317747441778233621934433224581441742385216699472595713784435354868543271232533952595795955659255157742885855288934473214554433569255285349632771158361682489554646597965438234364416361681616676136626885399696639914558432566554467136639645174388226947279359
73386632412652316146949223818296154522222733482634689322112852921497963517113658521896998321823213628449774352376342725715133492931726563333384459374579143322396313251817462822476963291711943293432473955188546348745383682624451314283767444449556148568125443341742436292857393358717431282215431454358416629965745985649479373556242539487855555166725967923655445285354731396841446982854239332654256546952773117685619675158148466735364159896666627783617813476655639646584241795255719396534144376536765716
14472995342616853872121194419222329652658438625242922343311551836249222722241972325422233138884225422558311645372796498323221552133343176376954973635313345442266294735133383335218343653334424999533653366942275648381751943433266324445428748716518474642445655337731584624449444632945476444553511164476447715338675949286215454437743555653985982762958575355676644884269573555155574315658755566462227558755882644978615139732656554885466676419619387316968646678775599537168466626668542676986667757333866986
82423319992934322629367111822841514693284382322122122493261223272188348122115964891113834922611182129353442111314543373147822293395262571439549343323323351437233438329945923322617591222494513372229323146455322242565448425893331441637368254165145443443446254834454943115613443372861233351562448333143425756643335367655953691444255274847936527625655455455736594556515422672455448397234446267355944425453686775444647876616471255536638595814763873676656656684761566762653378356655941834555737846615553656
24147819952227279123985361614134322231672332272327927182249219351213466343582218735627422211537237993525892116333838123419647272524543334278344338343813829335132146232457745469332984673853332264834811463691322744494923452175838363565444538945544945492493144624325734356885657144319578496444337594592257471243385551513456328694947467655564915665515651351425573543684546799676825542168951755544861561336858235449666262456743971515857876667512677662676246253668465479565781178793665327916286665597267244
11228118112827992192898295353899621378295352822165223428922221862829224312272919692966781826377522292233922922393811321391931646491173248931646393327633453913333297393133542338312171317789293748863331334413313341492243241214275751228435914275741443874456412444431841424465344942328242889131485997444244552442445251335435232538686233954612538685255498556752355554295253557645515343935399124259611855535566355355636244654634364979734416572364979636651966786346666531636466875662645414641123536172296664
38217592165241332998241221238234473422751125932224129919921212532214212598266268232328112339211692824932861327635244311935233234934558453386223614333523112113232364332532361937737934343922344132271393514397243874635542214634434514566956449733472544463422322434347544364347214884814545413345524338241462541835498574665332574554562567716755184458365557453343354545865547545832599592565652445663544935257365294651968577644368566567367882786629556947666856445446565697665865694361161367676355677465514636
12144786936332312919215296211736923522925214912873564112616127812211838883116223298912251171729221112325589714744342312132631732284713463313632512398467522372723892332294999422733431912336228283133222343669182585545342324374284339582457442474362341957863348383491344331511153384454212344733939424433345477129369665645343548539544169356855358547345216897445949451245544262226449556532345584414153554445658823147177675645465964165527146796646965845632791855615156235665537333755166764345669552526466555
12312268841242922112889215122911642822876181186223751462144569748836722159277597438696253372422267292342337995235313322399132623312275393398729229733486257325567185994783326138861854971736448353337831345344811634642443341124373442338641441983133184459736843667829611589443724997296518284755946444894245645592274575355445223548455344975255219424429556184795477893172269155483511831762939586615755591535675661338568646655633465956645518636632153553166729581658891428337126659462294287314169772686661264
28219713221589169225512342194191832475922978251638588335118112826172921978612731263697249838113722133932182433269127133662345321521294358613318936274969944622922393728313218972384237471835194922483324414329354437123824477345643263231546972442914738517115573313341483942432918349534858294621513359443552543146554823493558845675437434265718355312584962822668442445259415354312945164596931573262446155466365425766593451466995678654854537682946642369517393377955355636152646542315627561714268437355726657
24122115129662242222691898322192799492779112724242265669767174723111385757867992418997766719592123733523322623177335333371291943321381151388122383535337677187828583422249686897811352911887782161323484463443373428844644448231215443249226249923349464644878829893969453335179791892246312299889327243459557455448453995575555934232655435133735113445157575598993191417156444628181291335742331199143835456166856655956411668666614534376654624484622455626868661911421252826755573929231244685344221125494656727
78629243729323642159911219929253246226521219269185128721312711879772417966293282921322612264272233778973135483143475326112232113136435733763232137129623983242382298188352817731439313243372337538334488918424659425458643722334322424754684487434324823173419435349331929946392884254142435448344864944559912953576153656975483344543353586579559854543593428452154645144213115741399536525354655945597515566112316468726476718659445565446469768166196565461453956326575625532422685241164763646576615661862667722
22772284451219199228424962496398424928994131221282215122387299216348626398322521944558392942232942923388339556232121133953517351741953513911524233239332623349831132745973741943363215566941315334315313449944166734323224416462846285216462412263534434144373445194224385618485215447432667715242644542642455115527784543433552757395739632757352337464554525548455621533549672959632655854377882635375565375356622663889565454466386841684174386846344857566563665956673264465178316174376696548899374648667648646
11282946399281296883219931627215558721337254192162219222144492459821221198292123282556239298787122722239315741139231799432114273832666983244836521327332133325551356193233221931323439366734131989823383334142685224134281154322538494377719435594763243844324443666246721434433214243454147784524219193449444525379633524539226543364951548882154661587435495543555477735783254554432535456525889563532121455155563648174463564133765447516265999326577269854651665466658884689436566554364656763699167464323256626
12423298278172682122776732282241699165723218622139529884691323243578816221841822893332175632826937992353431938928379323388784339335271127683432973324163199571243435468992733295293391444328674393714811346454214913948143449989544144638223879454318443527421168235454657911384431631441255543978541482592245756532512415925455119165525574933498156542955463853227934656576812249554274255236665418965259361335686764362352613656622127663668514451926765316657496433814576768792335166538536634777652917636147244
99716252171497616192915122915747839213294733232115822223811514219489912944232661486692131422192998911182736328251872721312623312685894132431584434322693333492262532159112315534377259771324253321311912229384743936298383242373442379691524354269554543371444451337364326122342664548836188243536443242212333149585414731949435348455348171263546537166565448255556244847543723345377565994729935464755435332344425169652584215154645956645928237465764827767655936666735595865483445648867611583114657586654644345
27281223124692422212215428959249429129277923711129327282225829228899275914158825163699293922771272273839233423571353332332653916135153123138813482223143839333693133991138612526993627471131413388238338494134453468246444344376412724626423424992459333425494144471424411224972363711473858224252449934944951524556457935755545548752383573753453511356144453651525558253552233518347482258496933536355114515516263566756814686665665986349468486456462246725556476263666936466334462945859336951714464746622562662
61819655261411392128276561921759129561352289239221222982126549111222961725621254349287835623512622527292176637252241323938767213286123167246339134133233319323765122233317283673236545139894673462373363831328774836335243414987832439723427835744124524434442143487623334442839478434765624191578457348447494243988594744635452519894354183453894685523563554555325459873444555394158954587673521268956845955851535419961585574656362191546529456491579663467466566643656198455566641526916569878463237916795616696
71953331232981233132627934658683733523572549534133941566965737143841333642599343863733322189339711738216444234319234424373814576979484463468365164524415267717684825495244475361145497484443329144182284932755534542134553548492568718159557457947627563552637882879593651635558647225651859555443125529339514386664565324566465951367982926166856815873867466374899398161476274666975833676296166655423663144162549777567643567757616247819313727796792698497857748591141927258738577718694478731727776653477425527
52129236234727118433334564167632633497542831991236324111351786333213231336336932322933952132242812296323134734583822954444567527874374451865394211234743522246289744432434244744714343314416324335392331743424584569493316555567863898548556297641532234585463335739185554354535585582545442552743544641344285453569567151442766667897491965966731875264334569657444684129666546564669669365655366385465575245539656467167826255387777891851217617784298637544567176855579523177765767577177147676647749657668635664
79242779298113223532583391493333338384755962838639182335813148352189176585352549329392138584533323758135388131922433464369441251444444949586617394974129344692425946329128769646365143141324969564443486924649924213354457547155236255555515169772841518523145571353615743123987175747625425243517167555459713575113532446556865826634736666662627188395262963425668246472685423419828685873653635462827866656182468622464355766797693774584777777373829941637317453677935758379653452193979698476474657393897776729
36691214839333536725696393814738185293424734193432784186393483139823132972143113249131373822118379124771232594144464783671741492584929631453584521454389529741459424193424318325422435124248493322948123588234361525557589478285251369513174256469563256549163185256153521453542943653354623535951443315923469934547263666869158939636247162428536757167436765127429636726463256465315476446573464616255442613457114565837477797126914174735827353964786827854787623853174783757436757642658755768457572736655372456
77451122985232193232419317633344826497322222796232935547243794226836336343213331333319937332941419948856223319634321434352142874445593751843333381734314665835481533794744745432444244442114844315252115996733442174543254546325398555661486295444449284542577694659264481585585654355535555322595542636322611784455328565436565743641966677259731655555139565368871576137559269669676546664666643361665374743372289556643967654767685475217778836184276666624167647998268724866137177178765777577775447277648585448
47632341823159311759443331223453412346282944375298613934833531532435932556916343595488247913988293355874345293426142286155444233456452345739315548631972414594464264354614366712745461659935812419931446698545631453725339726655534456756345684142665974218352561557537546572547782385657276114692352114255771965674256483644183776664556786745679525377618532946367266864865768365889349676838722571346322536688217678536759475529488777566789785678163648872964315747837797597687947699145178794983368245743364779
66852151831838349443811425227443489614529214923393633839151272163574653121719213937343462525726128127796326294294945155492253633855459172563132513441474494126238327468576423282132414845457363683723923881743731531515626651336474496656128367424362455258551523734943857968753439324352595656847479483413499285484264262673776244758551776723947853547356636966263484515496817986454143546361676795858159452451139659537537378488735586966288783415896465846774717737459562651792819756525465747278781696926156356
95343258424356752241281622773394223339927343642538912398422253838373753932494383722335241524633321221645436953546786335239273388441533444113845475364912341953336494948486414351549483344635263574443233275654716465789744634138449955264455522495658647512345216444751515959752546265159445574637468555434438676582757689185574524955116637556663351676975862345632755586262616186365737626155668574857966654554978769386879129668563516622774866777446278718697345674386669737372729747684873726677968596817776566
35391143623334311772359139332924722585286313911183791733294873132632286569938321395231189123223229334641225473444542288346124144313583369639742412229481284431598424374339767114943241634229123433433144575233658455565339945723525542469447174185352333159239554261953548544187822515435274533123454454425568634476956667644115683463665357155828529646344426134166537216465965529893362654638564423456556553667974558716777875522679457477646826693963175745553724527764832757617663191447376574967553456766766477
22773783213421372243853287334128313429291358633618737135995849895411232883385334113632131519634384213388489432453248335496439844523942453131246974472984824611695191652234399449644522474324262174549532449959154356435944651754195563415356424235718558319593572271621276334541155175563358543537328565164355116126546754615576286521667452646753534682966942161468338273238744565226628667446965464843967627546622723765786572668739763277856375786464579317715327257944938434985567633773977855717657595417873865
32783835388826512322333822748791512813231836221473735313641632332248423322825641253796281922493314124389494649993762343344493385981262392434294733258484642475274344335953443393675236481739213351442523549151575111487345445551449619237341354531584436959575358638545544616455441478634759284132446255363465126268622259845655666255172134845246564269554716168646974965665572756655258974586139524355736647457623737973336195676677736628324595635767537166582727975718517677668386776636918569724163546684775856
36333332143538265334338138248438463132888396237293153457119386283968393333194992472395113721313359824744444325464937644544924935954957424399941734831426456822149739417941444421511358341622483242446193585555543657514875565513514616516853541115284594253756793325184152815255553262246945273359435355721469666665476862598667662462572762796465222639561536486781443629526392636666437335715638446154646683257177777658797361977877357368387381757633374167264759789255473163741374777754844682674955726575779436
33833593253886872578318153326293393118344412693413133425351683163335173433331235533131354498694886654494461436499798368942926443731441422945552371452424453646279427444628454444234664424246551971599776551557254751181947915313755484255253315666348256353556475738153855573956555534577553535766218261188766266836586229215812642486659536636442677745936746466758684926496668416766664568866464687732937229987737794769733132692375359776164774755378885614785757786979513751777952787777567997757579884314833119
43522351793372923493358343128312593292427687916233451838138242668234344724859341421937183942934339225463346281448313451446945423942361431353879812734456294924935377934545583596145253214829415314544133657445739255942456255715653415347254246498192384556731513514648814565669461725636432593152642565524476855684136615356736682676452645836535751921349566784262462575992567677157283674754361426375367663558796679524772646784779378756375694764686213245167789537357368611367878826839478586547253748647877466
12546714362239711344438293621416839117851839193628335213333152831332113183211248279533139237643183612365782547334182245554931473252794122896294121473944632444426394244322429432235938164424134875429472347689365844529335666514258436381523391731523258415574355553741535543353154334614927553524598653158345879147695563144677762536954749263441284263436952668546666485264665446426544572513866463561976426945698125871667425578887364716585137455239537454716377965777759637577655753765568362497757467218753715
42358923495493333535239221923742143298676988245231522444331279393931485142361828321921512339137152635346913451651444464634133213485325431978719935634263355544238141414259625347293943213262344124826374645712456276255557574524432459643654218982114674537446665534925252536173645831415432437345523593748575682356738736666868563554356175476532919322578564855777664513636364728475694252654354845663461485968679346784984777797967466546728658764312143368967596688877562474747583958671536376546595677457259617
35435379372231222613583592314573969413272213635612112333531696832766143313961123125369823312167843324654648148334233372469461342568417152438332474672322344464271794387725442417223423647193442327895443576575925944534448357157245367952826354944358578343345557538281549883655352833453475821455343891655468768613615564555946826835647816393746515546968945445666864939265199476646394456458693256645491276657987972472667566615793794675892741485762665717915655677797514137621158775741556756971436775651238776
43818981833233921289333247738327523328456359953491992333942357256313513278138439131474339771433398225492919294434413239144435884943863443956746116451211344415346836742462438924954124258544188254441933651312131554552434125554699515497455416785722756232245552645794785357354913516523536965529936555214476242324266566354523666571162651856652789683386734335666375681589646846512462763464717663114766632558735343537767746563477768227376296776389179449784544677748679269175795762357387457582877422587774366
37823955142159333322862784113235663731472924174348452239149483521279362499444533341132578927168246584893416625326144443397389522434677484258313528545956334125159463238147351155564445224368913827935769591452773643725555441849163354578859536942463965616744523626157434925846226667555633547912493814687161256388475483666655295127446568996164715357417672785563473726854513695733777866674465812351492579827236749958659477776631623855767911727582646852878389667458483796562471684488897778557692346251368193
62357941371631732233332334291243193228997152646771871388347535435133211323255191338173296993463351327346815248274284334444344531235421433911826375788298249945864654624432243436621244928431711457446243845792635938539544555545564234653254412293748689931935115697576573554335454773235513954282256855735495681374614964165566665667534576436552331485979114214622671868768466544656588434662416539336796684651679248572517527667777677864568754766344259618122532573378297987957765576769954577352764144781779576
11612373193842262319343242446433939241792136113533246231588395222978146198458638733773297331181474562272348421495337342145435355754414135281324722464435734269941633318925721956974984488431844229258567338345953251644845325654646686552524639243583357554684537115274442913683216718519559954295533136967844945616436275595643676575779766363574135469446866579564822638555312479432782962166116531664424717895515672754738661675478768688187747468524657155797768167593374966642358154389317327722764277553582891
19213521126734373628312953643429166382155819381363843161114382361369323482438338589121243223123633612132463223784548473942316475453127749326692149247495427222549347247143459354944969123235433423474472324357433489565958415342758656423885143771325135851653833365145835825456146515517123434654453458558343546854459167616952645386976753499625488243624696276494447625694693656725762662823454576556456966945465796556127872716375649718786451173659935473571738751555873671571476783687377393456568766756717715
92641373963339166933913322233391657371363899523911453338729832322482315964394919963311134521994513451375248417444127714412443334441276848247491163412256444983194343359342617541512117442224563211562456248635952855523882552355444555238795935851227452336755519421545446145372865262322855333567432267356735974616396663499366346655566634981614696233856344786662153265655725648397637343396644467854337846784618572741777451147745776667774519272571734496745589777326437676683675941874845441775557896544895789
23319556387245362337861283367191147821836661441322561819971332939793883335747793224691412383489143333442166749835647344897239447821225893294777255243367292118244314181499444685881433571252349459125444455327785194675845591834155893233691431588836635447831322935542529251155579699254468236345156123655556643889621578695661294526691434471254269994774655894243314665363136226668171136557934745626723476666775499173268971677231563771254558236537111588576691535442577647424733777928224766814585673783458777
88333658333327448627332752327238234624391276442385373127324281155386537312152854585281334612192322799944476944443855973844386343834934573541238755349648423843539226649764842326396569639244572321343381115558715555496618495549745494514568465234986645175953495464133775187595343741767174135568343245449222666982666651772951665185651562567957634519775628616451657524488629861645485287828524667945435655133377719377776288316277629676267367816874562188673972756276863559973197275659639893963577815654676624
23333531331993933431648913332338914882183532173123889761151992176742183239241434112333393731273335393444464244211414454275912444344912599329464328423499187226211328785329434135254522344441484238444641455557535532252556538612355545512361143157543953451129833732243989643154524636563345555259534955575256666864664336366764972346665662347225426865416456223194484335419175426563574767445666636164516668636777797577544747787518345777677345833653797652756733421559544652128653767468587855677774727562777974
68364363176492776337284798367436313342336967536697923331132292313877894559378533292433934579333316357947547428751388744839581947854742445344717864771813444224331342498891566148964431354414568144442746815865853986249985594169215896585355645582897588292455533544245351991267725917554246552567925555385792697696419735119661527132691769646675669391869931356664465535646211237883612866535766367813666649681371871752184622177263824371287175778677141297114246777557664675732234899472397764687747892477775179
21743739393295589274941337331532734887928329933153739979412813197339121518113481329533232321224139913285484141431669138515244844264384599813943114426484118152392421844123262922459243164434343233524112439659525254277124962635595537549561192415422553759522926341353295523437313356135427554545434463522354176163636538823517374661664865167221352653366486163313745246431663454842446724653866565654557463346528727474764993462848577277597627833246376447759727442485635754277456595355783576497767676566857445
67343327383313436446139433379295332466312183156383943332282313812722113274185353182733334317373128637845443849442454755724154448131644357742329426749415444339342492383322438529646429384444542848423974895655495155356586683526555924275546885343153785152655544145351349443354963175753149555565395953418591676651626646769779463766613538665799645426489626376665525646245155446517428686425166667641616452961278776273775787188157487772464977681175653759173748777663675735626655762853979753627777875272756317
18513231627283733549512392135131448433333333781633673646621273298323567323265143255377637312129217772962434273839484465162341324624255954444444489274478475773238431943467843437625436648874842323132888317354538494159557627345243573536616555555559138558958688434954215457895454873654775998595343424399942846564951526166873845635468464772766666666124966916979954516532656891656598476588611961645453541115395767516263727798495674657957588387777777723517712718116562764376791276761958769972217275656465222
73372312294563426986235933993451685853253287513291313935826329393622732918579347145696335315343236828448342331567453719734614411456279696436439862431242414693743141473384312968145825671744642645434793955945344267856482184572552256738171754754197354235352571485425258449542317925693678285575375654581416615645537896759329568366336784928286586521846534646368259653636955165342813671478939668648676569252772675664891786143167947744789513939769763295764575747936176474716627645392478258914177975978767136
22242496928337593736131132333372156577369295333291322657167179228432396224139373213853992925112296853335351713944861484724224344448326768847131644431243376827828133954341733524148432496411313622331796444646282415597259583533545555943787995824275554235448793893924416545284463525954351752242473344281755575739352661836169464465666615489811693538666534655981491413552765639557463616546286335358445539286668684146377294727157557677772659192271464977764576619251252466387674166857472765739744646955664139
21845323538937153731331299273333132187392563215953536434347318113834271577332391338313237125988291623295643464914826484244231138444424329841367432616464754545842922494538268844341244942434823619931273431675457512593759535534224955553543195247854372757586565695313351564937995545235515354593472114238454278656862361486164664533516666465421635896548386869767671642446267514811665634662646561458322534956538976797347259727577564462777757653274691765949797187878275355737862592277674577375767256943364516
21255328438627319432992121457135124949963436663883253981178384142164523132418321773497433132334135473236643954973842154311323256824623515117454777499436419228949525327563424352943288451854424344524658434775416518495326542243436793573462622856588851154752133915163643867453546315439956296553545563576954588652762951643765335454781468457373396769996226586324412627475497856465742654116731766465667468716569976387316275487644656589257956848441787111733769743552373858651896757685376522784287757677857982
78879344428273363713133365985325124163345259549831619235253982332716233435933477552723922386937321628998145553938447482424447619643623527445636165194272134636419344382734454614458866383413349714843273911925666414955859353555872175473463855674727621538324574752145549384556572556997749452445182595438412213677752516696146466698328658457496678583873264943568586325665149566768366711885156355629361654952332478886362771725757771943976956851778969498437515467969743677625167787947782299626746673147276516
35112333323137986333525279333836169734396843728136358133923932923293866511732126113129334115425333744622344443424819744463638144494727184541795483924746924413414313431497762284323722423144522653644485573345555453592185557474925551583829565281659413585713552452542454251887339543483353425563376475559668445666656461329666858513666269493167639276152469682466356365356536299844165459446453667448758666177955677776757243177796962477737151427874138726357179357746747646764731195527656155756477855986977728
18936635121281992313331929397722666743223532866921329954822853312488691333373434329148392231819113332914774623239211342444213141883377785433464397713243116593396442359971244448454543125941334292122444312588573434132245355532425299448889654457541882435422761441755346118235555956565423615244531323355542369968454524335646664353631155999176556865299354653387255286645722934666616767653472635564243446665347117956563544675777546474226611128766797631146576449836639775683314577772787876458374667535455777
42613978719391163738972593353836354943336888877313942353192334349274545132682882663113528115282312385372418982141227484918361446494746515444799998842415346421344545138565624379399377422463922639342349648352919325233859512947255751585762655581111995352645753245565624967673548141148853357413374145345175946312143634496162315836686269687376669222211646375686435667673517878465925225996446852448525645628615742325474551727342694779737179848777133332275748679754677878462898957613633611755796355963675673
51733933436714373428313389565966231134143299371145133426312183821533335593333348123837171171311983386284414454782548453942449167617734224525431148225624453742329493264444661444445923494828228242219449739552556589365956415355127872884533563654225933673556485343151437555577255555613451593933935332155184166366769147616752646623898399564467476533614478466759645426254866668836666672456261414414644326629527747787125872786375773491941167557858764472558957786175653736597777994777778356737252552575543773
13449484443334454832719542433319979397222278622929323242216323323535215732341333435339396268332152362455159555444556594382165354442118141833338973313143435332743443464632684345244454644141737944326347356626166655566761549327646555322925294444918442425454644385455457574379545635556575525284815543745846773727776667787265143875766643313631555512955353656575549656656868548165674666768663639592665485695788483888777889837625498687775442474266662316646476768665176776797965927678577787977474161377659671
39762421843281343633691241552632363229537533932899318312122178918363391543411289417188432583946817134187353295439245474471235266374347433164864414391142942323328912947441265452239152829954369415792824529846431654135658558234637748545854427597552541225315343443912315855237656334126393116547152681393563195754276524676966934574885965696553861866365233642645455412342696634876744523741422765826379241467421686538763578717714568599617671766497297747634475375656652345371774598785563485253387693748135257
56991333563328356299231562193941597346389243722339694433234323322132258329475613423622835151393429346711244467443946731134267321415261845749135483344171554434543443324336943158672453473394626241453145782235557855415784224537843252637295685124659445528266554565455443544715426978356458441573735256425689334666896652689533564895436374831679623576155663937766567656655465582653718946756955268484636753679144577791776379164467591654748594278173468726677414887767876776657669376482915786716637959574786478
59643341825315351818215337446436233152971333226224393432695357843134393949483161438217862288813652366175445293642646292932644855754734426318244433733541454371646895424541415159427254932897339992476347728655631475375731314375596686584553742935554484465256548275791653565252626153836514391844111358745883976674258648684242548661779769566485314666559557636765938681276467636373726494762541295522246985699418778536975979535365977288187167759642577766166874787614979238757874748483751587365231663335719671
69256389733344378759267325923493323923312488225111332217229323356463133633435336331233723275218551217136749184445548986137843613451443413442359933622244332833143446757424474454644744234483438632966232824785129555665919724895472456255452455346114473335544394425455786853558556575585534559454974317734393589623166677612183591658356736656356645722558444665541553656689796466966768669664566156518542884541469173427778872329461276946784776746775683366955577665266476779181757717787977177567726762965399565
23173263523493728777293357333999239472117898453334891737262115543373432513414382687332635344473233813428437463451483988831446844411134158322891956444591284837322665448454362452549379844374645558434492453954857456259419994255795552224526943391216755561239594843377655956547356365148195548575666954551356416596856736152111536681666333563715441232786667234161595448876616765846747625921665968677716566246752761796784726322264779277744467482655234389777834527261655998772787695785873613277617978882767735
93139332344153692284486833211473647246379233474969292822517331272222835233461942517336218373833166311424144345526471339559794432258475835748134458517131393362844238333394634457215362844732948494427742253525545663758244166181554336958694685924556962824241447395534944441574556832647395584315951553885336463665677486935527729266544716971579613566717393535255841664515555268566794375841669542616266499644757477678859714663883137765582718268172467782841464636695277562666637967781548695277165372737751175
69728932623623835343493363383257792942411344381332317373454238913133331333523322425186233781932437327183914373473494645451447449436881315352245549244342848456534912424444244463443353629734489214354843829412548458451575656255855154799242646335665135545395956764512353555535557455446473184559132546595493152365956956268676736696626581135375744677624665641616787562346466664666856655758429566124365761651426347616716737978784771773769224648685578873577675272789867345757777577796776686953167723547687276
94114425634341359393321683179272819224172123323523145383113123139293661993484139621894339994362828331522553674545246141443279428138392133528323443463425649422423424131477211459524173291544111547393944263366478565635725255438153924941324463943455457453675153353453524258832256163528431265522265841415537447758967674683636654926413515243557415456656856478626446456463536994336727463954237663337695252664855886917878579474776513752462635466852656776796758973755756757464711544783857416534877444871636377
23836699621933338834538379267252799675732338271333678335561339315343234343993313485159611168595354333494771173214444994564948137836381178684344938244478944667244142645434545411442459626172227961646544451588228432555511567515924894749228979545514935558915577835525375654565652255356173728333817275765556269933954366662267862613591585133918165662514666912668894663648676567676336646728483944492838687666737114416547777337897372461269624412927677362577712377991577475978767878744775783959415551394979877
32333123128363222336324912781132194535165839595139399171835552179391556294224237721682784542197718444344423423947433344743512389224321564627694161624141128294666328141266731533534883279389565321882955545553453415854445585462349133543267573871527273525223931577743925237784264464599438149167643299316665666456452696555669657345124465437868498263838463633414268885413634889537557561154925127875431142777677756756371766677176845623557654897951937494957474452537999652474599164866867226513623898654225388
96333546233854863851363233157326692724537393922414345711228821332423123278625163222543323751332312761744465734496597496247434426843771383564841413352545682233993244353423438973627433365443486244342387285557684551761851735854553795488249467595252446365679334411435546453454918473854447655459735545349839666879566287296284696566481659935157861636355747678144552254665756456512958496555876656184665645194177798167739831739571767759276114626897274746685878925566336577686756762316951766698776729577675621
23128222472332341183143332334897473398483134215513134232851914732827341211894586531122983743942354323423933358344345229425444344591858441959424532662424534396212584393845232291569764223319485415346543453414446945545633153655545561296955216153564377353564541732369541495634331267187533442159652645765456452555715665674426476665667231716632726467548846467565284347165251674544237829864455326176375687656756366682677678553758777677834282774383757865995757867639545827636278565534893197556643728748679876
94433339212833117326253339232335533386333682362432221284513213439575313273332745693992132668423231421554444132394422843736444134344664449744479347354333239562432454168642438444385671411324377953434253266555524341553395484755524545577555185558145846544434167354356527975354955549678252243548816454536437766663545266441659586663565668866629666925695765554527846546763818646516665178936335465992756564754887777465637755276169777467677997773177713671687666563895765787492975762777628914744657611386767586
31413943893359358329331848332328951921335624623139517826994422871844376825433453499313779492638352344252415491446146943144295944343916213244673573424162893711553398295548793654456451142488151374946345536352651255725715425531615545412732435578468453527391482266441931665981476556756225359926248515745664746376236683682653664272665652384354668957956463841259337755214277619258766786733646113735962685677585748734779479376477538377676349546577916816757495236144886632538872136987789784475722484617379678
89165998157893331452424821991334374589391332339374375371373333925213385957783934926231193255834449359127611926891444256353593211244548569141244344148548648248444413632449616889414513734221436694555146123872213791255536746461432235565967125235545525965975935955552474355172799152562484533254771566625723498332481236664785757254334667617823634665663617618614616666358546628381126367359564436588267773683451944359234777589686836544577872893474577677472872972572777746965773949223747846167554769937888479
13973337129333223793339195512366727573988913352791415434633116639381149331934174843413883366238116322418444823144433481444121662347783868419912446381252654574422774149225144214528595452499447734922743352955593425554459255523277345889497952112355749236376568553388525133625532563961656351155884513385446316661453666556136663438845699151816322346685134748767966449963624473664367417276746226699562449655742777256477766724777454995671126292743345779624585987817755117473558477547852838785733771167355176
74553212244775743386343817832345423318398249132814392344289362332931394334294361397711231383213933438566432335588685449745492894345653442941935124392541345539147344314241544531547241882234249432414454967754344669979655185651391545676455315214623541365245664125845542535265564265835299334535154352556517886545577118176629676241265678756642632573465247635677523695665364637667537694631144564626546366762899765668822928773178735237678986775374368457635874678863471677647574877864871574225567573765747787
34423424823296222333335384482193333314383433213615623126991412592473124934373671873856433382299493264553453593431733344444649559321444442549454432472673423711252361358423514548478298496754449331151437566456461454284445555575166143255555365156554358378453482236347246953462565958931951786555144226254867756757256539555666668627725436666647626766546948956459334745835716457367616914216289766625533736597886786836764166677777973883654777775873787765715916756144585694682756847872712532739187773664484761
83233133363734331348833383331934234938743783774592312129928313122149223423732315852683173226113332229434424447484544245994449444214534514985489488561342323113942423325133453484342696379428433722444333154553555859565535611555155532564562519659159967245343422415353443624456459545371748153954483355544426566466696167664672266626664367567362176126117835645453352646455473556756165648285926416559446665553767757771727877578337773777547867847328723722894675656446375756658466786727675939613752766155777666
36172751238228316993483272332623328226633312659839277674314473124321345513333429243596143411832552284728386234933942711459438344373443933774442376194138878542558423543245662444453135461725452294366339583949734514415382256154945548455414488555348721524998965366953465435677355556424657283656331547744169415184562552649336726515665956652559966645983263511917647716457654678846666753576839476744265885527152629567366375144783762677616776366117775619437462212875882756876578995777786468794158785537699663
31122711522833139692843873332744324117131152223333332497693734357536674263673133668514323741134289634223382263394424171395498444385543522824226333444444351871484546864778537478424477962543485224539174533449337441553528241651955549665463393533744455555546298259565797588964858953558817365459633564128564455144855266463935276216665177657441464485556666665731936167681869917596916466992847656174467523967556625596637757414638732777628876855257559666777777684214727879297112861712757711395876728557863417
13434445265443293271231322119338282312349813336673822431312934234183441363483633229153336383132733552454555637655431438234243322144939342345192444778493354242314534529455247459474433126444749424384466356566674876654254934535443325514145345621355588951446535342564563156635856158554423755585153549557746767778598776536514564655443662525645673246669916255764645367567426774696726966553486669626465166885787888961988764762567576655477363675678435777112736687575647867853788571783717766459777173757627799
32577311331773133792335324742464353317861542352385595652713952376948934193349598924177337286331294714368842244288424481344643585357546442897265346349661676382416348715914521445161913528844839744231582547995335539953559245575469646865755391837645745177278749352745982612563255627212463995594185534269365811644664116466135668657175797686641294875685628838985146385619372367436673832357411661529664537147692275577522757724677976828681879775231598679673994919625749672148347854778494346852277263177564825
69933772342191738331522186136535863185238744724397134231218933449777236797214237968432435245536582317114488345321284944263329724764697429634985583541824534232914455188834781832534817954354635664769342822559945643239515537443183587571853174519669465293564534312556629994589294364592816546574677587145393366115675434162664855429469868296428562177157631467564542366773111569131547561392765768578869825641447722678654527377596653157197931753967328826874257867565347788422267124265867241387687968997193675
99333172217392333798939611893354633231332238457493313115215175744321444713638671291283166322439317591144428332841344481914172291446574434244334956851442422632628685543255582474978231239427743354142861225553944395245559212528331255768554535544516796255353374373979665436669358518934234153885446525397233666415541635666132363944236687966564665562781736646448548418177654777146962914534526499655763641834477752665274677724347415534779817767577667389284775755965952928876588825717312564563751176687475294
63393775282341393534361383174139328243712939762313527829641334533354529479331113451135225378983338957441488639345241464547249428524143935482314187342463893175244564446563158144222456224633648919444916855259974145635257565835153963525414659342529845357491428635567555767426925533356733574475912155512796636118525674636867694626417463652576145363195646851253974667866687853713664446784468558612326662381774722963678574797871573752857476368725647421675796236418577897779896482477555789557966972343777349
35638623837234313436312813242934228211913331535292413233143353733319313631311121211383421613222695294674973494834542454742392435314533932212444264631352434425446484442142474242223232249453272433371631578518451594565356585341354642564414332355537574246354553655759555325358535333434335156438354448274268962956261567646769645246575367552544346664868535746566476686166643646964644454544626754946555938537917316737267875787175635768647866365545777597964685767758779727775475717575556565573786515766614964
16718388679323282341811312626131244784328235939135483833531923637331273267873231333834362232311923122782949978143439345292242373724235589543934614124659494464213474844238437898434244494547334342213423389315118925454145631335348483534669165414572523576151557532458595534954891954535551565844545332453449142622913656525674244645959464577127652568363468726266864356961664516591216564666267695565644356455125373312476763678535575616157568823876367947457983737797546717277562761232767577737871667675546756
25628231121732282841782182993833493265732323623216332249926223283355382223239812288267885463383842273673934223284339395289329311494451437684343473432744335113733439446649333434192339937899657449495338478414533439544141639143142251556254879545458454385544622484454155775144454521344114891176855151644958952564454165525274125425336266736598165656956549665573359556526688625556563245522591228796626275516916367556527663638523653644737784761927676716765177668446166763779973666767435663361233981773738662
79229332477325373433379343181314922328628231642155214936739193273137439381132324374214389858233282938133144358843648454448145429242513343973934275326632514784121438424854149224343548532549196934439314924425546995475956555925653135362445418414538643774362589523254953596525133545465964365121714554142513553665711658616766613676424647355652952564975488547369163436516461763624465657617547623282566525362466477682276972787772478753575846676316367518659965847127454762757287473557676872865873439367763647
55225353449423243533373128428261247342482284793229888373167383347193864347314323637961335298253444416633646455153435464448423953937235845359339581433199948427849445821497545842543474817244631936455552774475756626454657555953416414834695646144169254421115953895155693251865695365458592835574214756666388558686773756576866616452752594571675725527136553222616491626671436297671647656961394668532586777749966979788486768797772756386361568278683663824766433372751273778254731878275876717241577964369788885
83833981421338271853233262917935232567741322149475373121832714113427719381213396313234114423227238419494419253244938296434437312814634367885243325158648423294382522453882149232441742434522553433834952151552136435514931754554842392574547899635443626975953431549363356499325134355285354563366454494516326266324754662514286566595341368565891174655473718616454265147446751143624546639646567447756551562743737743586577362539767761645247967691228576658482972756537625855786225473565774175767855886766267385
39939791331399932322787982215491324599451212121981133269229854326179454233151335941294393318723533934114181244241114343389819332651243561156232323219224437133196543728156534426244615231541442983464414522529235535222545449192144376235467226734343432133554824421765483926764553735572634265255319457552563363134664633365655121325548734657833784545454324466593553287659413787566484668374537636642156866367447424577574447676623243665984576894489565656543557761466439876152489867759577948564874775326797747
38824984253345886462457279398363332431683621486239153281529283693118232494525632378369736462113282444993519536445699757356838141947444354279473259734126439263139471422934351563674348947184757322439355511462164755671186846794925215855546538158436184523754137424158253314546267478545915829586843354146662257327586678229795781513632696665764926954729563486524853526936442565737858965612693169795446525777336843869778933181689262474371777687513716583167459763596463714755367684896917672371427181655763688
44889339132553348339136175672729732233683332247973126252954491322322353333113318527333293599236336155599144124366445944124728678383184334479444335818423736316551243343346444422442963844431461134744726661125523547755615523583978949429544558155544692953484742766235445445755553355317495554257224585583777223663465886672663469418915153165566926665571316459585387734655655686666446642851666536833569669488833477457699778377457152912626427667713777668242756169649884576676679777755775396277764794467177159
39311392447464513674895336229135385239732543136471736251238913396231317423523753343133128844836236134142241355857562478591644733124649634184365424758284736234912441734242853463486445424423995594734724525335246696867358961275584423575174529547653586939584734512355284535396457459755653553411661584583563644635771797846917238669553468628563165876469714169584562346639564641756856186676466452277269569467475574688281895712834977166457973967427698757182527169567345774167575286796729778757756338837167157
33292339336422713476242937331322219221613311439474991373993333242283332257638433345376377975336831484431344144753382458735314844243332133272442254158511248411444435339444336874954445648748818644794259554245525586449356984642595535444324438355336526962235952255554644155544798516555675985992975581536166535663669755146719575361664655543554946644763717334616336666575526665581962766678619611318669264727764677477186625782168647277576665466515775587482844572744777768663777669217387778972172242977137583
23353635219692832223726383443223112321235344833323397282121832214393389333321972342334633531296134163446474632171394333483749455433422343234645594443441839323294332541449144443218345344574464231724527455758574328241544459485156654453345434575661555455294143431544365255125555432945645568557534283563856686968543935265556159626776556445654568677266656631525454265547636623666654315675667966864539467496779717965414637666726173788766755676567978837776774263656537665874773477776542678677817797564157851
75345285332241633243883524395674262984128533334235223332413433938482236971388992134634588593323727218645639644335274435499463541678537319523964444534633444352454414959334718249911324574569961443483832975674175544638554651157465278964842163417555564574455546356552516144582935112243568567117255459494318678528665574966576226857638917595327452866667568556665746766362725569314622335467967822836656151542978963977668517768733796874912861643856397777867966777685787747383667142573344657817893394776726265
76311953319422337356353339137372351931184532151236448193432391995371591987212228526513315381981119438742216442153344846746444124848346214229564326234755921454341211648261219832333963762442649219222154985332755326445595785755523595945732533167543734586613256545232275937232194344417487355375132133326519644386643755661689686663461615684364427865484569772436765634338614834321545552859846648624324443762175549775486677279179777457272679547553897659567188354787674544972594543265666396195775973543555487
31996311887923356433122982822531139238382144313252598811283235393325438324173911536182384237333332634211742299813446754423319393364224134949325542436361992239434641443654943528412264729349534844444374532285331192455786553442141447533524515143665354747211334154575255476515463952337583145164595555548564339644221356689766455325255864463562625477646585832244526568636658762657416344869425627561666665967544175533246779187756643636697557467373658875769694335563767974776987376852745597153673867277777617
32363733513346329313313267321285137682161155892253343733735621323663973743934244369891931892269391694347484462445743142442437843239624879327226691336445484484673243477418485414535547191214291337141271545859557355685425355354895434173598143833771244755659559578435458852959652564665821232531244825238265696166846679653646646591654528461925494488235586676166168954656996316176367577693234364235593634937671727795778176475775761276563957213651559934669778727727916576711742728747868871434547534661474514
62213132646321958919311739373573733437933835529663633966712251982332211347933963127419558836148469267332424375743216912142284148468484454814494663177474417782336219344332245814417423852166994725957137844353548685432712325339525957959556592551577428858552889344732145544335692552853496327711583616824895546465979654382343644163616816166761366268853996966399145584325665544671366396451743882269472793591665757618176549345475527472792727787247737996411717741125669543677665578247741756285499337158381461
84497743523763427257151334929317265633333844593745791433223963132518174628224769632917119432934324739551885463487453836826244513142837674444495561485681254433417424362928573933587174312822154314543584166299657459856494793735562425394878555551667259679236554452853547313968414469828542393326542565469527731176856196751581484667353641598966666277836178134766556396465842417952557193965341443765367657163884228796721786269259577846475261917777738894728924587766741757695352816366821417645255487647876827
25583116453727964983232215521333431763769549736353133454422662947351333833352183436533344249995336533669422756483817519434332663244454287487165184746424456553377315846244494446329454764445535111644764477153386759492862154544377435556539859827629585753556766448842695735551555743156587555664622275587558826449786151397326565548854666764196193873169686466787755995371684666266685426769866677573338669866993755189726241843767665996577787521721498427179757789886611648279577737779653787197778868444977197
93534421113145433731478222933952625714395493433233233514372334383299459233226175912224945133722293231464553222425654484258933314416373682541651454434434462548344549431156134433728612333515624483331434257566433353676559536914442552748479365276256554554557365945565154226724554483972344462673559444254536867754446478766164712555366385958147638736766566566847615667626533783566559418345557378466155536564797886555758987727582366647749616925874984787767767795872677873764489467766152945666848957726664767
35258921163338381234196472725245433342783443383438138293351321462324577454693329846738533322648348114636913227444949234521758383635654445389455449454924931446243257343568856571443195784964443375945922574712433855515134563286949474676555649156655156513514255735436845467996768255421689517555448615613368582354496662624567439715158578766675126776626762462536684654795657811787936653279162866655972672447969346551777373567854182626968987778623788773787357364779576581676892289814776438127397776618378355
22339229223938113213919316464911732489316463933276334539133332973931335423383121713177892937488633313344133133414922432412142757512284359142757414438744564124444318414244653449423282428891314859974442445524424452513354352325386862339546125386852554985567523555542952535576455153439353991242596118555355663553556362446546343649797344165723649796366519667863466665316364668756626454146411235361722966646677466466747355765745475181845527683475181747762177897457777642747577986773756525752234647283317775
49328613276352443119352332349345584533862236143335231121132323643325323619377379343439223441322713935143972438746355422146344345145669564497334725444634223224343475443643472148848145454133455243382414625418354985746653325745545625677167551844583655574533433545458655475458325995925656524456635449352573652946519685776443685665673678827866295569476668564454465656976658656943611613676763556774655146368476315762179688755479677678478993897731667158777967556557676718776976715472272478787466788576625747
23255897147443423121326317322847134633136325123984675223727238923322949994227334319123362282831332223436691825855453423243742843395824574424743623419578633483834913443315111533844542123447339394244333454771293696656453435485395441693568553585473452168974459494512455442622264495565323455844141535544456588231471776756454659641655271467966469658456327918556151562356655373337551667643456695525264665556769934258288786756576175276638257817757176956743812966726267346776648444866277875456771663637577666
23423379952353133223991326233122753933987292297334862573255671859947833261388618549717364483533378313453448116346424433411243734423386414419831331844597368436678296115894437249972965182847559464448942456455922745753554452235484553449752552194244295561847954778931722691554835118317629395866157555915356756613385686466556334659566455186366321535531667295816588914283371266594622942873141697726866612646786772449679757766744576167756629747743264664277831692769912539448237761573315398425271883797772375
39321824332691271336623453215212943586133189362749699446229223937283132189723842374718351949224833244143293544371238244773456432632315469724429147385171155733133414839424329183495348582946215133594435525431465548234935588456754374342657183553125849628226684424452594153543129451645969315732624461554663654257665934514669956786548545376829466423695173933779553556361526465423156275617142684373557266577476536877614562577116789765965648793157753471628414488166466747263757653426738672825379548466837768
35233226231773353333712919433213811513881223835353376771878285834222496868978113529118877821613234844634433734288446444482312154432492262499233494646448788298939694533351797918922463122998893272434595574554484539955755559342326554351337351134451575755989931914171564446281812913357423311991438354561668566559564116686666145343766546244846224556268686619114212528267555739292312446853442211254946567277967766167522779777725645487765735595733566737979772122532363937866684131342355796455332236515767838
89731354831434753261122321131364357337632321371296239832423822981883528177314393132433723375383344889184246594254586437223343224247546844874343248231734194353493319299463928842541424354483448649445599129535761536569754833445433535865795598545435934284521546451442131157413995365253546559455975155661123164687264767186594455654464697681661965654614539563265756255324226852411647636465766156618626677223427579837587829761556676557571879277217676572564167437686736643533796352275874757687726772973778833
33883395562321211339535173517419535139115242332393326233498311327459737419433632155669413153343153134499441667343232244164628462852164624122635344341443734451942243856184852154474326677152426445426424551155277845434335527573957396327573523374645545255484556215335496729596326558543778826353755653753566226638895654544663868416841743868463448575665636659566732644651783161743766965488993746486676486467733774991676565577497952795285497957455968677674776167784375576289427285487717659911485759778759757
22393157411392317994321142738326669832448365213273321333255513561932332219313234393667341319898233833341426852241342811543225384943777194355947632438443244436662467214344332142434541477845242191934494445253796335245392265433649515488821546615874354955435554777357832545544325354565258895635321214551555636481744635641337654475162659993265772698546516654666588846894365665543646567636991674643232566266674759285574675244876558627376111437688371965762776577769995791547677665475767874711278575434367737
23534319389283793233887843393352711276834329733241631995712434354689927332952933914443286743937148113464542149139481434499895441446382238794543184435274211682354546579113844316314412555439785414825922457565325124159254551191655255749334981565429554638532279346565768122495542742552366654189652593613356867643623526136566221276636685144519267653166574964338145767687923351665385366347776529176361472446797875473463724767733238774779625562137876427768517544925687879813446277649647745888763128747258355
11827363282518727213126233126858941324315844343226933334922625321591123155343772597713242533213119122293847439362983832423734423796915243542695545433714444513373643261223426645488361882435364432422123331495854147319494353484553481712635465371665654482555562448475437233453775659947299354647554353323444251696525842151546459566459282374657648277676559366667355958654834456488676115831146575866546443455536271763695326265756167756139348576875938878766147777846616976594556759978722694225768697765755456
38392334235713533323326539161351531231388134822231438393336931339911386125269936274711314133882383384941344534682464443443764127246264234249924593334254941444714244112249723637114738582242524499349449515245564579357555455487523835737534535113561444536515255582535522335183474822584969335363551145155162635667568146866656659863494684864564622467255564762636669364663344629458593369517144647466225626627374677867925797776776197451579597567573357836667587374777147577445573156961447162825575857733673773
72921766372522413239387672132861231672463391341332333193237651222333172836732365451398946734623733638313287748363352434149878324397234278357441245244344421434876233344428394784347656241915784573484474942439885947446354525198943541834538946855235635545553254598734445553941589545876735212689568459558515354199615855746563621915465294564915796634674665666436561984555666415269165698784632379167956166962646521172696685767473212657631567512681774578577677754767219566677752637127671989574348127816727717
82164442343192344243738145769794844634683651645244152677176848254952444753611454974844433291441822849327555345421345535484925687181595574579476275635526378828795936516355586472256518595554431255293395143866645653245664659513679829261668568158738674663748993981614762746669758336762961666554236631441625497775676435677576162478193137277967926984978577485911419272587385777186944787317277766534774255273651888678754678868727358921424838817813719518968859612252138369849688829715589842838887764588536638
63231347345838229544445675278743744518653942112347435222462897444324342447447143433144163243353923317434245845694933165555678638985485562976415322345854633357391855543545355855825454425527435446413442854535695671514427666678974919659667318752643345696574446841296665465646696693656553663854655752455396564671678262553877778918512176177842986375445671768555795231777657675771771476766477496576686356641767578278937366498888912962328728895319748655678287966681634288876878688288258787758851768779746775
81353881319224334643694412514444449495866173949741293446924259463291287696463651431413249695644434869246499242133544575471552362555555151697728415185231455713536157431239871757476254252435171675554597135751135324465568658266347366666626271883952629634256682464726854234198286858736536354628278666561824686224643557667976937745847777773738299416373174536779357583796534521939796984764746573938977767293579733575466877818714885695888888484931152748428564788146869481764563214181719587585768414918887831
47712325941444647836717414925849296314535845214543895297414594241934243183254224351242484933229481235882343615255575894782852513695131742564695632565491631852561535214535429436533546235359514433159234699345472636668691589396362471624285367571674367651274296367264632564653154764465734646162554426134571145658374777971269141747358273539647868278547876238531747837574367576426587557684575727366553724568225676948588818237125285846938464175897938965898734964285894868547868753769866879568683847766483567
88562233196343214343521428744455937518433333817343146658354815337947447454324442444421148443152521159967334421745432545463253985556614862954444492845425776946592644815855856543555355553225955426363226117844553285654365657436419666772597316555551395653688715761375592696696765466646666433616653747433722895566439676547676854752177788361842766666241676479982687248661371771787657775777754472776485854483391667754178765878796586328889947295387777735278758119379835977248288289876888688886558388759696559
58743452934261422861554442334564523457393155486319724145944642643546143667127454616599358124199314466985456314537253397266555344567563456841426659742183525615575375465725477823856572761146923521142557719656742564836441837766645567867456795253776185329463672668648657683658893496768387225713463225366882176785367594755294887775667897856781636488729643157478377975976879476991451787949833682457433647799328789647861586631599888677891896789274759983175426858948818618798158711256289815194479356854475881
77963262942949451554922536338554591725631325134414744941262383274685764232821324148454573636837239238817437315315156266513364744966561283674243624552585515237349438579687534393243525956568474794834134992854842642626737762447585517767239478535473566369662634845154968179864541435463616767958581594524511396595375373784887355869662887834158964658467747177374595626517928197565254657472787816969261563562241761648648489599846697177399894526917576957885828848561673762813921867636576858389892717137267467
16454369535467863352392733884415334441138454753649123419533364949484864143515494833446352635744432332756547164657897446341384499552644555224956586475123452164447515159597525462651594455746374685554344386765827576891855745249551166375566633516769758623456327555862626161863657376261556685748579666545549787693868791296685635166227748667774462787186973456743866697373727297476848737266779685968177765665189871497981231779674627733885977888557389829718456785497771848483831858795984837788179617928887677
46412254734445422883461241443135833696397424122294812844315984243743397671149432416342291234334331445752336584555653399457235255424694471741853523331592395542619535485441878225154352745331234544544255686344769566676441156834636653571558285296463444261341665372164659655298933626546385644234565565536679745587167778755226794574776468266939631757455537245277648327576176631914473765749675534567667664778185669827888986633781568588757937714174286856664835638875943868728774212558487685178664567877877588
33884894324532483354964398445239424531312469744729848246116951916522343994496445224743242621745495324499591543564359446517541955634153564242357185583195935722716212763345411551755633585435373285651643551161265467546155762865216674526467535346829669421614683382732387445652266286674469654648439676275466227237657865726687397632778563757864645793177153272579449384349855676337739778557176575954178738657733834876897683779841874388967486897575681428826438368155149545196678744884188966828768616528984976
43894946499937623433444933859812623924342947332584846424752743443359534433936752364817392133514425235491515751114873454455514496192373413545315844369595753586385455446164554414786347592841324462553634651262686222598456556662551721348452465642695547161686469749656655727566552589745861395243557366474576237379733361956766777366283245956357675371665827279757185176776683867766369185697241635466847758568734848184447216787788847739435616746878648277693838186829628788779497887747129671835274657795886967
47444443254649376445449249359549574243999417348314264568221497394179414444215113583416224832424461935855555436575148755655135146165168535411152845942537567933251841528152555532622469452733594353557214696666654768625986676624625727627964652226395615364867814436295263926366664373357156384461546466832571777776587973619778773573683873817576333741672647597892554731637413747777548446826749557265757794368288888769818472188988468479498492868744485278375861891366584274852485888865955793785166837686881547
44944614364997983689429264437314414229455523714524244536462794274446284544442346644242465519715997765515572547511819479153137554842552533156663482563535564757381538555739565555345775535357662182611887662668365862292158126424866595366364426777459367464667586849264966684167666645688664646877329372299877377947697331326923753597761647747553788856147857577869795137517779527877775679977575798843148331198848815871844243713486461887275885866489996725896868897181624862888163898888678118868681995425944221
54633462814483134514469454239423614313538798127344562949249353779345455835961452532148294153145441336574457392559424562557156534153472542464981923845567315135146488145656694617256364325931526425655244768556841366153567366826764526458365357519213495667842624625759925676771572836747543614263753676635587966795247726467847793787563756947646862132451677895373573686113678788268394785865472537486478774669817781635883757895881489867486715875797324356278891648468479722478989937941589697658364859758988577
23657825473341822455549314732527941228962941214739446324444263942443224294322359381644241348754294723476893658445293356665142584363815233917315232584155743555537415355433531543346149275535245986531583458791476955631446777625369547492634412842634369526685466664852646654464265445725138664635619764269456981258716674255788873647165851374552395374547163779657777596375776557537655683624977574672187537156719236982778536689998475827696248566341648565827488176888861748688766864876679473518868578329864826
53469134516514444646341332134853254319787199356342633555442381414142596253472939432132623441248263746457124562762555575745244324596436542189821146745374466655349252525361736458314154324373455235937485756823567387366668685635543561754765329193225785648557776645136363647284756942526543548456634614859686793467849847777979674665467286587643121433689675966888775624747475839586715363765465956774572596179781457895195888818178577657839769875423254479178617799988673585858694169782647487657616788568361728
46546481483342333724694613425684171524383324746723223444642717943877254424172234236471934423278954435765759259445344483571572453679528263549443585783433455575382815498836553528334534758214553438916554687686136155645559468268356478163937465155469689454456668649392651994766463944564586932566454912766579879724726675666157937946758927414857626657179156556777975141376211587757415567569714367756512387768198183583778677726814815786913852596873776828126766788818625248732269886852667867182547886762349887
54929192944344132391444358849438634439567461164512113444153468367424624389249541242585441882544419336513121315545524341255546995154974554167857227562322455526457947853573549135165235369655299365552144762423242665663545236665711626518566527896833867343356663756815896468465124627634647176631147666325587353435377677465634777682273762967763891794497845446777486792691757957623573874575828774225877743669846454648878857674588879338487317887491281551895655788859781371286816873468498568693988533698885477
48934166253261444433973895224346774842583135285459563341251594632381473511555644452243689138279357695914527736437255554418491633545788595369424639656167445236261574349258462266675556335479124938146871612563884754836666552951274465689961647153574176727855634737268545136957337778666744658123514925798272367499586594777766316238557679117275826468528783896674584837965624716844888977785576923462513681938347851169761588887742734966878122838693757963989491778569594817673582795599918889668713457362479214
73468152482742843344443445312354214339118263757882982499458646546244322434366212449284317114574462438457926359385395445555455642346532544122937486899319351156975765735543354547732355139542822568557354956813746149641655666656675345764365523314859791142146226718687684665446565884346624165393367966846516792485725175276677776778645687547663442596181225325733782979879577655767699545773527641447817795762781359683628638778888788975679865877455361729233643684489318198168876687871165688463875255892881687
22723484214953373421454353557544141352813247224644357342699416333189257219569749844884318442292585673383459532516448453256546466865525246392435833575546845371152744429136832167185195599542955331369678449456164362755956436765757797663635741354694468665795648226385553124794327829621661165316644247178955156727547386616754787686881877474685246571557977681675933749666423581543893173277227642775535828916626783865849772786589879799298858579635768266818879278614485177753469265491428438833875388664693912
21324632237845484739423164754531277493266921492474954272225493472471434593549449691232354334234744723243574334895659584153427586564238851437713251358516538333651458358254561465155171234346544534585583435468544591676169526453869767534996254882436246962764944476256946936567257626628234545765564569669454657965561278727163756497187864511736599354735717387515558736715714767836873773934565687667567177156576817667238983827486751829897562284761146584682849862666984782682587894798488414567679877867828826
13752484174441277144124433344412768482474911634122564449831943433593426175415121174422245632115624562486359528555238825523554445552387959358512274523367555194215454461453728652623228553335674322673567359746163966634993663466555666349816146962338563447866621532656557256483976373433966444678543378467846185727417774511477457766677745192725717344967455897773264376766836759418748454417755578965448957895729683852888562258856887778885621383682845517856691888437548787794786152985956552886668917655916891
34421667498356473448972394478212258932947772552433672921182443141814994446858814335712523494591254444553277851946758455918341558932336914315888366354478313229355425292511555796992544682363451561236555566438896215786956612945266914344712542699947746558942433146653631362266681711365579347456267234766667754991732689716772315637712545582365371115885766915354425776474247337779282247668145856737834587777886511284379182788342674882365669347648222699687712646553688758535844888139335877925696784894569888
99444769444438559738443863438349345735412387553496484238435392266497648423263965696392445723213433811155587155554966184955497454945145684652349866451759534954641337751875953437417671741355683432454492226669826666517729516651856515625679576345197756286164516575244886298616454852878285246679454356551333777193777762883162776296762673678168745621886739727562768635599731972756596398939635778156546766244488821488887399427388731787378478927985673299784183867387974661184218386761741914174688926765787735
34444642442114144542759124443449125993294643284234991872262113287853294341352545223444414842384446414555575355322525565386123555455123611431575439534511298337322439896431545246365633455552595349555752566668646643363667649723466656623472254268654164562231944843354191754265635747674456666361645166686367777975775447477875183457776773458336537976527567334215595446521286537674685878556777747275627779747888818688655858898629456888788456944764818763867844532661655763239764878579698966788885838673888185
79475474287513887448395819478547424453447178647718134442243313424988915661489644313544145681444427468158658539862499855941692158965853556455828975882924555335442453519912677259175542465525679255553857926976964197351196615271326917696466756693918699313566644655356462112378836128665357663678136666496813718717521846221772638243712871757786771412971142467775576646757322348994723977646877478924777751792482982863295733288374935482398286889788252318225357888668775786843345911583418875798858913588886281
32854841414316691385152448442643845998139431144264841181523924218441232629224592431644343432335241124396595252542771249626355955375495611924154225537595229263413532955234373133561354275545454344635223541761636365388235173746616648651672213526533664861633137452464316634548424467246538665656545574633465287274747649934628485772775976278332463764477597274424856357542774565953557835764977676765668574457639838585875114573959688388618738944357487558861838553596746865388567616466894687518878787677968556
78454438494424547557241544481316443577423294267494154443393424923833224385296464293844445428484239748956554951553565866835265559242755468853431537851526555441453513494433549631757531495555653959534185916766516266467697794637666135386657996454264896263766655256462451554465174286864251666676416164529612787762737757871881574877724649776811756537591737487776636757356266557628539797536277778752727563172389887384886898299268598883575188792286764861284859888774786846737766873964181864738888986383867428
29624342738394844651623413246242559544444444892744784757732384319434678434376254366488748423231328883173545384941595576273452435735366165555555591385589586884349542154578954548736547759985953434243999428465649515261668738456354684647727666666661249669169799545165326568916565984765886119616454535411153957675162637277984956746579575883877777777235177127181165627643767912767619587699722172756564652226416878627374838819516785768168699498888888834628823829227673875487812387872169871183328386767576333
84483423315674537197346144114562796964364398624312424146937431414733843129681458256717446426454347939559453442678564821845725522567381717547541973542353525714854252584495423179256936782855753756545814166156455378967593295683663367849282865865218465346463682596536369551653428136714789396686486765692527726756648917861431679477447895139397697632957645757479361764747166276453924782589141779759787671363883786775912897254278158855891624141871874316875686858147287585827738756413589369125288186189878247
33353517139448614847242243444483267688471316444312433768278281339543417335241484324964113136223317964446462824155972595835335455559437879958242755542354487938939244165452844635259543517522424733442817555757393526618361694644656666154898116935386665346559814914135527656395574636165462863353584455392866686841463772947271575576777726591922714649777645766192512524663876741668574727657397446469556641397779795257488315838268668788883761213382575188875687721362363577498785277968583876841855757166775241
32956434649148264842442311384444243298413674326164647545458429224945382688443412449424348236199312734316754575125937595355342249555535431952478543727575865656953133515649379955452355153545934721142384542786568623614861646645335166664654216358965483868697676716424462675148116656346626465614583225349565389767973472597275775644627777576532746917659497971878782753557378625922776745773757672569433645167649187818458361838688675573888868764385712876151818298989386466848973613388785688486878367154475627
32366439549738421543113232568246235151174547774994364192289495253275634243529432884518544243445246584347754165184953265422434367935734626228565888511547521339151636438674535463154399562965535455635769545886527629516437653354547814684573733967699962265863244126274754978564657426541167317664656674687165699763873162754876446565892579568484417871117337697435523738586518967576853765227842877576778579827671187498427386598755767691368167959552898222844871854663484969762917868796487633895398868788968193
89981455539384474824244476196436235274456361651942721346364193443827344546144588663834133497148432739119256664149558593535558721754734638556747276215383245747521455493845565725569977494524451825954384122136777525166961464666983286584574966785838732649435685863256651495667683667118851563556293616549523324788863627717257577719439769568517789694984375154679697436776251677879477822996267466731472765163443589997473882836868882154187167962889171519548626578171854788736278898158893311737857784258387627
46223444434248197444636381444947271845417954839247469244134143134314977622843237224231445226536444855733455554535921855574749255515838295652816594135857135524525424542518873395434833534255633764755596684456666564613296668585136662694931676392761524696824663563653565362998441654594464536674487586661779556777767572431777969624777371514278741387263571793577467476467647311955276561557564778559869777288166788887868354288817173588848262538985249837468281468857858757875842216638767266867588966197188839
29147746232392113424442131418833777854334643977132431165933964423599712444484545431259413342921224443125885734341322453555324252994488896544575418824354227614417553461182355559565654236152445313233555423699684545243356466643536311559991765568652993546533872552866457229346666167676534726355642434466653471179565635446757775464742266111287667976311465764498366397756833145777727878764583746675354557776458228167674655786888657585337722239877818742257687551947741886794425688883898987569485778646566888
53724189821412274849183614464947465154447999988424153464213445451385656243793993774224639226393423496483529193252338595129472557515857626555811119953526457532455656249676735481411488533574133741453451759463121436344961623158366862696873766692222116463756864356676735178784659252259964468524485256456286157423254745517273426947797371798487771333322757486797546778784628989576136336117557963559636756739726853436585662838453715881848281959888244443386859781865788989573919168724744722866817466174786784
62844144547825484539424491676177342245254311482256244537423294932644446614444459234948282282422194497395525565893659564153551278728845335636542259336735564853431514375555772555556134515939339353321551841663667691476167526466238983995644674765336144784667596454262548666688366666724562614144146443266295277477871258727863757734919411675578587644725589577861756537365977779947777783567372525525755437731638858898236983897486884512152278668969875583669168897286764847618888115888889467848363663686654884
24551595554445565943821653544421181418333389733131434353327434434646326843452444546441417379443263473566261666555667615493276465553229252944449184424254546443854554575743795456355565755252848155437458467737277766677872651438757666433136315555129553536565755496566568685481656746667686636395926654856957884838887778898376254986877754424742666623166464767686651767767979659276785777879774741613776596716899594999888991948736519798886553585377773427757587879776287887818176138789688898188585272488761782
41873532954392454744712352663743474331648644143911429423233289129474412654522391528299543694157928245298464316541356585582346377485458544275975525412253153434439123158552376563341263931165471526813935631957542765246769669345748859656965538618663652336426454554123426966348767445237414227658263792414674216865387635787177145685996176717664972977476344753756566523453717745987855634852533876937481352578532797649874689828825679611728782877518318858745586486767763456482885619896674596364498714859246368
67112444674439467311342673214152618457491354833441715544345434433243369431586724534733946262414531457822355578554157842245378432526372956851246594455282665545654554435447154269783564584415737352564256893346668966526895335648954363748316796235761556639377665676566554655826537189467569552684846367536791445777917763791644675916547485942781734687266774148877678767766576693764829157867166379595747864781255688812887481275578612765859615389284579837788525998878987887768771487593126897827748161685897589
61754452936426462929326448557547344263182444337335414543716468954245414151594272549328973399924763477286556314753757313143755966865845537429355544844652565482757916535652526261538365143918441113587458839766742586486842425486617797695664853146665595576367659386812764676363737264947625412955222469856994187785369759795353659772881871677596425777661668747876149792387578747484837515873652316633357196711529889647186181646476188399298278861753688877277985898725181349868985859594862698476342774446821782
71367491844455489861378436134514434134423599336222443328331434467574244744546447442344834386329662328247851295556659197248954724562554524553461144733355443944254557868535585565755855345594549743177343935896231666776121835916583567366563566457225584446655415536566897964669667686696645661565185428845414691734277788723294612769467847767467756833669555776652664767791817577177879771775677267629653995652571284538889983431572387157895887857886794477166688776377587881292868828898188288678837873176411676
34284374634514839888314468444111341583228919564445912848373226654484543624525493798443746455584344924539548574562594199942557955522245269433912167555612395948433776559565473563651481955485756669545513564165968567361521115366816663335637154412327866672341615954488766167658467476259216659686777165662467527617967847263222647792777444674826552343897778345272616559987727876957858736132776179788827677357863872817895837433375881388855578593766345491888945638372766119883898716896984724388728189993878846
14241443455264713395597944322584758357481344585171313933628442383333946344572153628447329484944277422535255456637582441661815543369586946859245569628242414473955349444415745568326473955843159515538853364636656774869355277292665447169715796135667173935352558416645155552685667943758416695426162664996447574776788597146638831377655827182681724677828414646366952775626666379677815486952771653727377511755868588789961825774994248876693829379283578893952575747716388673777748178892659716388276483848862286
71839143734734946454514474494368813153522455492443428484565349124244442444634433536297344892143548438294125484584515756562558551547992426463356651355453959567645123535555355574554464731845591325465954931523659569562686767366966265811353757446776246656416167875623464666646668566557584295661243657616514263476167167379787847717737692246486855788735776752727898673457577775777967766869531677235476872762537458727827848189895882884871335759796689984688786383891978456868888688817887797164278834658798387
15225536745452461414432794281383921335283234434634256494224234241314772114595241732915441115473939442633664785656357252554381539249413244639434554574536751533534535242588322561635284312655222658414155374477589676746836366549264135152435574154566568564786264464564635369943367274639542376633376952526648558869178785794747765137524626354668526567767967589737557567574647115447838574165348774448716363775966997128989681585887624863573746577963767887817869184866867868575822655894968527645988555982747488
34947711732144449945649481378363811786843449382444789446672441426454345454114424596261722279616465444515882284325555115675159248947492289795455149355589155778355253756545656522553561737283338172757655562699339543666622678626135915851339181656625146669126688946636486765676763366467284839444928386876667371144165477773378973724612696244129276773625777123779915774759787678787447757839594155513949798777848225527658888448918483572371735523138788473688823488112688586189878989855886894161526662415181988
43444234239474333447435123892243215646276941616241411282946663281412667315335348832793895653218829555455534534158544455854623491335432675738715272735252239315777439252377842644645994381491676432993166656664564526965556696573451244654378684982638384636334142688854136348895375575611549251278754311427776777567563717666771768456235576548979519374949574744525379996524745991648668672265136238986542253888788867867482877788287956734668765918162148515168585563648111763585611275977978337624734919765336499
17444657344965974962474344268437713835648414133525456822339932443534234389736274333654434862443423872855576845517618517358545537954882494675952524463656793344114355464534549184738544476554597355453498396668795662872962846965664816599351578616363557476781445522546657564565129584965558766561846656451941777981677398317395717677592761146268972747466858789255663365776867567623169517666987767295776756215288819278841942841682878861387225737918385857796989136677447688797867873427162877719887831688786732
34239333583443452294254443445918584419594245326624245343962125843938452322915697642233194854153465434534144469455456331536555455612969552161535643773535645417323695414956343312671875334421596526457654564525557156656744264766656672317166327264675488464675652843471652516745442378298644553261763756876567563666826776785537587776778342827743837578659957578676395458276362785655348931975566437287486798767867477793788789664869888788945393885494868976116868978741656938747389676645914218667754839859781987
15544441323944228437364441343446644497444793473543332395624324541686424384443856714113243779534342532665555243415533954847555245455775551855581458465444341673543565279753549555496782522435488164545364377666635452664416595866635656688666296669256957655545278465467638186465166651789363354659927565647548877774656377552761697774676779977731777136716876665638957657874929757627776289147446576113867675865998888576748866387271888578788118884288824782798777674916876898513186873888739125855768722497878697
42524154914461469431442959443439162132446735734241628937115533982955487936544564511424881513749463455363526512557257154255316155454127324355784684535273914822664419316659814765567562253599262485157456647463762366836826536642726656523843546689579564638412593377552142776192587667867336461137359626856775857487347794793764775383776763495465779168167574952361448866325388721369877897844757224846173796788696859845881581487588649488787451657688127927868516347255997743649983247198891895586833595728481789
91276119268914442563535932112445485691412443441485486482484444136324496168894145137342214366945551461238722137912555367464614322355659671252355455259659759359555524743551727991525624845332547715666257234983324812366647857572543346676178236346656636176186146166663585466283811263673595644365882677736834519443592347775896868365445778728934745776774728729725727777469657739492237478461675547699378884794562155461345888691797947655688983914585688788583983183683888857176884151334858957278665871148999581
24184448231444334814441216623477838684199124463812526545744227741492251442145285954524994477349227433529555934255544592555232773458894979521123557492363765685533885251336255325639616563511558845133854463166614536665561366634388456991518163223466851347487679664499636244736643674172767462266995624496557427772564777667247774549956711262927433457796245859878177551174735584775478528387857337711673551766853888367588877835888565116782237313854456881735696198928866228584669588658963949896844882278466287
85664323355886854497454928943456534429419351243925413455391473443142415445315472418822342494324144549677543446699796551856513915456764553152146235413652456641258455425352655642658352993345351543525565178865455771181766296762412656787566426325734652476356775236956653646376675376946311445646265463667628997656688229287731787352376789867753743684576358746788634716776475748778648715742255675737657477873911876779933139884289846348789197886485479568746985789974582788758685988975982685336678684876858898
45534535934317333444446495593214444425494544324726734237112523613584235145484782984967544493311514375664564614542844455555751661432555553651565543583784534822363472469534625659589319517865551442262548677567572565395556666686277254366666476267665469489564593347458357164573676169142162897666255337365978867868367641666777779738836547777758737877657159167561445856946827568478727125327391877736644847618997897947875277788888184994765888886984898876826127867255696715793867958983823643841298884775595872
94344244474845442459944494442145345149854894885613423231139424233251334534843426963794284337224443331545535558595655356115551555325645625196591599672453434224153534436244564595453717481539544833555444265664666961676646722666266643675673621761261178356454533526464554735567561656482859264165594466655537677577717278775783377737775478678473287237228946756564463757566584667867276759396137527661557776664878868882838988689448884888658978958439834833915786767557486867769577897838786141724863877266888777
47283862349339427114594383443734439337744423761941388785425584235432456624444531354617254522943663395839497345144153822561549455484554144885553487215249989653669534654356773555564246572836563315477441694151845625526493367265156659566525599666459832635119176477164576546788466667535768394767442658855271526295673663751447837626776167763661177756194374622128758827568765789957777864687941587855376996638263731678477486255894873788727887477228886721548573323986993867987689116888897579815269896648711774
42233822633944241713954984443855435228242263334444443518714845468647785374784244779625434852245391745334493374415535282416519555496654633935337444555555462982595657975889648589535588173654596335641285644551448552664639352762166651776574414644855566666657319361676818699175969164669928476561744675239675566255966377574146387327776288768552575596667777776842147278792971128617127577113958767285578634178667736617748868525749843888739987966368661777888888795325838981318223972823868822416987839668974528
24545556376554314382342433221449393423451924447784933542423145345294552474594744331264447494243844663565666748766542549345354433255141453456213555889514465353425645631566358561585544237555851535495577467677785987765365145646554436625256456732466699162557646453675674267746967269665534866696264651668857878889619887647625675766554773636756784357771127366875756478678537885717837177664597771737576277996898999172199875873678687766588474786789546888223847798686758978964899682894828877561888284868738811
43688422442884244813446435853575464428972653463496616763824163487159145214451619135288448397442315825479953355399535592455754696468657553918376457451772787493527459826125632556272124639955941855342693658116446641164661356686571757976866412948756856288389851463856193723674366738323574116615296645371476922755775227577246779768286818797752315986796739949196257496721483478547784943468522772631775648258713386688633868835788187939792981886342619781784115121736851783259458965889515457963388374288675936
71144883453212849442633297247646974296349855835418245342329144551888347818325348179543546356647693428225599456432395155374431835875718531745196694652935645343125566299945892943645928165465746775871453933661156754341626648554294698682964285621771576314675645423667731115691315475613927657685788698256414477226786545273775966531571979317539673288268742578675653477884222671242658672413876879689971936752558833789765638488617764268218142864178439937985368978676458899533378235376978352498798179118214786
11444283328413444819141722914465744342443349568514424226326286855432555824749782312394277433541428612255539443952455592125283312557685545355445167962553533743739796654366693585189342341538854465253972336664155416356661323639442366879665646655627817366464485484181776547771469629145345264996557636418344777526652746777243474155347798177675776673892847757559659529288765888257173125645637511766874752945588863776385788835458526645881928878688778491395886866176163139987699936828423675674862287798586315
74414886393452414645472494285241439354823141873424638931752445644465631581442224562246336489194449168552599741456352575658351539635254146593425298453574914286355675557674269255333567335744759121555127966361185256746368676946264174636525761453631956468512539746678666878537136644467844685586123266623817747229636785747978715737528574763687256474216757962364185778977798964824775557895579669723437773492885833174789685818982684863968587479836758532786817347529688918881917593588666891668177183454888451
46749734948345424547423924353145339322124442646313524344254464844421424742422232322494532724333716315785184515945653565853413546425644143323555375742463545536557595553253585353334343351564383544482742689629562615676467696452465753675525443466648685357465664766861666436469646444545446267549465559385379173167372678757871756357686478663655457775979646857677587797277754757175755565655737865157666149648128427848378986898286746879758977476656888618175796878869881838886586828686667676684897626877725175
27829499781434393452922423737242355895439346141246594944642134748442384378984342444945473343422134233893151189254541456313353484835346691654145725235761515575324585955349548919545355515658445453324534491426229136565256742446459594645771276525683634687262668643569616645165912165646662676955656443564551253733124767636785355756161575688238763679474579837377975467172775627612327675777378716676755467566236484423587874789646686727268679934987478158568194848818657828388673872343878688848982778786657867
36739342232843393952893293114944514376843434734327443351137334394466493334341923399378996574494953384784145334395441416391431422515562548795454584543855446224844541557751444545213441148911768551516449589525644541655252741254253362667365981656569565496655733595565266886255565632455225912287966262755169163675565276636385236536447377847619276767167651776684461667637799736667674356633612339817737386627127478667638774749634764755848895872138787827876288779557277874881184777878546774472344192884849773
81331443588436484544481454292425133439739342753266325147841214384248541492243435485325491969344393149244255469954759565559256531353624454184145386437743625895232549535965251335454659643651217145541425135536657116586167666136764246473556529525649754885473691634365164617636244656576175476232825665253624664776822769727877724787535758466763163675186599658471274547627572874735576768728658734393677636473577588793387183898883589864686957787427478629761176958238565873868398584668787983976984541478874758
66336464551534354644484239539372358453593395814331999484278494458214975458425434748172446319364555527744757566264546575559534164148346956461441692544211159538951556932518656953654585928355742147566663885586867737565768666164527525945716757255271365532226164916266714362976716476569613946685325867777499669797884867687977727563863615682786836638247664333727512737782547318782758767172415779643697888851177181899597879818883867497472679389794774935877544483862384889365842989386987828352688175471899996
94944192532449382964344373128146343678852433251586484232943825224538821492324417424345225534338349521515521364355149317545548423925745478996354436269759534315493633564993251343552853545633664544945163262663247546625142865665953413685658911746554737186164542651474467511436245466396465674477565515627437377435865773625397677616452479676912285766584829727565376258557862254735657741757678558867662673854848854697688473641878872756358178712339687769593183867648736966897336584676885286878966997877378496
41141812442411143433898193326512435611562323232192244371331965437281565344262446152315414429834644145225292355352225454491921443762354672267343434321335548244217654839267645537355726342652553194575525633631346646333656551213255487346578337845454543244665935532876594137875664846683745376366421568663674474245775744476766232436659845768944895656565435577614664398761524898677595779485648747753267977478558535688685558787734354776195687915591676767654668872577541987263591978861688159675985886437818858
49935195364456997573568381419474443542794732597341264392631394714229343515636743489471847573224393555114621647556711868467949252158555465381584361845237541374241582533145462674785459158295868433541466622573275866782297957815136326966657649269547295634865248535269364425657378589656126931697954465257773368438697789331816892624743717776875137165831674597635964637147553676848969176723714271816557636888447954971889144292791373585482888798624827694278561874617574825866478795917128783482538292766874799
55991441243664459441247286783831843344794443358184237363165512433433464444224429638444314611347447266611255235477556155235839789494295445581555446929534847427662354454457555533553174955542572245855837772236634658866726634694189151531655669266655713164595853877346556556866664466428516665368335696694888334774576997783774571529126264276677137776682427561696498845766766797777557753962777647944671771599944588568711889488568263123737538778824888779353867271751995687787781888866886417388875815578288261
41422413558575624785916447331246496341843654247582847362349124417342428534634864454244239955947347245253352466968673589612755844235751745295476535869395847345123552845353964574597556535534116615845835636446357717978469172386695534686285631658764697141695845623466395646417568561866764664522772695694674755746882818957128349771664579739674276987571825271695673457741675752867967297787577563388371671578586685799392916823945188277568184178538719868293638271678456885278686397817831889868867449948278268
44313441447533824587353148442433321332724422541585112484114444353394443368749544456487488186447942595542455255864493569846425955354443244383553365269622359522555546441555447985165556759859929755815361665356636697551467195753616646555435549466447637173346163366665755266655819627666786196113186692647277646774771866257821686472775766654665157755874828445727447777686637776692173877789721722429771375838875788588297736893279758388687776577626886698593955683855888879774888771328498889183283353188248694
34464746321713943334837494554334223432346455944434418393232943325414491444432183453445744642317245274557585743282415444594851566544533454345756615554552941434315443652551255554329456455685575342835638566869685439352655561596267765564456545686772666566315254542655476366236666543156756679668645394674967797179654146376667261737887667556765679788377767742636565376658747734777765426786778177975641578517881828176525748777837284899877866787678189948887885374767648776985884588887653789788928818675268962
86456396443352744354994635416785373195239644445346334443524544149593347182499113245745699614434838329756741755446385546511574652789648421634175555645744555463565525161445829351122435685671172554594943186785286655749665762268576389175953274528666675685566657467663627255693146223354679678228366561515429789639776685177687337968749128616438563977778679667776857877473836671425733446578178933947767262653189174188779628879844817985123972754967418888978177888796898858494778253684455768928914415887837376
87422164421533448467464441248483462142295643262347559214543412116482612198323339637624426492192221549853327553264455957857555235959457325331675437345866132565452322759372321943444174873553751321333265196443866437556616896866634616156843644278654845697724367656343386148343215455528598466486243244437621755497754866772791797774572726795475538976595671883547876745449725945432656663961957759735435554873286651886597788381281888568383781658664918761678299465898785655183615654376777417216886184654666598
42117422998134467544233193933642241349493255424363619922394346414436549435284122647293495348444443745322853311924557865534421414475335245151436653547472113341545752554765154639523375831451645955555485643396442213566897664553252558644635626254776465858322445265686366587626574163448694256275616666659675441755332467791877566436366975574673736588757696943355637679747769873768527455971536738672777776178655286644357881298867754747718668578484769986871715446674878185887198487963856618264784978388888728
43474844624457431424424378432396248793272266913364454844846732434774184854145355471912142913371412715458595573556854253553548954341735981438337712447556595595784354588529596525646658212325312448252382656961668466796536466465916545284619254944882355866761661689546569963161763675776932343642355936349376717277957781764757757612765639572136515599346697787277279165767117427287478688714345475346614745148782838816889287586886872387674168324762661145771889838838127687822853839858979982545658645772585625
73324243757432169121422841484684844548144946631774744177823362193443322458144174238521669947259571378443535486854327123253395259579595565925515774288585528893447321455443356925528534963277115836168248955464659796543823436441636168161667613662688539969663991455843256655446713663964517438822694727935916657576181765493454755274727927277872477379964117177411256695436776655782477417562854993371583814612776868729287651456586638583813838898358848117522828852236771654788776689358852867396511448269492572
95518854634874538368262445131428376744444955614856812544334174243629285739335871743128221543145435841662996574598564947937355624253948785555516672596792365544528535473139684144698285423933265425654695277311768561967515814846673536415989666662778361781347665563964658424179525571939653414437653676571638842287967217862692595778464752619177777388947289245877667417576953528163668214176452554876478768274995339817832897371361688957586372128888849915839135698877852868716463927477932528756366598758987938
36694227564838175194343326632444542874871651847464244565533773158462444944463294547644455351116447644771533867594928621545443774355565398598276295857535567664488426957355515557431565875556646222755875588264497861513973265655488546667641961938731696864667877559953716846662666854267698666775733386698669937551897262418437676659965777875217214984271797577898866116482795777377796537871977788684449771977114866291837352954878776117688898632832519538281868891997722759381688848881764898218889979555188218
14645532224256544842589333144163736825416514544344344625483445494311561344337286123335156244833314342575664333536765595369144425527484793652762565545545573659455651542267245544839723444626735594442545368677544464787661647125553663859581476387367665665668476156676265337835665594183455573784661555365647978865557589877275823666477496169258749847877677677958726778737644894677661529456668489577266647675818997666869198838693477758851727136985195898878878816983788984875591578877263156777959168837775878
46369132274449492345217583836356544453894554494549249314462432573435688565714431957849644433759459225747124338555151345632869494746765556491566551565135142557354368454679967682554216895175554486156133685823544966626245674397151585787666751267766267624625366846547956578117879366532791628666559726724479693465517773735678541826269689877786237887737873573647795765816768922898147764381273977766183783558171457662888484678965293737179198889734899884898468475881687692787913391925887549238418887729489466
33441331334149224324121427575122843591427574144387445641244443184142446534494232824288913148599744424455244244525133543523253868623395461253868525549855675235555429525355764551534393539912425961185553556635535563624465463436497973441657236497963665196678634666653163646687566264541464112353617229666466774664667473557657454751818455276834751817477621778974577776427475779867737565257522346472833177757788577577858466876856586292956638794586292858873288918568888753858688197884867636863345758394428886
51439724387463554221463443451456695644973347254446342232243434754436434721488481454541334552433824146254183549857466533257455456256771675518445836555745334335454586554754583259959256565244566354493525736529465196857764436856656736788278662955694766685644544656569766586569436116136767635567746551463684763157621796887554796776784789938977316671587779675565576767187769767154722724787874667885766257479587426873281799866581788789589114918842778269888178667668787829887187826583383589898577899687736858
34366918258554534232437428433958245744247436234195786334838349134433151115338445421234473393942443334547712936966564534354853954416935685535854734521689744594945124554426222644955653234558441415355444565882314717767564546596416552714679664696584563279185561515623566553733375516676434566955252646655567699342582887867565761752766382578177571769567438129667262673467766484448662778754567716636375776667871145369399897867687286387749368928868287167854923177837378457887759555977388986567882774748688777
34534481163464244334112437344233864144198313318445973684366782961158944372499729651828475594644489424564559227457535544522354845534497525521942442955618479547789317226915548351183176293958661575559153567566133856864665563346595664551863663215355316672958165889142833712665946229428731416977268666126467867724496797577667445761677566297477432646642778316927699125394482377615733153984252718837977723757897883551781868877855687278867731858854375775388942713871123641559348872684426419536382994818883486
41432935443712382447734564326323154697244291473851711557331334148394243291834953485829462151335944355254314655482349355884567543743426571835531258496282266844244525941535431294516459693157326244615546636542576659345146699567865485453768294664236951739337795535563615264654231562756171426843735572665774765368776145625771167897659656487931577534716284144881664667472637576534267386728253795484668377688587647988725673688227891876176759814268864582739525599277577858374868764537849783936481659577948879
46344337342884464444823121544324922624992334946464487882989396945333517979189224631229988932724345955745544845399557555593423265543513373511344515757559899319141715644462818129133574233119914383545616685665595641166866661453437665462448462245562686866191142125282675557392923124468534422112549465672779677661675227797777256454877657355957335667379797721225323639378666841313423557964553322365157678388178877278633881888836756598876846616844677848181883233643474148977795242453466817566443347626878949
91842465942545864372233432242475468448743432482317341943534933192994639288425414243544834486494455991295357615365697548334454335358657955985454359342845215464514421311574139953652535465594559751556611231646872647671865944556544646976816619656546145395632657562553242268524116476364657661566186266772234275798375878297615566765575718792772176765725641674376867366435337963522758747576877267729737788334538681948698931872667787668682981388328787683675278548797847754644817463386985868798837883184889944
44994416673432322441646284628521646241226353443414437344519422438561848521544743266771524264454264245511552778454343355275739573963275735233746455452554845562153354967295963265585437788263537556537535662266388956545446638684168417438684634485756656366595667326446517831617437669654889937464866764864677337749916765655774979527952854979574559686776747761677843755762894272854877176599114857597787597578844885112787676688518163816396518168566179788785887278895486687391538396598828761122596861889861868
33414268522413428115432253849437771943559476324384432444366624672143443321424345414778452421919344944452537963352453922654336495154888215466158743549554355547773578325455443253545652588956353212145515556364817446356413376544751626599932657726985465166546665888468943656655436465676369916746432325662666747592855746752448765586273761114376883719657627765777699957915476776654757678747112785754343677377785861396685786355987669738487222548799482176873887688871116812658788776586878985822389686545478848
34645421491394814344998954414463822387945431844352742116823545465791138443163144125554397854148259224575653251241592545511916552557493349815654295546385322793465657681224955427425523666541896525936133568676436235261365662212766366851445192676531665749643381457676879233516653853663477765291763614724467978754734637247677332387747796255621378764277685175449256878798134462776496477458887631287472583557818986584574835878844349885881736673248987538879628655136798981924557388751758856999874239858369466
22938474393629838324237344237969152435426955454337144445133736432612234266454883618824353644324221233314958541473194943534845534817126354653716656544825555624484754372334537756599472993546475543533234442516965258421515464595664592823746576482776765593666673559586548344564886761158311465758665464434555362717636953262657561677561393485768759388787661477778466169765945567599787226942257686977657554566647382874716437376867278867241459687986149989877258888957727187615667861189833715336879718876866567
49413445346824644434437641272462642342499245933342549414447142441122497236371147385822425244993494495152455645793575554554875238357375345351135614445365152555825355223351834748225849693353635511451551626356675681468666566598634946848645646224672555647626366693646633446294585933695171446474662256266273746778679257977767761974515795975675733578366675873747771475774455731569614471628255758577336737738485788978136818887887218562681618678684468947778698485888258688556684267172558273936686968844784884
83132877483633524341498783243972342783574412452443444214348762333444283947843476562419157845734844749424398859474463545251989435418345389468552356355455532545987344455539415895458767352126895684595585153541996158557465636219154652945649157966346746656664365619845556664152691656987846323791679561669626465211726966857674732126576315675126817745785776777547672195666777526371276719895743481278167277173757632283717796878584323768742678623792885689688788865878321677788863748238782191685459238927838828
[:ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok,
 :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok,
 :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, :ok, ...]

This is definitelly not my best code (the expand function is not very semantical, it’s hard to understand what it is doing…), but it works.

destination = Enum.max(cave_map |> Map.keys())
res = Dijskstra.find_shortest_path(cave_map, {0, 0}, destination)
3002