adventofcode

git clone https://git.ce9e.org/adventofcode.git

commit
378bcf2c8977e8eacfa7b74af062343c6e4fdbef
parent
bce59773e45df8012ff7ed4fd588f1c1214dfa07
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2024-12-12 18:59
2024-12-12

Diffstat

A 2024/12/input.txt 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A 2024/12/solution.rs 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A 2024/12/test1.txt 4 ++++
A 2024/12/test2.txt 5 +++++
A 2024/12/test3.txt 10 ++++++++++
A 2024/12/test4.txt 5 +++++
A 2024/12/test5.txt 6 ++++++

7 files changed, 270 insertions, 0 deletions


diff --git a/2024/12/input.txt b/2024/12/input.txt

@@ -0,0 +1,140 @@
   -1     1 UUUKKKKZZZZZZEEEEEEEEEEEEEEEOOOOOOOOOOOOOOHHHHYYYYYYYYYYYYYEYYOOMNNMUUUUUUUUUYGYYYYYGGGGGZSSSSSSSSOOOOOOOOOOOOOOOODDDDDDDDDDAAAAAAJJJJJJJJJJ
   -1     2 UUKKKKKZZZZZZEEEEEEEEEEEEEEEOOOOOOOOOOOOOOOHHHYYYYYYYYYYYYYYYYOOMMMMUUUUUUUUUYYYYYYYGGGGZZZSSSSSSSOOOOOOOOOOOOOOOWDDDDDDDDDAAAAAAAJJJJJJJJJJ
   -1     3 UUKKKKKKKZZZZZEEEEEJEEEEEEEOOOOOOOOOOOOOOOHHYYYYYYYYYYYYYYYYYYMMMMMMMUUUUUUUUYYYYYYYYZZZZZZZSSSSSSOOOOOOOOOOOOOOODDDDDDDDDAAAAAAAHJJJHJJJJJJ
   -1     4 UUKKKKKKKKKZZZEEEEJJEEEETTEOOOOOOOOOOOOOOOHHYYYYYYYYYYYYYYYKYYYMMMMMUUUUUUUUUUUYYYYYYDDZZZZZZSSSSSOCOOOOOOOOOOOOOTDDFFFDDUAAAAAAHHHJHHJJJJJJ
   -1     5 KKKKKKKKKKKKZEEEEEJEEJEETTTOOOOOOOOOOOOPORYHYYYYYYYYYYYYYQKKKKMMMMMMMUUUUUUUUUUYYYYYDDZZZZZZZZSSOOOOOOOOOOOOOOOOOODDFFFFAAAAAAAHHHHJHHHJJJJJ
   -1     6 KKKKKKKKKKKKZZEEEJJJJJJJTTTOOOOOOOOOOOPPPYYYYYYYYYYYYYKYUKKKKMMMMMMMMMUDDDUDDDDDDDYDDZZZZZZZZZSSOOOOKOOOOOOOFOOOOOOFFFFFAAAAAHHHHHHHHHJJJJJJ
   -1     7 KKKKKKKKKKZZZZEEEEJJJJJJTTTOOOOOOOOOOOOPPPPPPPPPYYYYYYKKKKKKXXMMMMMMMMUDDDDDDDDDDDDDDZZZZZZZZSSSSOOOOOOOOOOOFOOOOOFFFFFAAGAAHHHHHHHHHHHJJJJJ
   -1     8 NNKKKKKKKZZZZZEEZJJJJJJJJTOOOOOOOOOOOOOPPPPPPPPPPPYYYKKKKKKKKMMMMMMMMMUDDDDDDDDDDDDNZZJJJZZZZZZZZOOOOOTTOOOOFFFAOOFFFFFAGGGAGHHHHHHHHHJJJJJJ
   -1     9 NNKKKKKKYZZZZZZZZJJJJJJJJJJOOOOOOOOOGGXPPPPPPPPPPYYYYKKKKKKKMMMMMMMMMUUDDDDDDDDDDDMMMMJJJZZZZOOOOOOOOOETOOFFFFFFFFFFFFVVVGGGGHHHHHHHHHHHJJJJ
   -1    10 NNNNKKKKYZZZZZZZJJJJJJJJJJJMDDOOOOOOOXXPPPPPPPPPPPPPYYKKKKKKKOMMMMMMMUUDDDDDDDDDDDDMMMMJJZZOOOOOOOOODDTTTTTFFFFFFFFFFFVVGGGGHHHHHHHHHJJJJJJJ
   -1    11 NNNNNNKYYYZYZZZJJJJJJJJJJJMMMDDOODXXXXXXPPPPPPPKKKKKKKKKKKKGGGMMMMMMUUDDDDDDDDDDDDDMMMQQJJZOOOOOOOOONDTTTTTTFFFFFFFFFFVVGGGGHHGHHHHJJJJJJJJJ
   -1    12 NNNNNNNYYYYYZZZZZJJJJJJJJJMMDDDDDDXXXXXXXXPPPPPKKKKKKKKKKKGGGGUMUUUMUUUDDDDDDDDDDDDBBBQQAAAAOOOOOONNNDDTTTTTFFFFFFFFFNNNNNNNNGGGHKHJJJJJJJJJ
   -1    13 NNNNNNYYYYYYYZZZJJJJJJJJJJMDDDDDDDXXXXXXXXXXXPPKKKKKKKKKKKKUGUUUUUUUUDDDDDCCDDCCDCDBBQQQAAAAQQOONNNNNDDTTTDTFFFFFNNNNNNNNNNNNGGGGYHYJYYJJJYY
   -1    14 NNNNNNYYYYYYZZYZZJJJJJJJJJDDDDDDDDDDXXXXXXXXXXXKKKKKKKKKKKKUUUUUUUUUDDDDDCCCCCCCCCCQQQQQAAAAAAONNNNNNDDTDDDDFFFFNNNNNNNNNNNNNGGGGYNYYYYYYYYY
   -1    15 NNNNNYYYYYYYYYYYJJJJJJJJJDDDDDDDDDDQXXXXXXXXXXXXKKKKKKKKKKKKKUUUUUUUUDDDDDCCCCCCCCCCCQQQAAAAAAOONNNNNDDDDDDDDDDFNNNNNNNNNNNNNGGGGYNYYYYYYYYY
   -1    16 NNNNYYYYYYYYYYSYYJJJJDDDDDDDDDDDDDDQQXXXXXXXXXXXXXKKKKKKKKKKUUUUUUUUUTTTTCCCCCCCCCCCCQQQQQQAAAQOONNNDDDDDDDDDDDDNNNNNNNNNNNNNGGGYYNNYYYYYYYY
   -1    17 NNNNNNYYYYYYYYYYYJJJJJJDDDDDDDDDDDDQQXXXXXXXXXXXXKKKKKKKKKKKKMLLLLULLLTCCCCCCCCCCCCCCCQQQQQAAAQQOONNDDDDDDDEDDDDNNNNNNNNNNNNNGGGYYYYYYYYYYYY
   -1    18 NNNNNYYYYYYYYYYYYJJJJJDDDDDDDDDDIIDQXXXXXXXXXXXXXKKDKKKUKKKKKMMMLLLLLLLCCUUUUCCCCCCQQQQQQQQAAAQOOOONNDDDEEEEEDNNNNNNNNNNNNNNNGGGYYYMYYYYYYYY
   -1    19 NNNNNYYYYYYYYYYYYJJJDDDDDDDDDDDDDDDDXXXXXXXXXXXXXDDDDKKKKKKKKEEELLLLLLLLELCCCCCQCCCCQQQQQQQQZZZOODDDDDDEEEEEEXNNNNNNNNNNNNNNNSGGYYMMYYYYYYYY
   -1    20 NNNNNNYYYYYYYYYYYYZZZZDDDDDDDDDDDDDDDXFFXXXFFXFXXFFFDKKKEEEEKEEELLLLLLLLLLJJJJCCCCCCQQQQQQQQZZZZDDDDDDEEEEEEEENNNNNNNNNNXXXGGSSSSMMYYYYYYYYY
   -1    21 NNNNNNNNYYYYYYYYYZZZZZDZDZDDDDDDDDDFFFFFXFFFFXFFFFFFFKEEEEEEEEEEEELLLLLLLLJJJJJQQQQQQQQQQQQQZZZZZZDDDDEEEEEEEENNNNNNNNNNXXXGGGSSSMMYYYYYYYYY
   -1    22 NNNNNNNYYYYYYYYYYZZZZZZZZZZZDDDDDDDFFFFFFFFFFFFFFFFFKKEEEEEEEEEEEEEELLLLLLJJJJJJQQQQQQQQQQZZZZZZZZZZZLLLEEELEENNNNNNNNNNXGGGSSKSSSMYYYYYYYYY
   -1    23 NNNNNNNNYYYYYYHHZZZZZZZZZZZZDDDHBBDDFFFFFFFFFFFFFFFFFKEEEEEEEEEEEEEEELLLLLJJJJJJQQQQZQQQQQQZZZZZZZZLLLLLLLELEENNNNNNNNNNNNNGSSKSSSMMYYYYYYYY
   -1    24 NNNNNNNNNYYYRHHHZZZZZZZZZZZDDDDHBBBBBFFFFFFFFFFFFFFFFEEEEEEEEEEEEEELLLLLJCCJJJJJJQQQZQQQQQZSZZZZZZZLLLLLLLLLEENNNNNNNNNNNNNSSSSSSSMMYYYYYYYY
   -1    25 NNNNNNNNYYTTHHHHHHHHZZZZSSZZZDPBBBBBBBFFFFFFFFFFFFKKEEEEEEEEEEEEEEEELLLLJJJJJJJJQQZZZQQQQQZZZZZZZZZZLLLLLLLLEYNNNNNNNNNNNNSSSSSSSMMYYYYYYYYY
   -1    26 NNNNNNNNNNTTHHHHHHHZHZZZSSSSZDPBBBBBBBAAFFFFFFFFFFFFEEEEBBEBBEEEEEEELLLLLJJJJJJZZZZZQQQQQQQZZZZZZZZZLLLLLLRLEYNNNNNNNNNNNNASSSSSSMMMYAYYYYYS
   -1    27 NNNNNNNNNNTTHHHHHHHHHHHZSSYSSDPBBBBBBBBAAFFFMFFFMFIIIEEEEBBBBEBEEEELLLLLLJJJJJJZZZZZQQQQQZZZZZZZZZZYZLLLRRRYYYQNNNNNNNNNNQQQSSSSSMMMSSSYYYSS
   -1    28 NNNNNNNNNNNHHHHHHHHHHHHZHSSSSPPPBBBBOBBAFFFFMMMMMFIIIEEEBBBBBBBEELLLLLLLLJJJJZJZZZZZZZZZZHYZZZZZZZZZZZLLRRYYYYYNNNNNNNNNNQSSSSSSSSSSSSSYYYSS
   -1    29 LNNNNNNWWWNWHHHHHHHHHHHHHSSSSPPPBBJBOBBBMFFFMMMMFFIIIEEEBBBBBBBBBBLLLLJJJJJJJZZZZZZZZZZZHHHZZZZZZZZZLLLLYYYYYYYYQQQQQQQQQQQSSSSSSSGSSSSSSYSS
   -1    30 LLLNNNNWWWWWHWHHHHHHHHHHHSKKKKKKKJJJMMMMMMFMMMMMEFIIYPEBBBBBBBBBBBBLLLLJJJJJZZZZZZZZZZZZHHZZZZZZZZZYYYYYYYYYYYQQQQQQQQQQQQSSSSSSSSSSSSSSSSSS
   -1    31 LLLLWWNWWWWHHWHHHHHHHHHHSSKKKKKKJJJJMMMMMMMMMMMMMMIYYYYYBBBBBBBBBBBLLLLJJJJLLZZZZZZZZZZXXXZZZQQVVZZYYYYYYYYYYYQQQQQQQQQQQSSSSSSSSSSSSSSSSSSS
   -1    32 LLLLWWWWWWWHWWHHHHHHHHSHSSKKKKKKJJJJJMMMMMMMMMMMMMYYYXBBBBBBBJJBBBFFLLAJJJJTLZZZZZZZZZZUUULQQQQVYYYYYYYYYYYYYYYQQQQQQQQSSSSSTSSSSSSSSSSSSSSS
   -1    33 LLLLLWWWWNWWWWSHHHHHHSSSSSKBKKKKKKJJMMMMMMMMMMMMMMMMMXBBBBBBBJJBBBBFBAATTDDTTZZZZZZZZZZUUUUQQQVVYYYYYYYYYYYYYYYYQQQQQQQQSSQSTTSSSSSSSSSSSSSS
   -1    34 LLLLLLWWWNNWNSSSHSHSSSSSSSKKKKKKKDMMMMMMMMMMMMMMXXXXXXXBBXBBJJJBBBBBBTTTTTTTTZZZZZZZZUUUUUUUUQVYYYYYYYYYYYYYYYYYQQQQQQQQQQQQFTSSSSSSSSSSSSSS
   -1    35 LLLLLLWWWNNNNSSSSSSSSSSSKKKKKKKKKKMZZMMMMMMMMMMMXXXXXXXXXXBJJJBBBBBBYTTTTTTTTVZZZNZZZUUUUUUUUVVVVYYYYYYYYYNYYYNSSSQQQQQQQQQFFTFSSSSSSSSSSSSS
   -1    36 LXXGWWWWNNNNNSSSSSSSSSSSKKKKKKKPFOFFZZMMMMMMMMMMMXXXXXXXXXBBBBBBBBYYYTTTTTTTVVNZNNNZZZUUUUUUUVVVYYYYYYYYYYNNNNNNSSQQQQQQFQFFFFFSSSSSSSSSSSSS
   -1    37 XXXGWWWNNNNNNNNSSSSSSSSSKKKKSFFFFFFFFFMMMMMMMMMMMMXXXXXXXXBBBBBBCBFYTTTTTTDDNNNNNNJZZZIUUUUUUWWWHYYYYYYYNNNNNNNNNSSQQGQFFFFFFFFSSSSFSSSSSSSS
   -1    38 AXXGWWWWYYNNNNNNSSSSSZSSKSKSSSFFFFFFFFMMMMMMMMMMMXXXXXXXFFFFFFFBFFFTTTTTTTNDNNNNNNJJZZUUUUUUWWWWWWYYYYYYNNNNNNNNNQQQQGQQQQFFFFFSSSSFSSSSSSSS
   -1    39 AXGGGSSYYYNNNNNNNSSSSZZSSSSSSFFFFFFFFFFMMMMUMMMMMMNXXXXFKFFFFFFFFFFPTTTTTTNNNNNNNJJJZJUUUUUWWWWWWWYYYYYNNNNNNNNNNQQQQQQQQQQQFFFFSSSFFSSSSSUU
   -1    40 SSSSSSTNNNNNNNZNNZSSSZZSSSSSSFFFFFFFFFFFMMUUAANNMNNFFFXFFFFFFFFFFFFTTTTNNNNNNNNNJJJJJJUQUUUMMWWWWWWWWYYNNNNNNNQQNNNQQQQQQQQQQQFFFFUUFSUSUUUU
   -1    41 SSSSSSTNNNNNNNZNNZZZZZZZSSSFFFFFFFFFFFFFMUUUAANNNNTFFFFFFFFFFFFFFFFQQTTTQNNNNNNNJJJJJJJMMMMMMMWWWWWWWYFNNNNNNNNQQQQQQQQQQQQQQQFFFFUUUFUUUUUU
   -1    42 SSSSSNNNNNNNNNZNNZZZZZZZSSSFFFFFFFFFFWFFMUUUUAAAAATTTFFFFFFFFFFFFFFQQQQQQQQQQQNNJJJJJQQMMMMMMMWWWWWWWFFFYNNNNNNQFQQQQQQQQQQQQQQFFFFUUUUUUUUU
   -1    43 PSSSSSSNNNNNNNZZNZZZZZZZZZSFFFFFFFFFFFFFFUUUUUAAAATTTZZZFFFFFFFFFFFFQQQQQQQQQNNJJJJQQQMMMMMMMMWWWWWFWWFFYNNNNNNFFQQQQQQQQQQQQQFFFUUUUUUUUUUU
   -1    44 SSSSSNNNNNNNNNNZZZZZZZZZZRRFFFFFFFFFUFFFFUUUUAAAATTTTZZZZFFFFFFFFFFFQQQQQQQQQWNNJJJQQQMMMMMMMMWWWWWFWWWFNNNNFFFFFQFFFQQQQQQQFFFUUUUUUUUUUUUU
   -1    45 SSSSSSNNCCCCCCCCCCZZZZZZRRFFFFFFFFFFUUUUUUUUUAAAATTTTZZZZFFFFFFFFFFFQQQQQQQQQJJOOOOOOOMMMMMMMMWWWWWFFFFFNNFFFFFFFFFFFQQQQQQQQFFFUUUUUUUUUUUU
   -1    46 SSSSSSSFCCCCCCCCCCCZZZZZRRFFFFFFFFFFUUUUUUUUUAAATTTTTTZZZFFFFFFFFFQQQQQQQQQRJJJOOOOOOOJMMLLLMMMMMWFFFFFFFNFFFFFFFFFFGFFUCQQAQFHFUUUUUUUUUUUU
   -1    47 SSSSSSSSCCCCCCCCCCCZZZZZRRFFFFFFFFFFUUUUUUUUUAAAAZZTZZZZZFFFFFFFQQQQQXQQJJJJJJJOOOOOOOJLLLOOOOLMMWWJFFFFFFFFFFFFFFFFFFUUCCQAAHHHUUUUUUUUUUUU
   -1    48 ESSSSSSECCCCCCCCCCCZZZZZRFFFFFFFRFFUUUUUUUUUUAAAAAZZZVVVVFFFAFFFFQQQQXQQQJJJJJJOOOOOOOLLLLOOOOLMMJJJFFFFFFFFFFFFFFFFFUUUCCCHAAHHUUUUUUUUUUUU
   -1    49 EESSSCCCCCCCCCCCCCCZZZZRRRRRFFRFRRFUUUUUUUUUUUAAAUZZZVVVVVVFFVVVFQQQXXXQQQAJJJJOOOOOOOLLLLOOOOLMMJJJJJFFFFFFFFFFXFFFFUUUHHHHHHHHHHCUHUHUUUUU
   -1    50 EEEEECCCCCCCCCCCCCCZRRRRRRRRFFRRRRRUUUUUUUUUUUUUUUZZXXXVVVVVVVVVVQQQQXXXQQQQQTTOOOOOOOLLLNOOOOJJJJJJJJJFFFFFFMMFFFFFFUUUHHHHHHHHHHHHHHHHHUUU
   -1    51 CCCCCCCCCCCCCCCCCCCZRRRRRRRRFFRRRUUUUUUUUUUUUUUUUZZZXXXXXVVVVVVVVVVQXXXXQQQQQTTOOOOOOOLENNOOOOZZZJJJJJFFFFFFFMMFFFFFFUUUHHHHHHHHHHHHHHHHUUUU
   -1    52 CCCCCCCCCCCEECCCCCCZRRRRRRRRRRRRRRUUUUUUUUUUUUUUUUXXXXXXXVVVVVVVVVVVXXXOOOOOOOOOOOOOOOOOOOOOOOZZZJJJJJJJFJJJMMMMFFFFUUUHHHHHHHHHHHHHHHUUUUUU
   -1    53 CCCCCCCCCCCCCCCCCCCRRRRRRRRRRRRHHRHUUUHHHUUUUUUCUXXXXXXXVVVVVVVVVVVVVTTOOOOOOOOOOOOOOOOOOOOOOOZZZZJJJJJJJJMMMMMUUFUUUUUUUHHHHHHHHHUUUUUUUUUU
   -1    54 EEEEECCCCCCCCCCCCCCRRRRRRRRRHRRHHHHHHHHHHUUUUUUCCXXXXXXXXVVVVVVKKKKVVTTOOOOOOOOOOOOOOOOOOOOOOOZZJJJJJJJJJJMMMMMUUUUUUUUUUHHHHHHHHHHUUUUUUUUU
   -1    55 EEPPPCCCCCCCCCCRZRZRRRRRRRRHHHHHHHHHHHHHHHHUUUCCCCXXXXXXXVVVVVVKKKKKKTTOOOOOOOOOTTTTTOOOOOOOOOZZJJIIJJJJMJMMMMMMMUUUUUUUUHHHHHHHHHTTTUUUUUUU
   -1    56 RPPPPCCCCCCCCCCRRRRRRRRRRRRRHHHHHHHHHHHHHUUUCUCFFXXXXXXXXVVVVVVVKKKKKTTOOOOOOOOOTTTTNOOOOOOOZZZZIIIJJJMMMMMMMMMMUUUUUUUUHHHHHHHHHTTWTTWWWUUU
   -1    57 PPPPPCCCCCCCCCCARRRRRRRRRRRRROHHHHHHHHHHHHHHFFCFFQQXXXXXVVVVVVVKKKKKKKTTTTTTTTTTTTTNNOOOOOOOEZZZIIIIJMMMMMMMMMMMMUUUUUCCCCHHHHHHHHHWWWWWWWWU
   -1    58 PPPPPPPPEECCCCCARRRRRRRRRRRRROHHHHHHHHHHHHFFFFFFFFQQXXVXVVVVVKKKKKKKKKKTTPTPPTTTTTTNNOOOOOOOEZEIIIIIISSMMMMMMMMMMUUUUCCCKCMHHHHHHRWWWWWWWDDD
   -1    59 PPPPPPPPJJCCCCCUZZZRRURRRRRRRRHHHHHHHHHHHHFFFFFFFFFFFVVVVVVVVKKKKKKKKKKKKPPPPPPTTTTTNTOOOOOOEEEIIIIIIIIMMMMMMMMMMMMMCCCCCCHHHHHHHWWWWWWWWWDD
   -1    60 PPPPPPRJJJCCCCCUZZRRUURRRURUUUUHHHHHHHHHHFFFFFFFFFFFFVVVVVVVTTDKKKKKKKKKKUPPPPPPPTTTTTOOOOOOEEIIIIIIIIIMMMMMMMMMMCCCCCCCCCHYYYHHHWWWWWWWWDDD
   -1    61 PPPPPPRRJUCCCCCUZZZUURRRRUUUUUUHHHHHHHHHKFFFFFFFFFFFVVVVVVVTTTKKKKKKKKKKKKKPPPPPPPPTKKOOOOOOEEIIIISIIIIZMMMMMMMMMCCCCCCCCCYYYYYYHWWWWWWWWWDD
   -1    62 PRRPRRRRRRUUUUZZZZZUUUUUUUUUUUUUHHJHHHHHFFFFFFFFFFFVVVVVVVVTTTTKTTKKKKKKKXXPPPPPPPPCCKOOOOOOEIIIIISUUIUMMMMMVMMTMCCCCCCCCDYYYYYYWWWWNWWWWWDD
   -1    63 ERRRRRRRRUUUUUUUZZUUUUUUUUUUUUUUHSSSHHHHFFFFFFFFFFFVVVVVVVVTTTTTTTKKKKKKKXXPPPPPPPPKKKOOOOOOESISISSUUUUUMMMMMMMTMCCCCCCCCCCCCCCDDWWDWWWWWDDD
   -1    64 EERRRRRRJUUUUUUUZZZZUUUUUUUUUUUSSSSSSHHFFFFFFFFRFFFVVVVVZTTTTTTTTTKKKKKKXXXPPPPPPPPKKKKBEEESSSSSSSSSUUUUMMMMMMMTDCCCCCCCCCCCCCCDDDDDDDDDDDDD
   -1    65 EERRRRRRRUUUUUUUZZZZZUUUUUUUUUUSSSSGSHHHFFFFFFFFFFVVVVVVZTTTTTTTTTKKKKKKKXXPPPPPPPXKKKKBBEEESSSSSSSSSSUUUUMMMMMMDCCCCCCCCCCCCCCDDDDDDDDDDDDD
   -1    66 EERRRRRRRRUUUUUUUZZUUUUUUUUUUUUSSSSGGGGHDFFFFFFFFFMMVVVRTTTTTTTTTTKRRKKKXXXXPMPPPPXXKBBBQDEVSNSSSSSSSUUUUUUUUUUJDDDDDDCCCCCCCCCHHDDDDDDDDDDD
   -1    67 ERRRRRRRRRUUUAAAAAZZUUTUWUUUUUUUSSGGGGFFFFFFFFFFFFVVVVRRRRRRTDTTTTTRTXXXXXXXXPPPPXXQMQBQQQVVSSSSSSSSSUUUUUUUUUUDDDDDDDCCCCCCCCCHHHDDDDDDDDDD
   -1    68 EERRRRRRRRRUAAAAAAAAAATTWWUUUUUUSSGGGGGFFFFFFFFFFRRRVVRRRRRRRTTTTTTTTXEXXXXXXXXXXXXQQQQQQQQVSSSSSSSSSUUUUUUUUUUDDDDDDDCCCCCCCCCHHDDDDDDDDDDD
   -1    69 VVARRRRURRUUUAAAAAAAAWWWWWWUUUUUSFGGGGGFFFFFFFFFFRRRRRRRRRRRTTTTTTTTTEEXXXXXXXXXXXQQQQQQQQQSSSSSSSSSUUUUUUUUUUUDDDDDDDCCCCCCCCCHHHDDDDDDDDDD
   -1    70 VVVKRRUUUUUUUAAJAAAAAWWWWWWUUUUUFFGGGGFFFFFFFFFFJRRRRRRRRRRRRRRTTTTEEEEXXXJXXXXXXXQQQQQQQQQRRSSSSSSSUUUUUUUUUUUUDDDDDDCCCCCCCCCHHHHDDDDDDDDD
   -1    71 VDVKRRUUUUUUUAAAAAAAWWWWWWZUUUUFFFFGGGFFGFFFTTFJJJRFRRRRRRRRRRSTTTEEEEEEJJJJJXJXXXXQQQQQQQSSSSSSSSSUUUUUUUUUUUUUUDDDDCCCCCCCCCCHHUUHDDDDDDDD
   -1    72 VDVVRUUUUUUUUAUAWAAAWWWWWWWWUUFFFFFFGGGGGFGGGJJJJJRRRRRRRRRREEEEEEEEEEEJJJJJJJJXXXXQQQQQQQQQSSSSSSSSUUUUUUUUUUUUGDDDDCCCCCCCCCCHHHHHDDDDDDDD
   -1    73 VVVVUUUUUUUUUUUWWAAAWWWWWWWWUUUUFFFFFFGGGGGGGGJJJJRRRRRRRREEEEEEEEEEEEEJJJJJJJJXXXXQQQQQQQQQQSSSSSSSSUUUUAUUUUUGGGDDDCCCCCCHHHHHHHHHDHDDDDDD
   -1    74 VVVVUUUVUDUUDDDDWWAWWWWWWWWWUUUFFFFFZZFGGGGGGGGJJJRRRRRRRRREEEEEEEEEEEEJJJJJJJJJJJQQQYYYYYZQQSSSSSSUUUUAUAUUUUGGGGDDDCCCCCCHHHHHHHHHHHDDDDDD
   -1    75 VVVVUVUVUDDDDDDDWWWWWWWWWWWWUUUFFFFFZFFGFFGGGGGJJJJRRRRRRRRESEEEEEEEEEEJJJJJJJJJJJJJJYYYYYYYYSSSSSSUSUAAAAAUUUGGEGDDDCCCCCCHHHHHHHHHHHDDDDDD
   -1    76 VVVVVVVVDDDDDDDDWWWWWWWWWWWWUUFFFFFFFFFFFFFGGGGGJJJJRRRRRRREEEEEEEEEEEEEJJJJJJJJJJJJJYYYYYYYYYSSSSSSSUAAAAAUUGGGGGDDDCCCCCCHHHHHHHHHHHHHDDDD
   -1    77 VVVVVVDVDDDDDDDDWWWWWKKKWWWWWGTFFFFFFFFFFFFFFFGJJJJJRRRRREEEEEEEEEEEEEEJJJJJJJJJJJJJJJYYYYYYYYYYSCSCSUAAAAUUGGGGGGGGDCCCCCCHHHHHHHHHHHHHPDDD
   -1    78 VVVVVVVDDDDDDDDDWWKWWKKKWWWWWGFFFFFFFFFFFFFFFFJJJJJJHLHRRQEEEEEEEEEEEEEJJJJJJJJJJJJJJYYYYYYYYYYYYCCCCKKKAAUUUUGGGGDDDCCCCCCHHPKHHHHHHHHHHDVD
   -1    79 VVVVMVVMDDDDDDDDKKKKKKKKKKWKGGGFFFFFFFFFFFFFGFJJJJJHHHHRRQEEEEEEEEEEEEJJJJJJJJJJJJXJJYYYYYYYYYYYYCCCCKKKDUUUUUGGGGGDDDCCCCPPYPPHHHQHQQVHHDDD
   -1    80 VVVMMVMMMDDDDDDDDKKKKKKKKKKKKGGFFFFFFFZZZZVGGGJJJJJHHHHHZHEEPEEEMMEMMJJJJJJJJJJJJJJJJYYYYYYYYYYCCCCCCCKKDDCUUUGGGGGDDDCCCCPPPPPPQFQQQVVVDDID
   -1    81 VMMMMMMMMDDDDDDDDKKKKKKKKKKKGGGGGGGFFFVVVVVGGGJJJJHHHHHHHHHEPEEEIMMMMYYYJJJJJJJJJQJJJYYYYYYYYYYYCCCCCCKKCCCUUUUGYGGDDDCCCCPPPPPPQFQQQQVQIIII
   -1    82 VMMMMMMNDDDDDDDDKKKKKKKKKKKKKGGGGGGFZZVVVVVVBGJJJHHHHHHHHHHHPPPEMMMQMMMMPJJJXJJJJJJWWYYYYYYYYYYYYCCCCCCKCCCCCCCYYGYDNNNNNNPPPPPOQQQQQQQQIIII
   -1    83 MMMMNNNNDDDDDDDDDNKKKKKKKKKKKKGGGGGGGVVVVVVVBBBBBBHHHHHHHHHHPPMMMMMMMMMMMMMJJHHHHHJJWYYYYYYYYYYYYCCCCICCCCCCCCCYYYYLNNNOOPPPPPOOQQQQQQQQQQII
   -1    84 MMMMMNNNNNDDDDDDDDKKKKKKKKKKKKGGGGGGGPUVVVVBBBBBBBBHHHHHHHHHHMMMMMMMMMMMMMMJHHHHHHHHHYYYYYYYYYYYCCCCIICCCCCCCCLLLLLLNNNOOKXXKKQQQQQQQQQQQIII
   -1    85 MMMNNNNNNNNDDDDDDKKKKKKKKKKKKKGGGGGRRUUVVVBBBBBBBBBHHHHHHHHHMMMMMMMMMMMMMMUUUUUUUUKHKYYYYYYYYYTYCIIIIICCCCCCCCLLLILOOOOOOXXOXKKKQQQQQQQQQIII
   -1    86 MMNNNNNNNNNNDDDDDKDJKKKKKKKEKGGGGGUUUUUQVVBBBBBBBBBBHHHHHHHHHMMMMMMMMMMMUUUUUUUUUUKKKYYYYYYYTTTTIILIIIIICCCCCILOOILOOOOOQXXXXXXQQQQQQQQQIIII
   -1    87 MMNNNNNNNNNDDDDDDDDDYKKKPKPZZZGGGUUUUUUBBVBKBBBBBBBBHHHHHHHHHHEMMMMMMMMMMUUUUUUUUUKKKYYYYTTTTTTTIIIIIIIIICCIIIIOOOLOOOOOQQXXXXXXQQQQQQQIIIII
   -1    88 MMNNNNNNNNNNDDDDDDDDDEKPPPPZZGGGGUUUUUUUBBBBBBBBBBBBHHHHHHHHEEEDDDDDDDMMMUUUUUUUQUKKKQYYYTTTTTTIIIIIIIIIINCIOIOOOOOOOOOOQOXXXXXXMQRRQQQIIIII
   -1    89 NNNNNNNNNNDDDDDDDDDDDXPPPPPZZZGGUUUUUUUUUBBBBBBBBBOOHHHHHHHHHEEDDDDDDDMMMMUUUUUUQUKQRQFYTTTTTTTTTIIIIIIIIIIIOOOOOOOOOOOOOOOXXXXXQQXQQQQILIII
   -1    90 NNNNNNNNNRRRDDIDDDDDDXXXXXXZZZZZUUUUUUUUUBBBBBBBBBOHHHHHHHHDDDDDDDDDDDMMMMUUUUUUQQZQQQQYTYYTTTTTTTIIIIIIIIIIOOOOOOOOOOOOOOXXXXXXXXXXQQQQLLII
   -1    91 NNNNNNNNRRRRRRDZDDXXXXXXXXEZZZZZZXZUUUUUUUUBBBBOBOOOHHHHHHHDDDDDDDDDDDMMMUUUUUUUQQQQQQOYYYYYTTTTTTJJJJJJJJIIIIUIIOOOOOOOOOOXXXXXXLLLLQLLLLLU
   -1    92 MMMNNNNNNRRRRDDDDDXXXXXXXXEZZZZZZZZUUUUUUUUUUUUOOOOOHHHHHHHDDDDDDDDDDDMMUUUUUUUUQQQQQQOYYYYYYTYTIIJJJJJJJJIIIIIIIOOOOOOOOOOOXXXXLLLNLLLLLLLU
   -1    93 NNNNNNNNNRRRRRRLDOOOXXXXXXEZZZZZZZZQQUUUUUUUUUUUUVVVEEEHHHEDDDDDDDDDDDMUUUUUUUUUUUQQQQQYYYYYYYYTTTJJJJJJJJIIIIIIIOOOOOOOOXXXXXXXLLLLLLLLLLLU
   -1    94 PNNNNNNNRRRRRRRLOOOOOXXXXXZZZZZZZZZZQUUUUUUUUUUUUUVEEEEEHHEDDDDDDDDDDDMUUUUUUUQQQQQQQQQYYYYYYYYYTIJJJJJJJJIEIIIIIOKOOOGKKXXXXXXXXLLLLLLLLUUU
   -1    95 PNNNNNNNRRRRRODOOOOOOXXXXXIZZZZZZZZQQUJZUUUUUUUUUVVVVEEEEEEDDDDDDDDDDDUUUUUPUQQFFQQQQQQYYYYYYYYYYYJJJJJJJJIIIIIIOOKKKKKKKBBXXIXXXLLLLLLLLUUS
   -1    96 PZNNNNNRRRRRNOOROOOOOXXXXIIIIZZZZZZQQQZZUUUUUUUUUUVVVEEEEEEDDDDDGGGGUUUUUUUUUUUHHQHHQYYYYYYYYYYYYYJJJJJJJJJJWWWWIKKKKKKKNKXXXIXLLLLLLLLLLSUS
   -1    97 PZDNNNNZZZZZOOOOOOOOOOXXIIIIIZZZZZZQQZZZUUUUUUUUUUMBBEEEBBEDDDDDHHHHUUUUUUUUUUUHHHHHQYYYYYYYYYYYWWJJJJJJJJJJWWWWWKKKKKKKKKKXOXXGGGZLLLLLLSSS
   -1    98 ZZDDNNNZZZZZOOOOOOOOOOOXXIIIQZZZZZZQZZZZZZZZRUUUUUUBBBBBBEEDDDDDHHHHHHHGUUUUUHHHHHHHQYYYYYYYYYYYWWWWWIIIIJJJWWWWWKKKKKKKKKKOOXGGGGZLZZSSSSSS
   -1    99 ZZZZZZZZZZZZZOOOOOOOOOOTOOIIQZZZQQQQQQQZZZZZZZUUUWWBBBBBBEEEEEEHHHHHHUHHOOHHHHHHHHHHYYYYYYYYYYYYWWWWWIIIIJJJWWWWWKKKKKKKMMKOOOMGGZZZZZSSSSSS
   -1   100 GZZOZZZZZZZZOIOZOOOOYOOOOOOQQQQQQQQQQQZZZZZZZZUUUWBBBBOBBEEEHEEEHHHHXHUOOOOOHHHHHHHHYYYYYYYYYYYUXXWWWIIIIIJJWWWWWWKKKKKQQMMMMMMMZZZZZZSSSSSS
   -1   101 ZZZZZZZZZZZOOOOOAOOYYOMMMMQQQQQQQQQZZZZZZZZZZJJJWWWOOOOOBEHEHHHHHHHHHHHOOOOHHHHHHHHHHHYYYYYYYYYYXXXXXXXXXXJJWWWWWWWWKKQQMMMMMMMZZZZZZTSOSSSS
   -1   102 ZZZZZZZZZZZOOOOOOXOOOOMMMMMQQQQQQQQZKZZZZZZZJJJJJJWWOOOOEEHHHHHHHHOOHHOOOOOHHHHHHHHHHHYYDDYYYNYFXXXXXXXXXXJJWWWWWWNNRRNNNMMMMMMMZZZZZZSSSSSS
   -1   103 ZZZZZZZZZZPOOOORRMMJOMMMMMQQQQQQQQQQZZZZZZJZJJJJJJJWOOOOOHHHHHHHHHOOOOOOOOYHHHHHHHHHHHHDDDYYYYFFXXXXXXXXXXXXWWWWNWNNNNNNMMMMMMMZZZZZZUSSSHSS
   -1   104 ZZZZZZZZZZZDDDOOOMMMMMMQQQQQQQQQQQQQXXZZJJJJJJJJJJJWOOOOOHHHHHHHHHHHOOOOOOOHHHHHHHHHLHDDDDYYYWXXXXXXXXXXXXXXWWWWNNNNNNNNMMMMMMZZZZZZZZSHHHHH
   -1   105 ZZZZZZZZZZDDDDDMMMMMMMMQQMPPQQQQQQQFQQAAJJJJJJJJJJOOOOOOHHHHHHHHHHHHOOOOOOVHHHHHHHHHHDDDDDYWWWAXXAXXXXXXXXXXWWWWWNNNNNNLMMMMMMMZZZZZZPSHHHHH
   -1   106 ZZZZZZZZZDDDDDDDMMMMMMMMMMMMQQQQQQQQQAAAJJJJJJJJJJUUOOOOHHHHHHHHHHHHOOOOOOVHHHHHHHHHHHHDDDAAAAAAAAXXXXXXXXXXXXWWWNNNNNNLMMMMMMMZDZZZZSSSHHHH
   -1   107 ZZZZZZZZTZZZDDDMMMMMMMMMMMMTQQQQQQQQQAAAJJJJJUJJUUUUOOOOAHHHHHHHHHHHOOOOOOVVHHHHHHHHHEEEDDDAAAAAAAXXXXXXXXXXXXWWWWWNNNNWMMMMMMWDDDZZZZHHHHHH
   -1   108 ZZZZZZZZZZZZDDDMMMMMMMMMMMMMQQQQQQQQQNAAJJUUUUUUUUUUOOOHHHHHHHHHWWWWWWOOOOOOHHHHHHHEEEEEDAAAAAAAAAXXXXXXXDEXXXWWWWWWWWWWWMMFDDDDDDYZDDDDHHHH
   -1   109 ZZZZZZZZZZDDDDDMMMMMMMMMMMJRRQQQQQQQQNNNJUUUUUUTUUTOOOOHHHHHHHHHWWWWWWOOOOOHHHHEEEEEEEEEDDDAAAAAAAXXXXXXDDDWWWWWWWWWRWWWWFFFDDDDDDYDDDDHHHHH
   -1   110 ZZZZZZZZZZZDMMDMMMMJJJJJJMJRRRQQBBBBQCNNJJUUUUTTTTTOOOTHHHWHHHHHWWWWWWOOOOOHHEEEEEEEEEEEDDDAAAASAAXXXDXXDDWWWWWWWWWWRRWFFFFFFDDDDDDDDDDHHHHH
   -1   111 ZZZZZZZZZZZMMMMMMMMMKJJJJMJQQQQQBBBNNNNNNNUUUUTTTTTOBTTTHWWQHHHHWWWWWWOJJOJJEEEEEEEEEEEECCCAASASXXXXXDDDDDDWWDWWWWWRRRFFFFDFDDDDDDDDDDDDHHHH
   -1   112 ZZZZZZZZQQQQQEQMMMMJJJJJJJJJKBBBBBNNNNNNNNNUUUTTTTTBBBTTTQQQNHNHWWWWWWXXJJJJJJJJEEEEEEEEECCASSSSSSSXIDDDDDDDDDWWWRWWRRRFFFDDDDDDDDDDDDDAHHHH
   -1   113 ZZZZZZZZRQQQQQQZZZZJOJJJJJJJJJJBBBNNNNNNNNNTTTTTTTTTBBBTTQQQNNNWWWWWWWNXXXJJXXXXXEEEEEECCCCASSSSSSTTDNDDDDDDDDWWWRRWRRRRRFDDDDDDDDDDDDDAHHHH
   -1   114 ZZZZZZZRRQQQQQQZZZZJJJJJJBBBBBBBBBBBNNNNNNNTTTTTTTTTTTTTTTQQNNNWWWWWWWNXXXXXXXXXXXEECCCCCCCCCCCSSSDDDDDDDDDDDDDWRRRRRRRFFFDDDDDDDDDDDDDDTTHH
   -1   115 UUUZZUQQQQQQQQQZZZZJJJJJJBBBBBBBBMBNNNNNNNNTTTTTTTTTTTTTTQQQNNNWWWWWWWNNXXXXXXXXEEEEECCCCCCCCCCRSSDDDDDDDDDDDDDDRRRRRRRRRFDDDDDDDDDDDDTTTTTH
   -1   116 UUUUUUSQQQQQQQQZBZZJJJJJBBBBBBBBMMMNNNNNNNNTTTDDTTTTTTTTTTQQQNQWWWWWWWXXXXXMMMMMMMEEEERCCCCCCSRRKDDDDDDDDDDDDDDDRRRRRRRFFFFDDDDDDDDDDTTTTTTT
   -1   117 UUUUUSSQQQQQQQYBBZBBYYJBBBBBBBBMMMMNNNNNNNNDDDDTTTYTTTTTTTQQQQQQQQQQIIXXXXXMMMMMMMEEERRCCCCCCSRKKKGGDDDDDDDDDDRRRRRRRRRRRRFFDDDDDDDDDDTTTTTT
   -1   118 UUUUSSSQQQQQQQBBBBBBBBBBBBBBBBMMMMMMNNNNNDDDDDDDDDTTTTTTTTQQQQQQQQQIIIXXMMMMMMMMMMEERRRRCCCCSSSKKKGKDKVDDDDDDCCRRRRRRRRRRRRFDUDDDDDDDDTTTTTT
   -1   119 UUSSSSSQQQQQQQQBBEBBBBBBBBBBBBBMMMMMMMNNNTTTDDDSSSGGTSTTTQQQQQQQQQQIBBXXMMMMMMMMMMEERRRCCCSSSSSWKKKKKKVVDDDCDCCRRRRRRRRRRRFFFDDDNNNNDDDTTOOO
   -1   120 UUSSSSQQQQQQQQQQBBBBBBBBBBBJJMMMMMMMMMTTTTTTTDDDSSSSSSSTTSSSQQQQQQQIIXXXMMMMMMMMMMWERRRCCCSSSSSWKSKKKKVVVDVCCCCCRRRERRRRFFFFFFDNNNNNDDTTOOOO
   -1   121 SSSSSSQQQQQQQQQQBQQBBBBBBBBJJJJMMMMKMTTTTTTTTTDDSSSSSSSSSSSEEQQQQQIIIXXXMMMMMMMMMMWERERCCCCSSSSSKSKKKVVVVVVCCCCRRRRRRRRFFFFFFNNNNNNNNNOOOOOO
   -1   122 SSSSSSSSQQQQQQQQQQQBBBBBBBBJJJJMMMMMMMTTTTTTTTDDSSSSSSSSSSSEEEQQQIIIIIXXMMMMMMMMMMEEEECCCCSSSSSSSSSSKKVVVVVVVCRRRRRRJJRFFFFNNNNNNNNNNNHOOOOO
   -1   123 SSSSSSSSQQQQQQQQQQZBBBBBRRJJJJJJJJMMPPTTTSSSSSODSSSSSSSSSSSEEEQQQJEEIIXXMMMMMMMMMMEEEECCCCSSSSSSSSSKKKVVVVVVCCCCCRJJJJJFFFFFFFNNWNNNNNNNOOOP
   -1   124 SSSSSSSSQQQUUQQQQQQBRRRRRRJJJJJJJJJMPPTTSSSSSSOOOSSSSSSSSEEEEQQQQEEMMMMMMMMMMMMMMEEEECCCCSSSSSSSSSSKKVVVVVSVDDDDDAJJJJJFFFFFFNNNNNNNNNNHHHHP
   -1   125 SSSSSSSQQQUUUUUUQQQQRRRRRRJJJJVJVVJJPTTTTSSSSSOOSSSSSSSSSSEEEEEQEEEMMMMMMMMMMMMMEEEEEECEESESSSSSSKKKKKKVDDDSSDDDDDDJJJJFFFFFFMANNNNNNNHHHHHP
   -1   126 SSSSSSSQUUUUUUURRQRRRRRRRJJJJJVVVVVVTTTSSSSSOOOOOOSSSSSSSEEEEEEEEEEMMMMMMMMMMMMMEEEEEEEEEEESSSSSKKKKKKKDDDDDDDDDDDJJJJJFFMMFMMMDMMMMNNUHHHHH
   -1   127 SSSSSSSAAUUUUUURRRRRRRRRRJJJJJJVVVVVTTTTSSSSSOOOOOOKSSSSEEEEEEEEEEEMMMMMMMMMMMMMIEEEEEEEEEESYSKSSKKKKKKDDDDDDDDDDDJJJJFFFMMMMMMMMMMMHHHHHHHH
   -1   128 SSSSSSAAAUUURRRRRRRRRRRRJJJJJVVVVVVVSVTSSSSSOOOOOOOKKSSOOEEEEEEEEEEMMMMMMMMMMMMMIIYEEEYYEEESHHKSKKKKKKKKKDDDDDDDDGGGGGMMMMMMMMMMMMMMHHHHHHHH
   -1   129 SSSSSSSSAAAURERRRRRDDRRRRRRRJRVVVVVVVVVVSSSOOOOOOOOKKSOOOOOEEEEEEEEMMMMMMMMMMMMMIYYEEEYYEEEEHHHKKKKKKKKDDDDDDDDDDGGGGGMIMMMMMMMMMMMMHEHHHHHH
   -1   130 SSSSSSSEAAAAEEEERRRDDDRDDDRRRRVVVVVVVVVVVSOOOOOOOOKKKKKKKOOBBEEEEEEMMMMMMMMMMMMMYYYYYYYYEEEHHHHHKKKHKKDDDDDDDDDDDDGGGMMMMMMMMMMMMMMMMHHHHHHH
   -1   131 SSSSSSSEAEEAEEEEDDDDDDDDDRRRRRRVVVVVVVVVVVOOOOOOOOKKKKKKKBJBBEEEPEEMMMMMMMMIIYYYYYYYYYYYEEEHHHHHHHHHKKDDDDDDDDDDDDDDGGGGMMMMMMMMMMMMHHHHHHHH
   -1   132 SSSSESSEEEEEEEVVDDDDDDDDDDRRRRRVVVVVVVVVVVOOOOOOKKKKKKBBBBBBEEEPPPIIIIIIIIIIIYYYYYYYYJJJEEHHHHHHHHHHHHDDDDDDDDDDDDDGGGMMMMMMMMMMMMMRHHHHHHHH
   -1   133 SSEEEEEEEEEEEEDDDDDDDDDDDDDRVRVVVVVVVVVVVVMOMOMMMKKKBBBBBBBBEJEPPPIIIVIIIIIIIIYYYYYGYYYJJJHHHHHHHHHHHHDDDDDDDDDDDDDGCCCCMMMMMMMMMMMMHHHHHHHH
   -1   134 SSSSEEEEEEEEEEWDDDDDDDDDDDDVVVVVVVVVVVVVVVMMMMMMKKKBBBBBBBBBBJJJPPJJIIIJIIIIJJYYYYYYYJJJJJHHHHHFHHHHDDDDPDDDDDDDDDDGCCCCSMMMMMMMMMHHHHHHHHHH
   -1   135 SSSSEEEEEEEEEEWWDDDDDDDDDLDDYYYVVVVVVVVVVVMMMMMMKFHHBBBBBBBBZJJJJJXJIJJJJIIIJJYYYYYQYJJJJJJJZZZZZHHZZZDZDDDDZDDDCGGGCCCCSMMMMMMMMMHHHHHHHHHH
   -1   136 SSSSSEEEEEEEEDDDDDDDDDDDDDYYYYYYVVVVVVVVVVMMMMMFFFHFBBNBBBBBJJJJJJJJJJJJJIIJJJYYJYYYJJJJJJJJZZZZZZZZZZZZZZDZZDAACCCCCCCCMMMMMMMHMMHHHHHHHHHH
   -1   137 SSSSEEEEEEEEEEDDDDDDDDDDDYYYYYYVVVVVVVVXVVMMMMMMFFFFFBBBBBBJJJJJJJJJJJJJIIIJJJYJJJJJJJJJJJJJJZZZZZZZZZZZZZZZZZCCCCCCCCCCCMMMMMHHHHHHHHHHHHHH
   -1   138 SSSEEEEEEEEEEEVDDDDDDDDDDYYYYYYYYVVVVVVVVVMMMMMMMFFFFFFFFFBJJJJJJJJJVJJJJIIIIJJJJJJJJJJJJJJZZZZZZZZZZZZZZZZZZZCZZCCCCCCCCCCMHMHHHHHHHHHHHHHH
   -1   139 SSEEEEEEEWEEEEVVDDDDDDDYDYYYYYYYVVVVMMVVVMMMMMMMMMFFFFFFFFJJJJJJJJJJJJJJJJIIIJJJJJJJJJJJJJJJJZZZZZZZZZZZZZZZZZZZZCYCCCCCCCCCHHHHHHHHHHHHHHHH
   -1   140 SSSEEEEEEWWWEVVVVVDDDDYYYYYYYYYYYVEVVMMMMMMMMMMMMMMFFFFFFFJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJZZZZZZZZZZZZZZZZZZZCYCCCCCCCCCCHHHHHHHHHHHHHHH

