From efcc76f4164fdc3c811f9885015fb0c1dae253a6 Mon Sep 17 00:00:00 2001 From: Mattrixwv Date: Sat, 6 Dec 2025 10:56:26 -0500 Subject: [PATCH] Add solution to problem 5 --- Problem5_1.py | 57 +++ Problem5_2.py | 70 +++ files/Problem5.txt | 1183 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1310 insertions(+) create mode 100644 Problem5_1.py create mode 100644 Problem5_2.py create mode 100644 files/Problem5.txt diff --git a/Problem5_1.py b/Problem5_1.py new file mode 100644 index 0000000..9059e82 --- /dev/null +++ b/Problem5_1.py @@ -0,0 +1,57 @@ +def isInRange(num: int) -> bool: + for r in ranges : + if num >= r[0] and num <= r[1] : + return True + return False + +testInput = [ + "3-5", + "10-14", + "16-20", + "12-18", + "", + "1", + "5", + "8", + "11", + "17", + "32" +] + +def readFile() : + ary = [] + with open("files/Problem5.txt", "r") as file : + for line in file : + ary.append(line.replace("\n", "")) + return ary + +def parseInput(input: list[str]): + ranges = [] + numbers = [] + readingRanges = True + for line in input: + if line == "": + readingRanges = False + continue + if readingRanges: + parts = line.split("-") + ranges.append((int(parts[0]), int(parts[1]))) + else: + numbers.append(int(line)) + return ranges, numbers + + +#rawInput = testInput +rawInput = readFile() +ranges, numbers = parseInput(rawInput) +freshCount = 0 +spoiledCount = 0 + +for number in numbers : + if isInRange(number): + freshCount += 1 + else: + spoiledCount += 1 +print(f"Fresh count: {freshCount}") + +#Fresh count: 848 diff --git a/Problem5_2.py b/Problem5_2.py new file mode 100644 index 0000000..d1a2d0d --- /dev/null +++ b/Problem5_2.py @@ -0,0 +1,70 @@ +def reduceRanges() : + sortedRanges = sorted(ranges, key=lambda r: r[0]) + reducedRanges = [] + currentRange = sortedRanges[0] + + for r in sortedRanges[1:] : + if r[0] <= currentRange[1] + 1 : + #Overlapping or contiguous ranges, extend current range if needed + if r[1] > currentRange[1] : + currentRange = (currentRange[0], r[1]) + else : + #No overlap, save current range and start a new one + reducedRanges.append(currentRange) + currentRange = r + #Add the last range + reducedRanges.append(currentRange) + return reducedRanges + +testInput = [ + "3-5", + "10-14", + "16-20", + "12-18", + "", + "1", + "5", + "8", + "11", + "17", + "32" +] + +def readFile() : + ary = [] + with open("files/Problem5.txt", "r") as file : + for line in file : + ary.append(line.replace("\n", "")) + return ary + +def parseInput(input: list[str]): + ranges = [] + numbers = [] + readingRanges = True + for line in input: + if line == "": + readingRanges = False + continue + if readingRanges: + parts = line.split("-") + ranges.append((int(parts[0]), int(parts[1]))) + else: + numbers.append(int(line)) + return ranges, numbers + + +#rawInput = testInput +rawInput = readFile() +ranges, number = parseInput(rawInput) +reducedRanges = reduceRanges() +freshCount = 0 +spoiledCount = 0 + +for r in reducedRanges : + diff = r[1] - r[0] + 1 + #print(f"Range {r[0]}-{r[1]} adds {diff} fresh") + freshCount += diff + +print(f"Fresh count: {freshCount}") + +#Fresh count: 334714395325710 diff --git a/files/Problem5.txt b/files/Problem5.txt new file mode 100644 index 0000000..7dce4bb --- /dev/null +++ b/files/Problem5.txt @@ -0,0 +1,1183 @@ +5086738007739-6875107477983 +342866708370012-346965358558799 +185250814640704-186019238615676 +555804456885533-560879776586056 +448220932220575-448220932220575 +406954540747690-407722154575312 +410059391839799-410443699396523 +124987111640530-128229147807831 +109385258737879-109654598155786 +103673242984452-104389452310128 +155293912738948-156660997479534 +33707896772542-39242960067955 +499593937766320-499593937766320 +379335090388332-380875552210407 +333937188790171-333937188790171 +510518038952880-510816125471402 +143789987114676-145671616464644 +11451163736435-17464093980671 +84497066179699-87062440779235 +428240719388707-429560517475480 +534424601416850-540599178854080 +290015619457246-290015619457246 +302750033649406-309583362171063 +544128747294068-549021574556818 +296133278469653-300185239626068 +406954540747690-407477686692412 +503108008394551-503490431174592 +96401060968634-98771732313498 +81817871902939-88811993713351 +67924574914572-67924574914572 +109224657204173-109973604092730 +190471782770814-190709077970331 +183865566057847-184430090637515 +189050044324970-189289735425192 +352925352629013-360850469474824 +241645066313-1777683096779 +553828207849287-559161278320172 +185531747201860-185801206395701 +189289735425192-189806421724483 +204164965720558-209796110041070 +375190108593884-376839120622333 +3397288842439-4904674379656 +507583402228999-508387915479580 +506005271763480-506812380500008 +213324533270927-214872655292838 +402429732939591-402905308636339 +8443272834949-9785310865148 +523848225959168-526672409238951 +404451952745130-405177190803199 +383055204892607-383055204892607 +162709899995780-170059632767796 +406050129117870-406578448137201 +103673242984452-103934166431675 +186019238615676-186313547391213 +201727022075910-207817400905598 +232968100974602-240520651852991 +406050129117870-406238191606695 +456417260867454-460042531938705 +106350026774281-107109704019124 +505315060535321-506005271763480 +109654598155786-109973604092730 +265422788679791-268797966233444 +146236968029854-147741616975688 +462746933330243-465368075628097 +53829606799525-55814150092949 +291912581230229-297872695357907 +134146533499771-137506403743338 +109654598155786-110140611134375 +108501738126798-108850409905625 +468023338679899-470259214465115 +406578448137201-406954540747690 +509089357417253-509370301302951 +503761111179939-504065768260604 +102941251645844-103182594482063 +224197583469021-227370022066615 +523848225959168-531585424300660 +377079283327671-378567326573340 +404150332238010-404709817268784 +424206322615613-429560517475480 +156660997479535-156660997479535 +444448801849816-448220932220575 +193169690883245-194753546649703 +213324533270927-218522144568446 +1157026416704-2584286945669 +407477686692412-408364539583855 +346965358558801-351036195402342 +407477686692412-408364539583855 +274642181093596-278363763063477 +465863896952127-468529440960961 +40740752325790-46921999742882 +483701967221255-487781228127828 +188364930964608-189050044324970 +273247344362187-280932136990210 +432584826746221-441040086447267 +408764815808596-409051886750850 +403307321099930-403689784697028 +171581195817350-171581195817350 +100596811663215-101195447377813 +7219421924693-8605664955920 +171581195817350-176995015550686 +476886638421085-480092685001949 +2192445606307-3839706064664 +487781228127830-491895074322187 +473313982645566-476886638421084 +372209054895906-373622353140345 +511786606962639-512397519091459 +40740752325789-40740752325789 +404150332238010-404451952745130 +39242960067956-39242960067956 +505828621386597-506504627022296 +356041834710402-360850469474824 +187442262785281-187778876218636 +91979551150035-96401060968632 +108501738126798-109224657204173 +403307321099930-403915818251180 +309583362171063-309583362171063 +100596811663215-100867276610455 +380330858847412-381787334080274 +312219646932165-317494094169748 +378402247953040-379932617015109 +71652458168323-77137832049587 +365095548983600-368019844916726 +322492181185364-327124346503492 +510966956009111-511603704703404 +106257621042142-106670344645402 +194753546649704-199160504695008 +373372239739688-374748385855072 +469272487662652-471901303697625 +100596811663215-101195447377813 +456417260867454-456417260867454 +504332857302104-504733549165623 +505828621386597-506504627022296 +252840285685487-260742656412532 +144574979931794-146496791439709 +312219646932165-320553026657730 +464294257882799-467301105112749 +516312046578004-516312046578004 +53829606799525-53829606799525 +509089357417253-509881602446808 +327124346503493-329045709113819 +22789818715222-28450525587568 +141023928515870-142702846107048 +147369924611570-149333155243002 +516312046578005-519757357623955 +263478140880753-265422788679789 +365095548983600-368019844916726 +74937425700872-79069572974488 +224197583469021-227370022066615 +396030484371466-399807970951582 +496284290728730-499593937766319 +403307321099930-403689784697028 +435052231073275-437700458248771 +376158298409005-377909230649986 +148688648115208-150628642550185 +416377350538242-417783422437658 +6254318531139-7664193020029 +25327958425789-28450525587568 +506005271763480-506504627022296 +142060776027327-144003472321998 +107515271028139-108007814448839 +63860213989644-67924574914572 +11451163736435-14599555755153 +333937188790172-341081990806236 +409051886750850-409570576977504 +285849332028319-290015619457245 +374301027845476-375747533205875 +406578448137201-406821981514417 +101367280008128-102253963744059 +101648108404187-102371188576862 +544128747294068-549021574556818 +123290746242122-124987111640529 +260742656412532-260742656412532 +235414554903097-240520651852991 +4262823305558-5857053802471 +383055204892607-387604235428408 +413528975478966-420682757916456 +244851299356966-247737061441659 +407986580272450-408764815808596 +134146533499771-137506403743338 +114770787011690-118613409465576 +244851299356965-244851299356965 +181895311363658-182517107208093 + +499447004621328 +180818026110891 +146162451449708 +362634946498099 +36831324212661 +358363058247259 +421253119610799 +113447150379142 +498712885805636 +180911316340611 +281716271809137 +354277570223308 +293124599284444 +433782835859220 +124002685430608 +83317981497639 +432877259697489 +534789959672300 +434760466169647 +11950775553483 +169514940372879 +496513588363182 +344328769938207 +479080664528318 +481806351810112 +334227460189408 +296727258946023 +289051055036964 +329083731767053 +37020239458391 +508313144709526 +176732495870547 +199045340894445 +312807102775654 +131984985734373 +468900513812046 +357049630154052 +330842207418934 +294075428431576 +320277834340631 +25731237911705 +233417291919581 +97521377019873 +45887210933617 +309007519032409 +491742910592772 +93804666760315 +298510694735682 +142325096734262 +310979564041079 +326432959667992 +164195472916488 +267843917913441 +298136824824103 +435513696369447 +519569681171963 +44644273491295 +534971814303198 +388591367883229 +15329437254027 +360072336557114 +365779367475700 +479896095661568 +144782090845720 +185802405538247 +477293830781614 +415206956261443 +96612969687649 +209385343098355 +126316900731869 +360303786782933 +415146877052303 +416729981660807 +14132526204454 +561778236614610 +360580971765952 +4081671870405 +3815596011166 +337825757008490 +345340162545833 +384018064717896 +215376904703362 +163244944601966 +141054981549844 +386522741185759 +167141938216806 +206422199865581 +327572880322706 +436726241686096 +343758550689685 +358568483832791 +377929547994932 +482448427239949 +498659362649075 +496966199069720 +548885572013262 +376242753195039 +382855106467895 +59911580824318 +12195876389497 +182411734676735 +504787213380373 +11544683908822 +500007699576224 +486418909147793 +370612282262374 +228281250651063 +234522261456272 +46361188562811 +499587600550404 +277919840347674 +196637193047903 +529331347368941 +35104638449526 +313507960627701 +239523046595267 +73787743717514 +314581913509941 +189206578495295 +518170486229121 +528541474985985 +257887383301563 +38600023961580 +295316929141640 +135398112115864 +145298134042212 +394792004494472 +165537757998211 +136767027635279 +466976952803897 +399364231122781 +69489269460008 +176177447127215 +458970947310774 +325879888640589 +260459538959689 +546279498418971 +172754413504923 +414277046803674 +510447536801810 +486593942687385 +303098778637963 +505782624556914 +356120103562980 +65196159673085 +468887095210810 +347694021140563 +517518867628724 +217747923061864 +176928603690737 +338071398610408 +380190802315090 +529354207612274 +205343139784232 +489166144770571 +484502565826451 +279461104260296 +144612269261169 +469351277007792 +514018795471917 +77600427216381 +267463901986093 +76853111062973 +215410687983257 +284051979536646 +4541317790730 +529335964598473 +324835939298011 +316859956195228 +25131351459745 +542208400759473 +402845408206020 +360390138155917 +235650307987166 +364725403897642 +520428005508845 +15384145268243 +27275275520919 +398727689606099 +316078079831187 +468647766139593 +530937189459475 +384031088004520 +76885565817728 +497927625125791 +509572061906968 +299368466126273 +135042850590504 +260050963242068 +475510392131710 +475489944034306 +385241450480290 +217605714389843 +432337855769620 +547619519211059 +165858761590444 +400707407641579 +135657539209802 +197947218577483 +296771272663107 +474993888550253 +512492618178768 +4545596912545 +486494413505257 +384684121285788 +145503986260297 +353329317871818 +553534440617035 +471572741448028 +12306726344147 +3282665088537 +459689450693927 +165290838472903 +356015702995128 +98162550496514 +189703334213982 +458571936512008 +473540326739039 +545604460033235 +524056999699803 +149756286076245 +78443396907037 +135217517804964 +535681438223762 +260063346956381 +488526149160005 +107804839935462 +365894725904718 +539247431673773 +358627913317418 +7224418580294 +203076488898855 +142319416413903 +335746273235742 +350394807398995 +17208695629055 +125693189181021 +298329823937741 +485071811341770 +27104683714510 +405023925258715 +183931518603962 +134892734820983 +536921235261763 +260944657330041 +286174202612312 +67623382219324 +486168752118233 +38323642844770 +166702792200156 +357387963228011 +169469603661886 +459426536446507 +163494507261796 +194000861580234 +46644873531230 +415070324259247 +296113228538510 +299261077257815 +392845987113750 +96705779520441 +455525027793269 +485358119346649 +286061648237755 +82279397792805 +86180779558125 +74698253021217 +325301184518340 +72474763715298 +808486224273 +161822834957456 +326041123921250 +227953783567872 +165031239832758 +554613103084674 +150523102549516 +134891105924990 +284785091521193 +377051192279097 +237979687026867 +93329105886260 +367899936850786 +45790707221099 +204116304429520 +55882913944435 +225698074566987 +22790462110247 +82124228105649 +286441596648821 +384097065472784 +553460796087447 +403645974087249 +369022766817955 +35505474789138 +222710968742964 +13559111704791 +424387558226236 +94766300984484 +471294056634267 +256995883858068 +471477425828066 +398175918483281 +367607443850599 +7559252154949 +203690835160720 +150136474709033 +166084150314995 +463839208982249 +511015820671798 +205478804906673 +318175691254412 +321842051770682 +282736296041768 +347118716215670 +258307466911790 +86301538859638 +196747360101636 +239830104803830 +279065284796317 +426752694025927 +326483765259876 +196210974292501 +325489642148397 +530169058396089 +213889498561724 +397679033316410 +195708863085868 +462775391016061 +85953365736666 +127196285872957 +204435538937864 +381366004432684 +15579651216448 +210343891825272 +535758073557922 +234839325910935 +377241772696475 +75935827974410 +338398619787004 +46698422117505 +313660052746062 +223561139694619 +373968703650170 +185576941062564 +332277245922701 +477152733972069 +173662749247635 +54057803872764 +129296967006840 +82863775967083 +46896126943143 +224708266092794 +384139741429770 +43949107698599 +341854477081357 +183226950725038 +489611507779408 +463453155392528 +199341124541612 +359161861543363 +141527353749242 +516840091223073 +8372951001687 +216892192471703 +71799764828908 +253729292733018 +161097228501329 +424939786503506 +470755402962530 +415949016186932 +398440944405553 +432733135333722 +8675446087928 +96933183216496 +340327869086363 +461958584482212 +435680761119036 +318394422831361 +477581120136204 +123907748309521 +2304368130140 +93067140457173 +372904420135867 +491734994308350 +420141350347836 +348207529669757 +260860672499416 +434686279455806 +196157197281498 +277500996234832 +234693028780551 +34668281696667 +259541150779881 +398837764857259 +489959137459146 +541206637760748 +98401259556854 +346139427112526 +476907604841088 +451843339475980 +334401967464267 +387831936182534 +376792371344985 +4070601806463 +169547288616717 +544410776255909 +416322038268407 +537128190324787 +143245321261305 +96217206763706 +558945284129699 +286390644498870 +116348172842822 +416193927796883 +434752535888543 +458993806360783 +305908221366605 +90998476473812 +258085227262973 +217904493576068 +519002816568169 +194609830270663 +409049608914076 +40933130028930 +370589244963458 +5057606052456 +296438777479708 +307286754929415 +532964425915325 +381208636635342 +477306983356530 +474497952632847 +288931857879906 +334547461533075 +539696346625014 +149419516352890 +473407854350757 +349047206427897 +201575274893155 +521899207161802 +211042881311148 +103125749970797 +247311149634356 +289588533734729 +163878203988033 +35538554384001 +374657562206559 +172671252835462 +532657439515920 +93373096955735 +172320053640772 +356492409923833 +355407973947317 +312065189438793 +265081837092282 +550494542589971 +266762938993557 +507664795673205 +494113101277353 +26722469306828 +476174581495500 +35590376586440 +513550291286131 +215432371152415 +519055742344408 +363664687574116 +135655396441028 +339145256427838 +163423889431099 +488650682448919 +88608146821608 +150576456593184 +539134567407000 +291069715840297 +288965028678473 +437783050136899 +365560165929476 +372714998522188 +165696887542220 +468694370352790 +6050116532104 +487171564292412 +417211806367288 +259753463249126 +308637927407155 +294490319992873 +65878620743808 +213806804490591 +496581239996422 +438772546330152 +109251115703849 +198877973518165 +7647173179698 +506297883822092 +152637330191497 +350115886176718 +484452171627665 +488261495291548 +344139730134027 +377621989275628 +449253803019940 +96840629017130 +208046387036915 +213508907522377 +517915693456912 +510824935154415 +82492894369634 +77816718689157 +185312815672902 +557355042688286 +524440077518032 +398240292647499 +355389197540783 +181986722436117 +493081335942086 +215063195091462 +159160812412324 +407967852587299 +119447717489233 +305765942298745 +110018504187191 +95106466060097 +432844683023294 +314302547043990 +380313951394835 +343011490754421 +461920475596794 +198386124240353 +449998779148832 +282544747929451 +82460445953005 +346318883140657 +317227820487671 +275037093725586 +175698764805481 +88712061188975 +349966947652569 +191001539567421 +211007898646181 +328500955303641 +446145710290832 +415229390262198 +23055613470105 +343804511678593 +273553862050380 +267238086215351 +302885243790769 +126115139831844 +206613197571439 +77816528760029 +293558258727380 +353120459627099 +104148938018362 +249494624010329 +308385154903918 +182485126214962 +468214902492213 +356016206893831 +20857872779567 +314353107802502 +253149051076779 +313391574519424 +110555976652605 +152844420247779 +536950807514099 +498415005813944 +87726547044695 +88834176707263 +32100314816004 +435832884583954 +204837208336226 +220654044408811 +194306504222775 +169166541609906 +264806800524819 +7091435714767 +433519023845813 +498369041001730 +476341799014555 +204647503552207 +164748601542957 +556564619662412 +87053345771030 +110443443094251 +69947841267466 +175681872530846 +528340624986959 +137842235169371 +349138122200337 +193290981550578 +274787256471756 +14306549380902 +271452343012448 +294756544055625 +42738547544280 +477516480869542 +256111564655587 +195484431501216 +16787616932828 +313704839591590 +539092630276724 +320251552091146 +350373007949849 +361882646288835 +419410321936905 +379779849987009 +340266647840552 +489083491248391 +106789397225166 +535551700114984 +277486237316166 +378635072659774 +246414295291196 +468294283059319 +534872604664401 +460409052701491 +27563509607569 +511794423659172 +198852116697217 +157634824318112 +9575249566265 +106785438343550 +55219816948909 +42983261520681 +323527962175056 +256718698214723 +87587355794633 +528968863413060 +281442085290667 +11999891539157 +402879725840893 +96679576523858 +38995282973058 +398523507737668 +454824551900725 +525020441076584 +359033286191333 +486852572013383 +235955361897716 +405774788316385 +369001523428172 +393135678325222 +115232696354258 +141999515250293 +271239717776309 +475310899398630 +425035071237986 +335653914118270 +74274364120560 +517686930690524 +538487898711805 +427252506487551 +418326385593561 +87763673409617 +104298576880792 +15106732933248 +484136256318366 +84098536454666 +497735779742394 +450382370362840 +170004454392943 +314770189245334 +420108197543888 +215123501258498 +179638172001457 +24519472175117 +206343051633458 +141854472525117 +266073004083473 +372360647387964 +198360233414607 +280887921495968 +150242298324779 +187532952928185 +54810292669516 +370599492810539 +535820833058209 +149343237254821 +276712933381610 +495578285041941 +438320869304141 +428321167974973 +307746769322432 +355142559039337 +75796755186059 +406970540873537 +375297342710890 +74592676976791 +432611496822043 +73082283256472 +54637922682185 +326107963562634 +64305156801489 +458394953361136 +495913213206101 +318329683943916 +25805582376876 +445022857387596 +265527749941935 +467893021991438 +497706656178878 +126177981756975 +465294368407432 +343185877999054 +396208817892351 +156301117154498 +319586665122287 +97610405658093 +485582651001550 +429712313941017 +366894890009729 +387219432841982 +178032205169655 +143653899290622 +316329019258845 +318131024380617 +425062009325507 +51794966120532 +401486979439680 +438683735699592 +140516154870476 +433826078286926 +377794039269927 +84526596071839 +406850686680009 +245687512964246 +104135035786824 +109828789565067 +254165015723515 +397438641621968 +435610025997918 +143272846281677 +25162479426132 +156525654055658 +498366152824250 +168646086903577 +482933018474983 +307518689458141 +314737009957948 +265614908194049 +450292695879242 +137244306446581 +8390994385209 +279424567565109 +343624111039404 +336019910794695 +439806335375264 +93779106927485 +5737523141470 +143289674367833 +259467815035129 +359370491165181 +208234969056699 +164901366547802 +196059336618487 +202514583441205 +375666872584583 +366389865315623 +90614583329965 +268602399163519 +184360028052327 +102972447147650 +106601316266723 +7583414125559 +8737524297585 +450478765408627 +213345453235494 +33230125858847 +155337147949740 +366564078640228 +226457930443070 +225807547768579 +334201022778220 +143300831477269 +357696607639711 +276427219696915 +456574181683189 +76038336156839 +425295651282620 +523962400041568 +490512702333241 +525174304001211 +305165152344860 +549382751952025 +326063872512482 +511393486057567 +526349336149350 +88405797085030 +127117129293112 +545694061450578 +171070653795231 +242960081805842 +226670417423179 +269166783541741 +8242730022418 +310445955029736 +374329673697467 +333315806633887 +424709503267337 +517681628314776 +488861303905864 +540333984105695 +347558217982808 +239859632602060 +91423742300106 +240277107013322 +23736136840692 +125469641400557 +47185133322137 +316719645269391 +557254650172474 +347738908225407 +245476489680023 +231021515246797 +545503973393631 +416562664690046 +317227466544587 +23013370452680 +102152869375247 +87649260679343 +517692965471904 +158672251405713 +459222277700628 +206498437781497 +478209784836956 +417621414820208 +402750693504276 +296883135505065 +523020272491326 +473215210488532 +142636564187405 +122444028506398 +257304082411255 +346105309532590 +294211486944455 +26246177582167 +266443974746229 +246087982048965 +252099857743749 +478490497750952 +518248688494956 +156388663624303 +338119706207586 +202043024679239 +496491262253736 +233691485035097 +36501384747106 +448992761652159 +83390531591121 +349134996064301 +385600743113823 +143348266313705 +511325758410897 +46784488014480 +148822925370645 +316842981085404 +25365526682736 +167080419069054 +77381788178347 +93744914369656 +346601951190049 +474492303127338 +360194669163651 +189304284530029 +280364932535196 +345793446435497 +441607977481519 +405087208377309 +37181999327172 +444692836394813 +265397100606534 +489856531960572 +218268284720324 +73856716384566 +316896578707406 +443378893938456 +246410477710278 +202825316658443 +101987506256204 +44729067646214 +152058473080381 +477912794307143 +545637039658350 +436971514577088 +53418671839880 +89953210524828 +85554866776762 +325546299726809 +517514420818881 +209859992331721 +340380841505977 +1691644573857 +318471647889586 +509832621942150 +92338814401235 +153636431038240 +95536011590915 +257536119570456 +165741956493629 +337620301106619 +496447301622920 +346457835844548 +326017886921122 +450482415823302 +386601225182998 +202680394131300 +215830264958577 +292515246569881 +293630626529154 +115506293747306 +406327528123956 +474891571026837 +519288519165471 +438541281541068 +349648763922179 +239072902492109 +442824211890835 +447614490676059 +365604947985046 +106526828734417 +474433067806985 +87892975157861 +557955912357471 +470722600034866 +225447219893387 +87809279394492 +415863901972256 +196043948898573 +284008530919450 +195601815379062 +325975764933323 +198526957005080 +174286046288909 +109878095091570 +256220455457476 +78564051965149 +234159448785499 +466166254090747 +409298490094463 +80644836245805 +397063237353864 +237266881038940 +215730870848935 +223123441751273 +437581052166049 +235938946405536 +75296094205538 +355592280012791 +24864195379515 +361437533990676 +14969219709233 +340922163181772 +34607972116162 +366205266626229 +506933006986688 +522065757527876 +326544372741060 +328122678018330 +414629558955755 +41366705626340 +258963738139229 +513350001703468 +66068151739796 +304219640426453 +399800387795288 +542453275660697 +420804636566397 +427983197817707 +517086250067933 +344512077491418 +157160784134246 +437343712065978 +124154308308837 +359839666352917 +374718682299595 +47239584811467 +406961961729533 +226733196880254 +380331952168771 +188463050634612 +124095736009221 +409997644560570 +280121085560393 +103811529071587 +476274836205502 +87688628711729 +303930329100213 +516461379559614 +263543301905562 +257769155432791 +193439818454522 +496715405348132 +289786163671130 +548615743886987 +225394600188878 +322647862375233 +539817710149585 +14309639139362 +326080728667965 +256359626850760 \ No newline at end of file