diff --git a/2024/12/solution.rs b/2024/12/solution.rs

@@ -0,0 +1,100 @@
   -1     1 #[path = "../lib.rs"]
   -1     2 mod lib;
   -1     3 
   -1     4 #[derive(Debug, PartialEq, PartialOrd)]
   -1     5 enum Dir {
   -1     6     Up,
   -1     7     Right,
   -1     8     Down,
   -1     9     Left,
   -1    10 }
   -1    11 
   -1    12 fn parse_input() -> Vec<Vec<u8>> {
   -1    13     return lib::iter_input().map(|line| line.bytes().collect()).collect();
   -1    14 }
   -1    15 
   -1    16 fn count_sides(perimeter: &Vec<(usize, usize, Dir)>) -> usize {
   -1    17     let mut count = 0;
   -1    18     for dir in [Dir::Up, Dir::Right, Dir::Down, Dir::Left] {
   -1    19         let mut edges: Vec<(usize, usize)> = perimeter.iter()
   -1    20             .filter(|(_x, _y, d)| *d == dir)
   -1    21             .map(|(x, y, d)| match d {
   -1    22                 Dir::Up => (*y, *x),
   -1    23                 Dir::Right => (*x, *y),
   -1    24                 Dir::Down => (*y, *x),
   -1    25                 Dir::Left => (*x, *y),
   -1    26             }).collect();
   -1    27         edges.sort();
   -1    28         for i in 0..edges.len() {
   -1    29             if i == 0 {
   -1    30                 count += 1;
   -1    31                 continue;
   -1    32             }
   -1    33             let (x1, y1) = edges[i - 1];
   -1    34             let (x2, y2) = edges[i];
   -1    35             if x2 != x1 || y2 != y1 + 1 {
   -1    36                 count += 1;
   -1    37             }
   -1    38         }
   -1    39     }
   -1    40     return count;
   -1    41 }
   -1    42 
   -1    43 fn main() {
   -1    44     let map = parse_input();
   -1    45     let h = map.len();
   -1    46     let w = map[0].len();
   -1    47 
   -1    48     let mut seen = vec![vec![false; w]; h];
   -1    49     let mut sum1 = 0;
   -1    50     let mut sum2 = 0;
   -1    51 
   -1    52     for y0 in 0..map.len() {
   -1    53         for x0 in 0..map[0].len() {
   -1    54             if seen[y0][x0] {
   -1    55                 continue;
   -1    56             }
   -1    57 
   -1    58             let mut area = 0;
   -1    59             let mut perimeter = vec![];
   -1    60             let mut queue = vec![(x0, y0)];
   -1    61 
   -1    62             while let Some((x, y)) = queue.pop() {
   -1    63                 if seen[y][x] {
   -1    64                     continue;
   -1    65                 }
   -1    66 
   -1    67                 area += 1;
   -1    68 
   -1    69                 if x > 0 && map[y][x - 1] == map[y][x] {
   -1    70                     queue.push((x - 1, y));
   -1    71                 } else {
   -1    72                     perimeter.push((x, y, Dir::Left));
   -1    73                 }
   -1    74                 if x + 1 < w && map[y][x + 1] == map[y][x] {
   -1    75                     queue.push((x + 1, y));
   -1    76                 } else {
   -1    77                     perimeter.push((x, y, Dir::Right));
   -1    78                 }
   -1    79                 if y > 0 && map[y - 1][x] == map[y][x] {
   -1    80                     queue.push((x, y - 1));
   -1    81                 } else {
   -1    82                     perimeter.push((x, y, Dir::Up));
   -1    83                 }
   -1    84                 if y + 1 < h && map[y + 1][x] == map[y][x] {
   -1    85                     queue.push((x, y + 1));
   -1    86                 } else {
   -1    87                     perimeter.push((x, y, Dir::Down));
   -1    88                 }
   -1    89 
   -1    90                 seen[y][x] = true;
   -1    91             }
   -1    92 
   -1    93             sum1 += area * perimeter.len();
   -1    94             sum2 += area * count_sides(&perimeter);
   -1    95         }
   -1    96     }
   -1    97 
   -1    98     println!("part1: {}", sum1);
   -1    99     println!("part2: {}", sum2);
   -1   100 }

diff --git a/2024/12/test1.txt b/2024/12/test1.txt

@@ -0,0 +1,4 @@
   -1     1 AAAA
   -1     2 BBCD
   -1     3 BBCC
   -1     4 EEEC

diff --git a/2024/12/test2.txt b/2024/12/test2.txt

@@ -0,0 +1,5 @@
   -1     1 OOOOO
   -1     2 OXOXO
   -1     3 OOOOO
   -1     4 OXOXO
   -1     5 OOOOO

diff --git a/2024/12/test3.txt b/2024/12/test3.txt

@@ -0,0 +1,10 @@
   -1     1 RRRRIICCFF
   -1     2 RRRRIICCCF
   -1     3 VVRRRCCFFF
   -1     4 VVRCCCJFFF
   -1     5 VVVVCJJCFE
   -1     6 VVIVCCJJEE
   -1     7 VVIIICJJEE
   -1     8 MIIIIIJJEE
   -1     9 MIIISIJEEE
   -1    10 MMMISSJEEE

diff --git a/2024/12/test4.txt b/2024/12/test4.txt

@@ -0,0 +1,5 @@
   -1     1 EEEEE
   -1     2 EXXXX
   -1     3 EEEEE
   -1     4 EXXXX
   -1     5 EEEEE

diff --git a/2024/12/test5.txt b/2024/12/test5.txt

@@ -0,0 +1,6 @@
   -1     1 AAAAAA
   -1     2 AAABBA
   -1     3 AAABBA
   -1     4 ABBAAA
   -1     5 ABBAAA
   -1     6 AAAAAA