44924 Factorial (a high stakes quest)

I’ve thrown together a small Python program that will calculate every prime up to 26,000,000,000 (that’s in the billions). This is an insane and potentially fatal pursuit and has slowed my dedicated server to a crawl. This is because each time it tests a new value, it calculates the factorial for that number. The algorithm I was using had no chance of success, because before it even got to 100,000 it had ALready generated a number neAR maxing the RAM I had allocated the project. Below view the sheer size of factorials.

Here is the factorial value for 44924 (it has 189496 decimal places, and is 449 times larger than googol):

5861685140342617415496376991054570407154449822161001087074412319914026717755412547877196019294521501570517579017997327855773372418743148581379024104531593989376310380153904738355483316967431034874779633993498260589878875414130326158087923047646004764957187808709945084425215739750834753341683584524364618709687211708514229545216913572485331515190303483802003990724370201042924610102798637788601438006033815605075213681761923494733340339799821829107032155888212303581541009483799693186093970064881488201335580186833947404055339201520447382009162149012146114936339916560689029548776545841479322550755880305807349078884369361414340189351747598428104240445382139597464791661029159392104208302352843570777706012631547063702889205248388880313775696692906000389361643288612178583653175536256928691659047927479761639128322688154343078082119779511544444037025958575468156003026060905999180526958799420797959479068516494804198309913429861350702527466352031808662537178115217289495491252610374664264021225966357283003081798150326209101484017614517426304273729887545445348690090623649725840219279665047117577562919262119453850615006992199529899911074039737875103767416802988947966673389759696550908321723504961279649891866557361260341532314532148225161127958350696693770279157758824182526922154903545662921140475211674646378931549770871463857162645439689066798171858341230957430627288159821094774221141767624487073079342555921214935814656440439135200953626517096555816442328622445212122242346891083741163803076860252065992534794605749824041663968956420310146207334786106604769368274607550233275543118025627664733160739234513115324976853331628219221067344584843453763235528698687599941771759094403214905256250026618873986325556253340185081366404906143282327186156116255115821863002827797813435638829819000784328635566254766328994920929153484008383283841872783460342795260411293534833316862024163993355133549114424227971811074761651903595086241694420679390046885827139882540309444211622263972706639977774625670758673879831201404435901335874074974593722794571509602096749431088902250099270265218624422398273265147836519964393243317248949989735602083246526523971501753582122242335209619415059708390245053905136721638422552504674384582813982422018394194571178002561068379098880623107062505921755038418532786380797399268334632149212476857591467736341373073706145681566728599682099625517696721632429527239310273645917201589548080513340799753194860149760236090751630077307679096787766040844231002160977691322056174270673582951115080254562869056464054124782127590729403694845464816451702308853993465370236522525917228007013577636337478977498093455214916216526587561429894947621480624022966615206232720909278435478695945127685292967799153083137544610764567120465423634461072524617893259974157275054708960289989801446564244967524290657649079581615204399667969942349231590122069297914529885623516724131008544909501096113937524548500999962481264071128194186455321919350406122657753309294193839358563138467560905731488375852353537438602222062434551047106556035971524850525645193717284114225367172591953479422755915247243090400041620685707823161353494779145293549436700928258860421317032079016073594320140698577552557307510984719374861963001971413531349559720223563555795681298750192703562434810810482368007198343873969442216902954495089678196005604903537256734882274875868103710409789020978244023825163062506706311598097776088211609919592072590720153762693129190163733817227584262784584695974626440442648986843505675518748197938828730383150900427261880828642581913086346725606313204085179208973295713565514920712655998676703072584162081251383197903684221690706591172374825610669737247107191431590049263027259583657847057671360637297622370888400445128611707028196122586658098553425595154966634157179322586311671055937220722133655459673038562374247634142643552100008427304701465956061939118984902464299796878438404597356533852155129700864823613248645842786242565946788212320663056661342126456133001589876479430239776360699864943803175794033302078855813880563833742628999805163880219816133385621933685080206704937135053448522035793087885482968292651974699120032024727078237916830740853627521714432215659609360957378234123703104876406637495948344136130778886624405164699823508830481675447223770508178505005766171485009061590162476003040486358722816708066105981342249858865809132597987336054832083563518407623431217485575245204330143456698914842263783165570260943678095362750937106228502679046888672085580281626134932070040289424312429556946683606712710021146712028008227851311387490430020606095880879846947157599466411199099657523095573735581096669760744439527783996469475209035579576828263893798641258553372466384553142812228732323726229301673777536778802060820116657183272179351594837914031457555639545430964369583577522926538744779506669176580388761506520952703113175521181356436474898135116574463806106973911224969004501618892944397409499614235268234392693649400289851292465340259739324341210858392877151326186840582005014288020035457015297104608400805204651360034716447096346523389209841440633055364964894162375222623143010050387582700468212467339444293024910565416374859092171252649972532701002437440967814058542939066047842920025893592357661013830368311171860832898412492015434592483829015799735049560005527349867329362584388532375648439508151728948867478430982846622936240236371757449117336059278948784983783477680430374728124455942866924291516619879895449396887564340260774544968446548787499316316120643685035151266465095108784810178936969775194298378770558566126177171429329024989506365650462669487871977877113407341886429764893403408936040043680204331084201291656131407466773608459408645015875892034276639929350352086971767669797428618986522558847211416120373271014276241946458863467782759017855609807676478517663130903370532958630005839663443210453738865123972670181298314973373100239480966728185520821807204568990342411783706258882916866849362389023664556611420731833928210960520041088157830761379729450333780910756171797721774730109481841782743548401362511641718287020454368748879401308898472642071311951388676148582687284597815600745409400154337230539113028596230554014382864010630944121011592007810163935157692012833240891602159078203331506658456784847658837635519402616537760041099832000748025485380702927035208366370858752789918898036168369134731267477852570574587893808606459871720469595397351314318926254151061503742252827860478116359058891183675033930966587026510262350989359120689684480454530564935305014197592222974082000745442730030247795673281271859470088473917160576056279088073209746333952427623272629025347830944229790399660380688104202052470417221748725422929870724088757996292744800514639089609095759831975748733058542421881140905643751362561552620560934484757192383869641515936882146148941300222924382118324744126597971855360959398068542988508794919898587898033555236243563664528500509164145070413275131530717351025625366015973756448012959836757286787035966691046744488861752620886811549540522020662949879060595024403033527071506290010349826387342216655090391424485812773317907795783893042138648281241380204793138824588022425063677368806647983471185313893582515512394146490665396147803645698030971766569111500853475646138262911074372842358215281999269079201194161379389579825699730200616497226082899994003378681909686351215247573550523629431228859713480922576432280150383645225017953786866511810414475573687502670183736854252814959042139485226051359747266865224283512518137188909328111892003343284144655219033530412976871357603803488889664436241897738140348807021896389633510725579504480264020909620964234607253159117422951389696947628370671804022349191477728886814092098031039458472839912854282665014024820169797474158627994263962757019752398387508430673473575897312684344317467019559538120705514416223187882137930245862826001725789325236595059523964935325321962626871110535187131170965866340162017862046444131543500055496979965181372368311935129254140770987221367092927831044940634892803048838625472393598839631247678398609874256277217656097338989660786174782702692601297909115112373256709224747411604286270980465400951811011779353742341327905247479339349376079897106124479268717189659293107161806168136585494894428625336467558571373470679692285400156376856173663818890046965624423564245581590013705429407962375152530621082741196658138118635383142981504193995739284188762025897492580067901425458490281675528278056775062600756358476363942358848877865371548540083168524227492261956790924170981409586350048524215625578411048431922233430451215503624722697477477638870604865811130904839931391512021706370062432596439292008333107246717774232818334025667898519729448852025301250065925105000451887362571342105021739230492212408577752258162866056750357285749422804167742723028617727225949894492651094468724002041691655153637839524329948750347161242377930511294302029517093332589684321849374410188543400728096790847845350215201597984958665885082276346593085972714844057120956512866068310034440213590893064669619584219526031736786374691939565611619122397658663577936094911618066559747464610914269645329962502066998756406028732452109133081914206535699500317870269117373825250369612798727634865396015186623067974932697241258282984084889134250549727518861177013541585955309254716228312098474811263369615398084816615774121025753065639169461681784309716603634184515889562526812468869166357851529559495514591675722156295810862398235488324738902777408535795919534328871228263593059176604519320765793825095118816217687037078584807254320248526275685901880986751389594800894819836957431352571494421024477445136845077437499753820493650970587773296866536913589626745005413653114726172925916134695479181230867121156895953284108235685692366857763679268471756319620278840025781207161777901249005196919073675116818130798858592767138876198053287479114242479922921401113172241348000028081282053729280537899337076069588821578056286967293476238732575730472811409983603361483784263782286306117426923258580648371538965163770927778783736627792815697905908404244468871582549481200113229207509104753740927690887784318848802384161213354693407789553827251370328817091635644808468162435161795602215172018199062992708068774885880699634805313490463604016906380998577017874190372581681845288091995182209405631994333574465199880608974299600306682202472871919188926088389490786061104541041499995976408856619503585061513107801575900620608772424593225434413105265882493758827391648510180747360528762135945146194076309297630073218493063188242771581443314098989436513808453279275564130886027718267883016761361485382801622355797236720111109737483736581746268871278186117347367545148562652203906156977823482683452811070241241196498402944109507325274436936808285130061395489980149115639285919232626638680016260560872606444681233643223134315627954176366210026011098341845950325203904387058701236499410088853153712701446977828664469280602018062818688617249543116433314808361878314745481224236595574913290496493797573921003903241078376388164066781178614043260163855075955341004222118879709224290164161879172933337132370807734335233508018519700738813574606744280862029934484648447943080727771214886824198747665634600428542042458103500564582320033350817820958396212618615957809334850130627698575144237316095753888807811892851920331691314054544929086915153820993649269593614034585268525620445160908575248552448007700425651235660730951831525980294886668390224971537885850718906459322290777787004948677033674115968311941934274132163215740442552902495561032866260634906228111321430032860720151547923096543915639430745142021506857764881153127868455366476594746695260045237876708817151661493839232011130400908025338969408856562548526837556599395524067555307715972470467687681235895520564714456671780562257042166847185089311750139932421368167068127674976962869651845131601882044379774934713138047284772395555226133992739881346492250328808904423910519155146788250516777334382547845373996625754030844718975345346708968930716658371801890127430493973545393717311757049352774942800425904841802208522973595850135255831920424917029380017607232992976021506692710179184755503820915542770582718561060455090592502183664992826965379624189321532715786486527087707236029445452271341617500445770027935690632334403232352006679771459772007231520229341322227814078193885579275356041420613902252041613650959938195012849637905318271660452512805437238764174510794378504740872711120008450472229210905345691762398283471354051732884414096882262326467423851726907413296137171563957130969011149079788193408843175608260013719040308510024353831769268413179076313253974685425534158519402414651300374981046273975306899019217480322709901958098395004441603098126104584985344841356341391744555401877509208430089225578203190205717942973433466971372166684917593949104566313844286180078854861828447408044019371710009271780136373381448099689938392526131184602399059130360344081795708942291428280094207726974479674936025584575979414616598685343371404794212949938991778989208100522331006614864207776051115217118606180841131307690794331164993397870025139093058378700240034117743132602301617020507936096333770361114296153589297228823363571419241322568018003564429217570526841539317584846598056063000855633171976450251267342669559204713156486563841020319308836858555771940881870130752251399591932996099306747146773265043631637088770589196449599963665097977618712350496027233559898975842044868684709639619139408015279267169581774020240122810497535744551959708407646497523012879791155371161608706753948665571660052231748364023893327018172895145222620795763986002802243104191996519615408036931325004647468399458968825350682180872313203615341002607419266298323378648358280559044787222000881455601440453065864985011154349965293981697317858972867334974777853251921789175107929187122571730653771847718931943964836601996611441303508408783850285843982763217313545412288812623120845170847681081262849229181668156895432897201015760429968800882450217484496807649402037597479561209535750325710606439231299181964897171673331859511113413744647840486664143041087175281553651325481126486193836498199545306940081946201647943959993825002625478004967801867963487486019677082326337977195223011419075447845472434699966987844314312486019621328876592598873027474896216363610498248360517826324859701584092209677625958172738212642138215802263772355881828681640155845453999742874237557861879502222724180036430474478514063508249814330403298415298723852484284758276329431032210116919757971693716811068581369058686035196403566070680627853704286392291433376081983259721966113029428085638893709386637782948987743702145306995134136689913016223443790171900646540724179503378797877081925715489783322106586198416750011056737217344871903755908218893433602931464561438916255583932038072243827596356367986465376048404519161204247479679301994810356843475411900016992213750799414827639340635022060489645383024835393834672272823403667455638098324675918063142207415405047366067246449073401258701852752340452729890381217467102996602562401307393028699432391370517811488521942163122946423878461777058654269333597813652639364962046106547379442086974494798988971619673818381307270167146715868151192603452200196059542780053972277614023124818939807432115278774741764126192166602712947975323935704807252515114139318160957595776312186203142554657909496171680170804406436129473974241836759868022221823899246945103424653796858469412530089756863440232119401490991869600407230837425551370540270889834495465732411224746637083914462751043777149799851008651548734565530036384744670234673933841439166553363896928392671867335758958914740384949347150136656277495187455390596695804960682886774656550245827687346729972443839059060551928811014785922322098924942725270120939003373720489142932403573789710007460540142664087989299054714602630272104052278708244477766404147471480985910821810759137461816715298869121916653970839452168924548044219362276510526229589418868692296531066238496117387392682345471993259720096943397502297435087438652535675731679394424053200381105731482091905490095558170973897747589263338686219018474801889282907425924473292990810455673816005577746661869426372732174676846084369885921870802496952125705468773257776798888560996818841712026739303505991741733784568348027519099498499372628360027850923058264245942182818971836708168160876371857910310502617591305687507609664313889488811976033217585534123173846499368883967203971039565107083498803497135378874853775392207380355527541906432053713534405276722787331227431786495463864456115842824310925507465600110564283473494483032265608639404830362145629145396743927961165092420273186551289080649569697571351705589877871651257481988132034815412830606992905783201855633485898109670858770437090637565024997005145708890757584816989339333225220011821671634268212752556368444680149010061314015250042575437101179809589782150953548437629967789723081864350980743170173326990563442000717994656396263459250958852517540555769456283992791306041553574874815761164679169319456714732021100211376486135463649972778277671277895264426975564698240019815485528246626841900831804139871711934511945653164571270322336816166914419821630297468741474193693855367556116205065814552059679644188566039836675025295621442935169856547122080643881882980248237181418446521804695766755836990362322615297095957932540791932359190725261092603082212031651345509837050350944402018031198895160476111412373704820455418220863712736054112819333624768787248091214131862241087380355563684709556038775733941280736199730316035233433267930269193172888108267108250865689190161747399736073651694117181758685098208458840587690747292225627078741860590244756035843587947345144186447559977317695712036158380983384628161027432251975848937723338672857538978980417808237370538336460744491702397736722246252642972635361672397259182758114271198315919063841029668562339528761644078079650854583542833343820473137591789972512659971412064318201365209237963996856316491409296546491133228880508477394355453919609233421336679840935042511615253410346255958996799379750544263740127032110534892989237727735079497732092046220029159501665661109117935361270850296890920655882225939023090890923300324628754209526284831745687446990156123059952595069392909907859035552107796708490591927476396862743839072144467229252697553480058846482605401914711073339467709363120469019612874458910162193193457967948372161581773299460397678320452496669000801365530547144849878304776527785487935582197722830335610835926810781368262703028419111986647206001859805988897314540324014886744649293035873279308843192037085836798167844731170784608494801365020177425257933114501053758577937910173427305386935010158546399867283806434964830017420173680601038940909971890901743723783870047559820498586795588871972752779160796457355771317129266528767291100336217310985980600069161174300589237951657434491626384371524358179517969112459917351045621528203416584627192139940525162670076080595140759491534532381113901025847005355778559111596060917270263897278160022167065793940569536872171687556447144112501026782114425401072542272012840924374651885000791632625802414931015173001599920004199749341179245967871556277959713176706808246402303025215078263432813646249745038096290813042697418845618749029969811650263725974451947898729148382705896068793184785997701693631532527247293633780219258043158871565317129334427666941104724025666220729947687634543718599204434207948180905247386288417222401480343763042137271094229756111490021692011665395989475533975793220104432307339704370433155848615531667007027640465993229868211248354099365145343567062858353182508656190002011593419156957181652072756191860116192185429505346869858748848606096066349196657905152792406513257197230944754571233427818719263029707616447876410617521589772160968998445780710459611168228457558502850994323485908901932660089325045501637015132004445774839791053094578885174206332057018325779091649906650250582782481690757529832277003530278715906466773536514163322905759102475375234301368695422853707832901177252024484516042848344817454797221189412624377265687294115659824581672086910819119687138439168255731110509778718492750396720309329376193998473671265158827367882155423666883244874720759627901957007831597638082857421799942750294139541465978988232864623368150022703984735970256411065891473729883591067993509382776616762203476822579672207413319612198326764491372404904990065062109181612204714421446026649063514246488135290112117162979993084450620492777162523170669539088147613898456339046208896145817511359841671510016613437861582040899607236454972160739942672138788050909045450715704701579151904255230656141589804508506964166156910102809247387745828899699257057248997532805900842688917286179302746809844823453506845879328121315723362329440525571592724302623615464522693790013409864706401816386159840643784221665868511857544601486438812546137649890541516171439118581387519854457944630659693112389260585402713697379982388525249062460850089891417574197259052033945211428006902690234006530130230230388537958448251319414556990130171334234355628921603567531615387393971412595922055226193855282765794883228438461977745537122087428583634734998324390830903232275799852814001199332592197485732627793188742459358402142775563349268001491606717685787362133137110245420103515329053265416477103182923905375925217100030295709939468271646594707445703366371915734945920772489266745614847210406057731267178157309777255149931624360432930792611220233080312247002783730445355709083879016040331313582700385317465649656120396107447902191138420916734622992402127211634280224410953198878486032749745993573601607770622887311111074844517090075873949656516369691001592572254547716470543300896920395543164701629143928610746226049225668918325296815119342897043222359829649512582472006179819285653174680099602520163706908063366600609978484872696810634928971834479199604314642657934664276042394484687438872057646953946824510630226175188166612621860343669761578443460685601980523063783223317900570771958694581610544518448659045623370313629370360202167669815564906968002594948490236450243301045410595279253989839306258966837604201678202080256780649632047667046569947214469443594244346538811989254690890047531355117814167079052358892529733543934784550352246435221727336000132440195699923574163152453516574162107041683992456629264825585155862907124166639314966574094884285870239316698684820697780330834102626278920276851056962816522788774398940283061816411793025024173468594560178159084050044586039865880845200123085862939131074829389460684835682840920567903715577272866148899403823242768272011032953256267185854106970592446222166961799618230651708511713863038948444508716550002830381242109538368736382042796253354109488108203145780803133786652523123808989959401401032558536333247522541905048858537793148398579835222534796216942391893540538324996472514060866340077856716543642469705187704759139522543648279486033825094175145864220281225155083357281648834111149304275084517345177011844394227916941290352896899196237295401996444212715438545474164427615937134267275709666468150476252853261465073546432880276839299491175897562430809007123898060881379040021333215043068636357628120286794357278154261184642634862170907306001797829140680418281859487169901974551461617408651074691001351420339358233458750870768794700916208203966393479386608399557579191876119211869471225892865071991661791884988889847600466162243346993893553827801371584885358349561226375018959385039911716705219595543037109958159802142516412337458017266847802569529970188139930630549333696467496605483380624710661110833183754284634833718207042090461486268341278518870372877299852076091033454731595629872283531367285136425405685299839135379929534151476101570901371713190727173799983469172309321978141385317766153221984455666515538360212535208140876195747398039896282303965722678995989762914299566573261139511563693130855037490309375700356906716424264014822005194994787150756258183333100843832147626933715665873264997819912120306821046783305126852213961503373904107132496926353028479689903498624505044605548189421646363782719252785267205600986012714194324347906692791493905082065950844030114615687189756787668847760554910612489753623375337152358020684227154866558574109239562676662480043658023321707519281919901195620525862937370475092423604513900386977317669194050819275402899251437722260288631882422732169325290291409969236072043936376369822796670352930919840807543184027282602461279246945926907214926958486402362519447793653612765236581363839338499294073259443294033018784896755029295501997790297032357815266868344580275352621758280449359342564371224542195406285376568930994227696992184395160615361140629647768594024650193355880223639252638025138648707786748942345825175691203546309978911723162001755274662697354642818755088045834516787677156107635506643547493884618843991952241791126564739623327812460928779575978746914402167900397574544794119687520834854983877215152080691689422025512584650895165029108291122434371420814582420585005129373305043887909743889349436751448576096643968414491595640369265979922661555945516868846370632626162558847569235086067508150842522427393749673682568897397785431099111859228763415256182252455397880125139279909050341802477308160504532780096453512434707857826299769505082293559142554996995392193265286181896311022629197133960546572982408431300714928790692622464724858876928659705210618254268361087175974247597636598525986076041762524303390588631002018980455656086204217469052858864456274036986267684195670014576566907039366154296590091551474424322368222020881262668193446742991035175860909903066121186703409234257827626976760206608728137576901295400527524392473906861676482216422391879846109818929708510725963886586199362168711957997479332868488146874125112154371046666507267377187311102348513351323666375875598314992608718693166435783217867675166331407725101324887817657495852241301443729018045969525726062514022251264732974122620822663881302604692808197173819635737320882604345848498908219919588139000386265172643479644800940377237030681013180692904987114935867703583024662696238767875377623297137324667218127541295670307868472959933972108052961766464298807009843998340918522570808038380033812712174295586013338959526902941956715394567835079548929543919485758414984828810577815529705602421915933321573720255539531832787560228202946623491323824031559884548171765519125076805900559800914356172776354465491179514201731214630954697990375058682847275944137024939161690863775174110196839747964616034340932011715342698121442618441783988725609813892127851316155674506842296357587213132717391059361026049418939567951205984322394193918493195230206253575855931495174867995561733789982675358266375879243944316652449850676368470676485907001894650183696089702874305081682107882048055168038668237591545430915765109715411284233455464517121297936572074437763509106218613245840840868754948897980609546841054881239558097320384586144125379300618206108551010412663542818417232402008062499433420279777180010691931952819690400787518671076806162363502172038959748186269509920173421532211530141784601279647452607823912015243540429712383467913723690575963676299084654556357776644476487446876162196749833487764154865588558485170351907317990505676224361888182729319920266755508785408169855873834033675906960099624752363978433244149494235167321864914045649200892348824510593969189115622864219750570397521883891286455864462102892526607076814047819954550040223764746392727378611722296016857550925965174602716445873792879209050320484163038723427541008131586492568362059484357092793909210641529331567499533364704673875869083861850140563033020074608924309257834114206272672085604986794903185844924119029728187621116054652927411799442355334238693900387967534573262972083042642775157037403178914689705473802379249465706697193687524464942186877833289809185597243253225356662098223951797270246355442025143071891595353706802282356715668483944316889483594394181327048761343081845987140848078743352656160350814613239514356303844167725944943054042852359595561365417416224732490644152641009618998275470320141514403930650136516337417508421506306716521621518838399771280788602185401426033220165367221600016383857104808989909528874418357265947080159443050318308968639121270522727998001940367608437043789065901947543662715029526504873266661482205895271370930162995154606617777527642144267248527931215708660786754704862253314631129583629315383258800755382358852848894576911151197805659669051260735548700805412218905733152565693650692830401266642925404909022529927010878458026888719132984216945639930777246016650885407089027677904601051633168376693883558326867502850061452707752279313764711429915855717924715205341248404746306398845296807268540024208594615066563490678688861534640924419904423217457145928868076430837731964860073162367102278093793117694804950757276357301073720315507978551704717462615916235492923457646245316113282713971379695298160125140819926558997197973256831393217869335904383553931444059686383744038807806873959765468202604119251241713276901324198320499838978049130469262707121557031136597187024849502813303374797758562128499069950304578778408227347303250088880761611054670740963700401828954074514653733639070800433257279204327576986209960422786878818073928395553044603771933130156353505114393117135673306615861398120097310742159051373800870990691545003905883278290190232052268029821233561324860471344591639303070546200751312811499699655908282881766002519536163833599097962776244017929263368736967270302621028613968268048212494618366233137768608898035257650911291192289851828437279767996161423069392370136120123614755999714582418033148328813179431427852538014534180610022830836884056972061497865041388714579651035474750154422319649899644525017423846764739245772959356979286296618541088559252195425291998136444498201471139468523815428516511464329357363086941719954200378707334576501039386142144954580247929114424444631175623367120235226152038757445722410590407224381597674845379114314000096199611598148732392016561884107816663610571960173683251426858868987526429420876939185155965593681627704649424178170213440440266537102717948468732621600385981600253178530859830169413806173032195698156260353646980915786241385779115323069819405948216836975165780550396035661818875120871460071713633190999226983437137233766211943574696060397084139041300745685118542927162045156704878619169507628431930043081974102209663235419404987850979549028097280994287197122226705922008323749227498405882687930533522622845280773742596869302134074662685451025242730238569372266003359544922881170788690520769412604242348747523653793006328480531028816940061308741128479558112746337041348899574538425556960798757501023958676757507541362422426106702597158878058382816096324893231490527173436085149702928451175598155695669484426416375906693269751065861113559659592704909297352728356162363610938529510131149338037999976258322406897323498312126125765417806137166821048677374090842082273675599411621081889126380173544053604189919776441368670081673142183113335316730107058392596743412306012749949030432554582223488910521361777377306229110052312414879171475876153922227171258617258016230267283027859662347609754509477360599401051244404545355484803718242419150451865485870710607594224681934762757743994733372822512333010330476387922220123988632416451587948964257972536316171820342638756560769653294309570601849989693068891661565165858551038317665810620949585080838753412055438438087117000738409723517592835086281435844495327964817390162104161635014130635625443447391519693557815388456885711158538708365724443278939553197659902402443448134070994163114708775330687349511157953206539813338292586458067988149031014870189581781179410322134749745163970515693212831002851809687870371043681667634799837041761595220783376989466401261142025222381827178603357812045474025870182941830624372381643461909287167226734033284918783354289302422727564925916237408723493121078523437759866767047950569610176715203775368768694989033212367588826328974542043167246569009266979610059669327085595787003800102911659801230459104587075437486950702413357917527076925607894179732897736239821947768349826937790093504786399470544835642267448776402739441174490930741253530861435506718492056871465470892286408325569323532909540464917038430282341119208740239532777286687706210847344171015245680647166768869844641454825082922075119833907781205855726593013570213626360087436529631329345266347772949735866766985240898830460356591309988191712978149619239423291318579769289806575287314867274040629397740811250853197116513316857415652760922809837690255619957491931851892971758084453544118419740682530102062343105979115511756202950623368098628672762252670206309456475001543800849900688625529255077240712080822703005017578203567450591580080138808631316574734168413662624544375657556863035916637444053587949242932475128694631075480978673955533552684179693525273043004877683777972211750570942720376009567799801323389421031169657482502322686558807959280241740203461654443938292296870514187022561953171971705722549817990141144774007553055853721369343237057361716482614772166773831644435159488989188072471226319856036714503339809035655661519391243013523563573344112744297972591424902877474674457880147849584905466822414767937855710659385385718908729761946374569625753494790322545072330589532881387554679611389319490743245666963827623705106281967970092589509998088106242657542245886125786250037408661894401410742893274209800580890910171621273436898939342741177685813499236811778424300807482020847812064874153037001457704657034892082681306493184656084947364183484473759216786515704225318702456689628754084536956187487530945067041109007293774498755570793580099211956537436476999134261069555018911556863541392211668153026182172112029494055834839551699517801185542052234151737522682760953058436707552634721822887355543188577849881139438899294517992146029461481052354225616586479017804127839691635269225794943482448316837387935741205776107874045976936292276429988348670729859472038769293471725782715420321938734879045470327787571164271008650845043219370579019553638511623396699558778270701999531712861050956655148541178446535630443857584168460758011252866158035088189920276912902289203300173899383207632014950107381451756516196871960144682371341543907944343807995742307575460465949552258426955517945873939108867257575994292847536486115356348150326467206544768541460366687483769929249980111044476368072694776952294174339683561372141081455553157302669941245037958973668799122955733425985884885115281714489608292781836768540401650258417612384949889972329927237984894905630399268737218545731237049310957028310860284280249640292820938689383969165418616768138488695140874573390850173393761555123562377953414642481104304911601771405546432975473437222157545589363960852267014933005285076478757272275136635850736036227649348816223770848683540824769365260991790369015700119061390174150192975325597127307225491754695147829715646925078822363880768403594374084707240719966674197219880481768344029127952006666324225029204325079228208417690115347898561193219961618863867073983415094701136757141609142162820658233706237758861856911572793504576307965151188970450270490699621028344107411492290674791196119213705435248364725122547818538535856038889022640529115047332220294245832512224837672793031077460260072064524755576972454613373204391476574365336630058228125011312542325461379165791147632224235628420416602865333993278828243040059234229202329127390871604774509768428736911699869130880702344921239222036778811645179027437826717330928032176889983711459497484964402218652907743060011866426076215462430240421980528007205107228049701135294217979581132009846059576161602085769023862864671028953739072965128297748711332675301053706744965768992753774130841718563032000817600681100231859737066086600105775389858025744363412215691470986744406397832833766420294418266521390262503428408024227620027687573117149204392797653270350577720499976764339875804856252192008317315598411512257627662936728283081477756587025173195699726866736585736822841547338001820460721707071180205006218238941241142373707877663600393720571477201009449288303230655341000935987640721241386603046370680208510254542613959315782192365999786673086909422392930416967820619356323029638126378781772916398514485786917244061412687029071144114927810031726484159174241194523018951478453175339326376712128904848214208439120204077094989303886206323898211911762350769797215148600844616482894767236872653454638535349508436903953338309378874922990053507528542290445968779337769237228097086510549210104566662876512293378388563845310462878975278296216376108306545039166965808086602226012554309186840791899394607809470922514748195348932739584058847184208234121105419440500824868901220441430482512909567791561164002989233264178029962962658331483310399410166771674858520466660647879036562331399929173461934373798449897269114666973224279273276030478183011046621419572237214909327282654446721721209023225368777909928507159556156411309222438242972457910037409232944239565500166600542138554371352147856014572112634270611141935173343419810520867183078038149660436015140732856943581107473773008641333328610745827660032329328544122812403547220302462153252265557409696165884557054594573729320728038513566489920212940133460417485765266836639172938934676290426881019746289441280964758228250679410443029702247498950247764245190606403697229536970489380615782262282116928852627815527259802887979687753918573735774307247859405451176802678031136439613023100726772258168433765008888318939701758275341248141929244621044771319342605156780192754748280193504014665751864654088067421933705281526565999145573328592365929528577051821882026375137420929487366515964126786037983453164635931190186562545660712524592439948494002689370890661799151233041489782340621470209399573720471567568784560954428255469093941342244631936150171115357637056362043475750209602389124887227628720793517367454848796258934893208943561321723830814212699403851756674237201201271824942102936382986125380706297814827221778560171914621326811917947935595108914871918404460292640261408104200381629798153520249283037488221266649284435822645962773369676604674018245050708262599433398616501155308339875681999294128315597071636445215435084846414532223943337514504221906762899674570841706210388599669014890951846996526958546254718907565879324163015546252436040184035132289148955320419993894288270250751140282087550823508858528707989156067697035631244681140794060784514274198206670943216666914199475645436694754278339799925573515960315237507213031306027293040584285918387336300244542079595257961592005369503986953388116012893140645067699309041004792580283425827710277793613979083686839870785412343805206862736742235696757469625149222588257036776656830540961440643362293342554713503977254050416913698252131435236376675744690973604070772073999358473119328219645781995858526868700951547359431080918640944101676606649204821216083567739269992432326748188361117481122820247095923853771143960881093153566370251070275079387598926565375252846393581128984707181957910756845731660122966619796082185196111028288461915517767099586974853610490574995115967791084598766400032510793895318984633628535130931465997814602161725232640482142794210462749752592899315219986734769799728357277184394261159748905076370641497838749535757725871751283110040746036520945189927300211530674474035796740637735156708436904044705600595500278868983189602090790779820538122499885115599021759591538027515232030411783772393271316402335895816091642218903473551217245352068674621723814955369475121213555910832642789374267513162412585787914569841386659165398136729027546322512974088779916828182060367276764859065741780438893377763186155558436617458667481856388807237020419557346892942605145939998421609121136827173659259685028101641882277640870673540081350337338725494513850269165718643160124564639313348014632388423570956006278392845836012137949592439145341286077813842821719755151026640316294703510582278498869727299919930183921242060702614246039977592140036325391734203879018761226455772168905663681342066744152054315123252152955660760309891882142335124901416876923427359976104884700406820945429157561515044576442018314095797961589357453170764269091479501291393349184457046338703315532369509912182741855625156737557450228363879392073636145343282272185574365221396235090988717233946465260801657522614124116383471195272150143865509552615703468056369140021128716337874708785138109069122312383967466006542390489799223872390418517865323542958354907996297276060552191458953975065588829156646406250267127421440641117431876500162293297603030962706469282480245811769127030586348408879249948628888601801812665868517310605663386705147706405468866122388062873763260013774958919790265720128502603400198826515792020526024856437447764473794760554558978777032855482197688937366739184595840764477748438969327688700707731914968504627543992744314548337585589496844287008463877563306198243022239706145137102301587141567764618910142475120303055861865095345504573908375059350125626379694719815233710617556406977794681589261572856272091887038841405656283680849463326655424185569707856554673011736836518568691065637127976664718093016177148345243869036257712195815980513857559283476881089285161383892767292464109804439677001934618219687364346245426071573208103846786384964740917798876761724344555452429436817937283259218005038080373533460952911904686506791989311233378497817268944892394522912332997486681824606710861280256928426740887609917217289108352871568934223566403724066551809576523217475562827344624642687020171863463819365465010575672477959854682416036334421739204305369281743428607547848858166902274737425281918215682874572142341505342306264090256581499733580290481209703044410378997467311238605986558904840722718462454629395474943669150100407192369893226449752168098782071684191589991285334551057886407886168633859948849107462563746880650205462519353099633705080755324624369695916649211558057382088577378756935911518600213701938128932489961979251912881860492589020593819561680400272094183665975234829167637629427010624388877728644715156471146623848053226747042697103749511205051289573380839787985590371060762669873329256902285732718620890692910895583865599755992279083546983571693444646642821356854049116767501050571291974550627312640457055342614890010503715337804699697459069374340188220604844676195460695737944445882491484242956650028400432044771760156348445635194240371680764465665413434537366686142647684838453287816009349909908245463947489145824739710311788836058658081296960313987576357274306726387915279863751988154327972012400861153483811740219091314472425212375784287726601016467602573581591072472998108638519059507027260871309182103574154810358687676598208170732555075087819295964932735920566129077294155793873559559824326522501531714296824038259546405205648892540092999113899866705989141334752443898580338723001007689732484549083105112439315921889484264229778237385309038431734413538427597452767709160941342532216083402000647233057034999568416851587395055499074844063643694252816881091279332405211089793815972474495022872221972342414121893295385205870724109815854680687638739552360550134231825402430267230554551972296611818557903603264256686103209520428077135941279567688406933567887807518496808266097497857331590554030601781736025243241203550230215117550967194211170443327191404044127578296593567228105024817097293949191697539490102899958102605451912268446911755392282794001767478796184612682748107819127492357128416336436390364213504330107812602993777099496550529052846700988620564604239530588480563021902002148035238160510560068653829865067783226577709307809331864285079811317953776869278969032032822957232022689407479014746684355762900065972875165175219515042963347137899257144885345393543726064226704724176339354204285558599524346442937609321536030093212935257848668124677032874965188861400364609674221928765597941265969228499001150271464272431809646028796688872496762510049727425968205526162848094470176446741077717783716249612171817627502955443935485958465121120756121174601356895647763307405205519572055463285850293184625183532834268813183623044895551515159701890223964222758470375774957680849324792786248822306956752499476015804763751153790146730922272518623602915202963401600690054121375061154406919406061187163730953148863404019011746237781524733366788955887168792214342089679280994808059512471932927944551281112532956792360541062635502843834274609876612495611676852266955765101620569995165349489500651889659292671468017478087419246308647081208794011808594966239032085312736950273062270317087823932373781783624823449467598255074736615008493809109632917027290156093527959626303012273036717460361245778529157932044283507711076103530799170735269457254623345987905358409234903364946882930346640366246030367635441487109313022927504650812741806210195727962974057186669762893905163588268271157913148059041905848071731804257736206249354701971544336647193279460840624149062806450526542296040730977912720699693950387529171065896858798482501885943131949645385546480699741187863909273623906482415360959823474024292407474762863801627950700040951351193965593323227604642948830802537368917432948202116801295987057714768071932351275358283560039354041707641610600256660077830044172098561649907818085112189273578563199079752294540835956527577445767223605851524061860989008816815257777177403125755385187943437077495174614517549499886710641171479738191897361419406555773554303495399379166430664789260985571122285966839130572228777466497291180873935265468413844317948810482761930702531910764645770750410003858205344420030100188473132881467996636129399250546110910755364278635929211558686610348672378135647435642495522141735183048169885068459337600996124156860413400548486362422446895102010760414957365530187930893408889646453185162272766250192014378122659884682791121479341010057804739629091778936526619092325795499878691709150704318401101304911746364108497927161401930759325919117873987779347080728003638445705241063108781889984191473014667198341586878835180660764999606998531192200653305466076550228004434850419394909412660649214598747290060631173458271105131178112332552573539232817685301031873186143090118653044790146728180742897957205216916118677937205749272304119385890395391825032293411536739471698442088272824581858320803836969748003184511586362597081990957475750924307879710341705732112694995023572838692546294784488309531495498139410555511794805881105743771070188294720920937260118638718909046149520314723799907415660981967001096323372899811725547060477875867203070133281061627459612625223700054773944930048223472997257844591371321903586772173251216337310944408652434732200654538218037093359907752649021449915446802127627825120026547470060933646141996060268236658571045399808280375501346130535631720496919771292463828496923139099937258332237599455581641532082419188702624848149970415389728435177545825525411300696469619718056181626985838882701353605317635073220311272443637778501882630462547830840377322187880005564819649460604551345748749465341192448373937484250506141768180648608638141540306538275651695319354479437079518516622091956443684122420063549534366176496917194828784972074220649714946038391050133526206248018277814225762515879246801634731216908284912666087487269029328347338609485347996049014321157181189339209067762623340740806736262930677191511076854095690681705782209051432865833665782023215140818047299457734275775877348312667011610878665453319831788086222207593862370255572907139953996886863275357558929462896362420373990061987662319635372026397788333450143822583831182094080012298205339069719296080362893504822563991798275029353091380023547720543379637095816918785600090310332125873883136176197603024159080447420309704869461779860749075714508315143469695284345218579622286614512938291209018119992431200539961789337201216719613205609695923601177554292723437128348264656769340769557606681035838493367524450384734110519992462192344945486326614115762473900362610184649620736177665066658091299836956015707431169220562834811990601428506253946741589448505793982164500047053626806871014458881198396812422172998816180204500839665527587452595061601831062805939706688608097153736449138391556939627332726509809651074898446912013754899448178820755851243838062444938082421191335540843065607267378403201160331321694956069084338601958183887470367784349774776756427670409451646028707314847761264528543560535261453826132428496695814609507126545608639905790825738561476204946072431081423504498767202759988591437772682081549920569626726306364216149003205335390233232008748355796253862257784065658668421767264912206895930408801875212060974604418502675607297488396426849740605317512374122542707911109708134706839752833474658560055155147753756082322905879098622442509766345172444380865903810941248292358103981579689575707407705438875655786416254326861590863386922664100533792446785675207003330747820318418418347437142865822402097819436199875416443535179904984685672776393984623984537237443154955051890208561607183114878476776323038451647725019103748282634461514218697221596929258455486330246601709433571236097816925749871329609518071468796612089440747155328215790847140121279248686819843166008840577389680163930997439774707310291577901408105198296277230585517469391218492795943422893780993464072571658344961873606429647018620962102105214207905003161893212784838277349084596073349996279109311463494704394036060850999369942777387316909355731807617477216550130871489585850762595654522682867470734859597576731541540129489639914775329389050552057002869575733155442101399743757105539095211607691047751685701839673293692791862591549512138523530554159490278416740811510928143067203496111398037167713794513373804091937363753121868848724438584168659851210454212129820647148318037878579964599856068225207007056897258050391728796765026112959043355846365577688183601270445239437920647700757932180278113130679073703663328092726866603167019202236411465075698745639988143328166594498488361785660612071312232395471574461807806864714262530217571687211448539278633902761800958215975930983164167793203475260506105320785260488270185174263778694690301556301555356007501084208028928282601555817286026711508309505851081166635203037762681336902560440751424237511576374679952809444995969003661086442966650691786534015487298047898035431924464442856583193158239355838931636279846490231839978850413996643587752084783004420267772374421335790295697273488323905732737813044938850841641561037882571142753210582450666242669043472061591197281786696189365448518057636088654392999109713455353447995315256320405891287056662286624929334498552789233484291410986763979828933398849121791619450546144110053815792418672482601246984583836332453371454711599984209786391672089595649224554124185102083827388279564050638944798515707165932333962872823310135715758569098409343762700051923176682711839978173385146613080089745785859979939257323849948646637022210591675715830544045667269517501396614637934347307453675358275825261246245347504233799148726963774715029098753919686574381195100818160206774176608149173692364836407465894848535457578064009948183309431370910448519480676103876428862948963816006633950809854502626032374566997560437222426652425756833845060968779762404368618940233041534138112148405895355444156120402715450799541422553296801557603887360987100061184353303487214416939347607172546919843887222293599763992588309701719399281291865669795034465539678121573226008651945772090269664317482204854301441681117609220538378729407157021860809073689561450705566978363249747163124161163488160504878744657621622021596500627510081061962111553327440295765596688410496833808356874723194526438650306582961119314945207511919236443101081962270280265637494927524329663071407375089563424427463478304492589460571925965183455831858007595862954501299219425851346674218119109923033838256021209588561358100300395446927906993697850993229458226927543028609666000506644172174377195159524869376380303101499007364476671609442612948865226438122046639789215924528279054810122295532103946921219312512303983584226099369916302645660920078013089012374484958584450465786705182864904556623982855616084892953463203146017124568170529787793585984083479870307661270240178434587294454596264786744603803825938270983770100594318654745428559912561648020695868616238174107735209923156205921865097355007862275529047309513842956556415174837528200300836300292916627814163621245146844587687687824034592204379090945541431266772398946879682446665611555203190913302592224827986821320583857939261083162020271192019639439295024160343477103965723366016727330739136341856959311678356818862678606715643973225093068634068944486815472887173131880370690722170116165137150395707218051588030760326804309830106300170853987679985812704086250074308328773976075327586861166836383940268025074288658144307472924680658296312131557022106393027149445432465494371018394628249745054083688375185686374290666035313184032278536281080902107340324163014615233049939437215015017424803902605517989534796968791415349973300329336836765433520079341283204314056496554768450062864237889028199386867479011955132697567328682155574548901066492251763273636631642499951513694652116716609311988377007256478424173703121084147053908957503096032407440854097458523375520523915531278623981666014088410569528273471347887908748109407110794543737884201621923265502452720787385670337591928076189121327050250987088217255988588428303626404650131659146146173685098803841738800916999786906233895450919429939650446122574301197582645295315864470992190624453957992070154198707364302665610214252450508943073163317342504652973494180572657389931519099736151458320708579929463097538668447652448965409513154701206276920922656789915985620725925575615996363311175540296856788145629667357521255471297910878330941329478453427767523030395103612245732508703122949322173497405161715436430186964168487227451625181789833896090510792299393615526832407643342039883881167442088842818087587699057366522143832623470547743066481887142730188509264733419451789245178968081009396013265899434811868590476956179855144238078880140959453748161635290604421941210290180155026409963714880538854264000139149146403139543256757630750591192903742898196891970477773951596888349469003792570613524473050696653961572139332657676440738608092000677454239775235053071711592365116342712505242931058362039911656042263153111457679073335420610837430484391591979981078782919120096105649810979210088784425017483610127527807974111162176291290134013957525883792938041067607420519204109567869584999193114031024796775640036011714593495637336867364542243433751106379135788373343085052836319363922752654278278632029581778836120337562059029622365407452213996174784367861500031237799947023504981475618728835527337555003385919071108378735474118001488185861511021397392998338414009232937140784129130800650364336263966808761033821642830031691468861999970962891804807082470052064285791192302516039057264395938708343229534261027368609517748330528682164393389391403197386423209571593536742421209974510915005277944861504784637884514982494842033139880088184903520917100605647348701746690854583448089933436999560864634670820292365339152215024275464826266324600829911989877334738630932909599743968378491088435092050003225558300112931199693698173255108960853670326184228214327957476583800602131549362858377469058323651710203871608807480670490848574853946188932517254791665286177081357608552923205797880053970644218484859267617925169016423614540132562262206931046694385132076083198919445400737365670196739294575125539640959777284910733765391199972823168723819445102390624248498766529359983890555690846869023689634605683207308695786849523840199546234229916862766194514897130607515905093527078455172898868870833403565845547193588334641473311582883024730386538658595085873534834615890683718310850165493864652850298559777654777547248718072176752955380082559724647312326870803688008962570976547347012467517044941651203704219613898881037668981148229166935508927466746068927169999992726638890262335913984631932870757941641437119137964304624825149843327935608263033406879434498312500610959256546070375962083293657961437737542951195950313925107521528387057140080380693085757092959821924802619141041752027491858307841206993725387409535588297092141804215953477034655476291060776358252156991778561295158238720380892679428301201142714190240142035539625381531225305362733285630668722997837658667553735230332997891258050736925359100434390939777149414842291704326425564729642024850999563196868258632963927511685639357140698692686708257044034424017645257945060203366347093173549905841333518159926866396732925929059537335516622718085088989495645409300491038614691088702183812292013334155103159967680654340685169026835039820060325575253951714643431271629500654769955089057724522731013563529656213925827670173806231496870944227953211235177286906163139697345620490426914994838742667907393133194835634478971232735035601489983474655293968824979592085610816392654021088455970285365704030583819955784957341328481075377951856734101794366348380771723431424263944117220667456763494806063643657231233819954936991917194940234081995471773360116917178911224848201595744854318234891946964582304326467226786580137278476762519503180559152011278407017082729319985633371478254782150545207700036285999602738294759458808834665758961404564077011046150127055016214085203641037985253244435258473046161619777629704108358645392872889375454494903592744812027547539029593714621375727892393872044105336707261797012735896844069591960055496261070446941062610303659863976179861598809553906318741277108335616730605579847206964380406861188435437109866725921348753830132877282361337019728534443266735354427197253267156179235491239856855066430312623650474248896627349596336332011625962046231337207869706984016091132948770266253219855887919257040809309350636980258020455382176965714101458136399870910768155470347146695273627385335847092849666724810056211109727724873618951222438978190479924300311861719955747409708556745819882779629276847050650417325696779265479714839338135910549711495096674065766875986989637214139410667235718753272002293056230037924308691478656646009230140041538870864563826473826577022956533969394815483504788817127134613496714080672179006175882772880503366060833406650795307516043134834808795752207707855182227875980445678704279712084548062065437156264159316187062023093368717213830508865983614294654179365344391822528579736995739186760641664788010736937701119118946450116227460658214350117870313170665456999943460984267358473297243532535160180799126419547990489093840248857281817820058924318565938732938539759377770579406344637532389196015330477144637151798218613591687466601973225311469159383235180364994499770178442816644279635155112153576960452652147598106567779010569725627509038008534911915635235799920903507536191288640328218852727035207960295634031757387481588968052210284625666348393274268232343364618332844656220270464170829917321686322660928863491910651101144625059583765794451633479640723641746268529395505492912450175649729163450679632051556380686609678894628333031570578491738265250476719585429799040539946975899888800975827313144899626800084346918280446686117418015958872097207079561777164828681028331219227846941767629008281500381783234323137410824694680128111549362124649803891591659033088520076908147894999086660302326535332932637080981119873339412083055237775483014722947717941451646467582309802027075248196697820306637033246658092952458995251485664855174700547495499212508894264842213282590817738888499632880465860651918290246206168647505478057036732390123086911369220227138036656142290147912358430918307813047511457307416287236154128625348051197724659063597125917012298467966212574519146807579728238211348166419326518308339228693829313866064440234261247867548343750212202930899231973290275810072789405596561533156765597576502961631542290561944803049402073001334037121936325726510597986201244127787170801722667759961295010524819246539822006627564295454308791397827723216298082775316061912631685805615984872232435707881383394515248502772352404874988467581088332587573174526309722559995126441095169356553065671022772620398882507507490106594788075358619099469118693129059603328894943599430461279703845011503003792866531911489705579282003918291172118118064237608902121986268418902367815205418545769652477432115245155938401765299926431208701576004732984624777323114347123839035889967253868076746077315594558655800393251676154367607642078928718173772397395069423909313084329839998731208815670063846134048523541882075134756661966639141882707017622689589854497202745173975361003329229785832353126432134671065965228751300913124052667199131944703039935699098488231924840216905209305576141398894814859372738210555755382259653196014728422014425827607766759695109006619221577998774722928478617404750037389801165268213407243513361378721740205933839299375826439355329075776675563752000345560768518830543738945006751358502966657172637617212096138887449282766150642756333007857865863377683314883446010684753931373860136689564403242317325146285522848623649511361069714715908224968168199444245910459771802839695958598325771495505404908804984525912871958795113947716287177627714691727985891916994497055783554937199247193144124178014899299136224266646988589137086098927539778644691284393269624214191973040658733248230778057963263841643991350025830319297383884233522844863858917998735143531216814469079841973086285673112730994146935359956513285795841915556656338972840656279626246359217306320206903538178861972963979933997191401052077870839854414429935749670949965321363070846905417628388845897171210939950784756071652229101929220023481874192485545231721118464580535621391174917744786494703531487921573393178623853147437409069073162779447128219676899111698914619486940510274952345533214727708148863998493542319511864976961907313463152282871306531301873187831715576033573543630426572432631437048256009011714921439797223138461893156856453709110511010260290803011750088543643616032087683658788289918548758504869309392459569522509336016474310057515682773675091041992904082702955267045111010086494481370221562609076296274993469659613174247707837665824077529463185844723480672838489434394023475769779352092977837146740580901825110471212699365306665241900488788787762416854946600645354916555406922059621123833529880639211221959842527060643745929082962773904348016748425950822270700552823549463662845245799724116281978974177347851062718101007048997721961127169281655721793409749933470574411504852421066666807902992294640362825053703349692909104787181092771570370419679696822593560438955107969480898300053706117796025729877932126524922539327971090802653583962002468059242917877267600604031264736271464466277219038085591378786683493465061902038033690414697688827880530187417885002326117113893914263331511123031637567213677233475705157508084488183500785086532483635703222115458316353035147859442979700703262543141991727973160863454528313163436908215403691717134004229372509638484233160440011593862574986822004927716746916825306083922815862189918686545184804777083379365048580214519312301126004884922371935515034955309761410991699432615805187559994406403119583526229017431168155192163003576164818916897319991714723446226900384616577432235195871180477276460477795246396313754306736896498350847786998404475673668604234768359553560870258200327274149666105735925996946588692668546987425904079281421856296372985440594638151075816513201080272953544362781813585231892987902643988387402097365764311244258386274513742352451251248195946651962391686950037020464539969424969153613590116532301770323231375342391335260834756434806100555033276391847576528559232746273597601458202337019646976160805001526238665684325442472075285849344050302244060718416833831481311171274510728347148996805436456546832870954464891161900923149531583232435271002257547324001305954997895494869396388642542484281640203734937621459296370996544432241904258193079195792699184329868793280497484579566800067183769128435112802304297620266265804546613148373268768738839765781611062943384126921437729087342173098720227898064850829537274489667779380673943055050407587110300307003130379053263014633061022065230110544464450411612912261297924440868884821742860491347698779390647392903335690301277979545013251442275339102764299605043984979428149879621031907897420419461514872039370806361205013134167821674834547290893793024871603595330504700478177757831197367999966550368957789529658887105122543092104464966319655962836345646656333632089401192207958979607681618693896242603173506085381783936170535440830791278532321321427128135448387266893941121725862063329382070082704670002243330788229215517446255039389437380080348569964527533905494243605266001913812126186491232031778389237217311209962789031354970080593341005170713904215897440713037587436731345739437646405750230158754797773899914934776866559428915620467849985969871383405152977613722784011208440452999790966025697934208754710948398292395759097276280913551102164885953771402556010375972371031599848379991223945512118670941022295355386631018271771446750469499596496222730682419025468133429116485939265783334711151487785618488030758077138167238189427797064966446672098857073303420059948376695005764279317345828170579266925315171000378427688371177982842679209343877731454532128026639645894621152618324702936664834318591157070173508510844116688535108306480388877040266037431975190502765137261695090809629466496518803007294856773764538661288502592009858331079794772454030296077457981453656722361423723139261086454076866028562130899623928525143226019732467029489543257645761044201631312902704074516732474342462158455233566611129004628657954038694991816146382303711031425413228913345107934063554278644043190718359418844114191346584957774252397125846383213165087866935058129549620772805367179857212032742570110649853135496585131210597965801157095114997072337861650917358248004485113622038742279312607668499697932657350527515587120015594637174558142277629289388788278960642645791263103748330417208752700993803465355968526073505443230419115398722310101295652019071841334458918321523048441600949084090667722591127006864364888457843593649478534046601345884518878298328995997021876931877672645772657722120052766248192102008405829391283735612796790670393190474117994232793850380336841275666400723370816640901198378997868018648798536524778441285701407030804336985294409490182110801820127934579697690849505893485243736218901542256276786668316559312934250954649160013917036964535177780316836038454773321736660291652389342665283077053498843941157862891296467486987658122610093725621526370742705760990914456118286039113208597783014342332136158324036365958066694478620392798918611244023694863581588856034021474649881927777688481332825230332175207052814693211849162161359670424590227344249715697866353673484143942590867578762415937822882556456027684676713787791691367129563550705801602930892758194945334419335037921419337068884630796485373075976254527594962402898850649283750952914345070603784861478319873858208565014450480503148817244135715424872610523055856811166884985333081508652888104617166574975807935489426867522229712204638898650176612490193915020776315909117690367767798322988004370884072320289183755008094407005650309680298766338089889022305079979076188199447114387625522914897133295698871353746493302214527832970007340495509632117403322687273562398976616926409359325605552363399422075330312614260219400234959545763748891350149868840749915956148043411662545281363566439761558622200191946480956296965330400691305919150398246434214760757382843496708420669637228603443572494927226974782523845037929049698454120451585542880064403962116206422850354376552310610378766933043176110194108594496133581142214964939063563732246746429590729652048157657196887709173120076386829857216868944868129374782597415337083593644406770507032892780498826840842066924082158066983670454270411472957880693547637016708200617012622696737432980350708763474947254757038498644823957994997110850890071239592109210123288860578697570808058521452052939702668163479325470084817577337785769430741212481626900500349221531660538523728183090964392844053822215923861654633576248987100207073442621045436428096237393386077974258679720698353320051795927838938989786242565525693099148601592042104851625190081423186967037618756280895237998795716110564538249125380041197491936779254363148724269372647333282190940216317096365901418203082149171359598564596951343448932796191454202196973096981298594122759655848513723476690652531715668246593931969762684954451218033329192299141992193935183301143260595382734501804330275707387244287393440707853862923497665457104390129815630931663348646208783501706268341372701037333968709753969074614147815722149031792467568311182237974459554333697358214849299716630681282185455199645637229608096536898322296758658554022476865542179601165505542342235644725458898801225383327627364492107030801584536488185679065753055673626945162418043163181654502764799357015547970434436465846872936915241127305762371749160413286899307564801023847704061968245319753684401435913408615758000232204791433680018564834771989255297159049744298513302656239012082774376849348725667899976777046677993200688175614418276983358175189205947404679735593929980380214303857291846671796743290894549867304339964329342854775650708455361066098956115745850830696805360064411662864612437532306477565227359346475565765208917575760413946921539673790339544369892075697415234113049930450485378827204273857810663800056895407691382735075047075682184581305030415872078832809485305640131222789303612205550292220075869295330182281556392220399273563970022489368724423251677336385687871302559590955364620490468492436529056877859288665908814604380857471053782953811563586501048720698287820201619561506641553535740236195306590965972608368080392729282594908206625717594638429307060880040273792239116984574026126405877733907567141447717329559581134346716557748955597683442371879950423689209149686261824294059929187916850878738167157594327259396522670918299280572339356555602835414396752291872455311801824771572453918033638325095727887410382591236766820615443540507010515188614838994589909685154416543590640485373667515408043819510505045611755679027606062316177024811314102548674659884992424813915361191377009693559558644038684815600050318180425172354936257849424558905592047545411294811829933697357241704970328722807459867557313921233650554383191140139298657514110018178288510838979898841547836568187308236499282212779201645254902958360068296646040613865178971838258783224693334670536574003149558233406780680934243265897459471678985591662948024111060218925550810291465868039926927062078932683113647245042939261692877152893265843031940852818022770779517248721446725105472416311149373987322732831578224515088377646381840599444946253349287668055141134584114168128858815558320404256035053970577176980855283385820227931988721978351843428680031631054041698651190947065748254679240889374086978441344141016180221970177609005303293400563186343434193454705331246117461507552675827227730004623964057312937837332590257652187531011306472393638565181142070973336074626299288435779151410454156758077570243150480208141829771896492414787117219021454090988554814407774364115584489180077177270615475887960134470664821253958014999080295130914781200017098300878131540079347028174228208144172948121406320567741205699516521442326202998231190485996274335582083485091335865209913374179897298764580499437820162074915803009421571148991246141617033379765335043077231651131221885089489730142607120470761395593262292617023399430048600488822555725204406540485729962043056777069844270297142032444252936703182156818209303624991208299039837671937915148481112778805211880319749630876505814305442041040915544832110525242912010945934798764848242267991937189658446637639477981151673163984856108888238012855986787533041744827122750592282686344633742712263382329129400930092898044171845837002289293571445150022500782906151282378110950507014636182005737691220367996634933255448636399852792593871954826074749001522672743660121776866691263080921166950994231057960614381670812933352478981083164075809145713669303161145480350971031041240536220317199586343052608283327926126566144026910536235541249677129495740784674638606379604530135890566399605549289975296617464385935873272715778378105661490935400953900259342454852963990283892497685706283761278077221651377593323938053097639667927295535728868218649198525942668493486653307624781541590640663776386017264970567595687204381949708332991160001449048140910477413247233795590295859784233318697799660237873025723141691305706266313141908301291180666400468393313660793409175762641538887668206303332361921921789876866041282606611133744916780654302335851998683956204321262223323282429608601800462445280486945485441274402828060612444786282889529266694240746427948459519718518213082984749573329132857609246498884983472923442198875677805748768376082242334394035689765914692757565220573105123598003725779622864141788085934002037560165925284627142319267597030947769957639174301571635387060077395390620542340232243182596108348312809840852204457093664291532472640283509818333990867525011059218498911352193874525236246032384563731789157322721409446287363691716082984247415131143582734052317747288143848594104507221035269989957522082603612544861260995701130092895093153553010458711710755581712397966753342992950083167769452045053545903424026850744511114592891693773568077106427590824274769336552455459212205882684724469603166610973835933798594085602890980815519285714795049608321609581305004826504778073234149929479166177463866387707100970066264810178895080895105562309342903389714842651910653865052890183872520206900272512323716422943689665012959321862201596412741994532872061744810135015959924118210681570983237664659653703673676368975024353356309445726785412214264368957782441372397179412611628893104334376712219414971064978104549732434158367187599823193204507282956054277269356400007628643227135078710735807028094701063741176238653470231717244765490574209736113592064512353332480715507199392541599785811705857244987556339829882564512713906947648512943927035854369621761816056544892717594627032665857252040563781637945643007011446254286826378509662266121549430415556273398832672952068243142692273308822269653438485296548316768367817072229380680643545261214567664548510384650988124509891220463748024637096873203730650659947948013874999968666347526772890967134756051368074027220482691149535623825041020817395145282545013883851714176009205897067991821947371492930499627616026748620261197708552565598028677978617999826027651168483559391546312064855201688020649633361187311646178448384732082003632252151767841988348236650946111606536248758442773036082207499637338568831178678617685789258884379623952663380825132561544359352819418471859961960946309274713403415308439837573171066580557585908488448179125270766051789984087982160593891281567887505801785287663471755945430008107160501723090004369506337423619735141901884758125885957209619994928797907318474753435270779905139646620234704475215019358324064053585633560693228478624787528694409120683906374732715539948147244086015202710991243055172303626757822860480842979930256036332483929041537534311700186022019298292439363391631438539352246772771578618294166432910187846135364105861116598949353409071353248240351530174834344413909044283934617536320395667431681616578204326848539811178570855081581617379510730753604854320698842250688921328449037744853563545087668424609539227764594330838234094293485592249124346620077150538439563281469736884243182135626101296396797719832038674297177586030487196332952451599525370133419465487807208994002613753684050232459453841268552835827037166694814143601750245564675110343335652648068413610640788531009638806346787965900586525243369825925995579859056769416248048585142474264583118407965145957447453985546181724377774111980386922296109403844067576366506888352731792512336842991805891301967432052492055284609558872055456095355754752932048034011471017366312196904012539739386407757099427366799458276132233590635739473983599776082216576743827283667246588250092473353743829411605650335038687317330282192437196579341803290049604237685899188488111305567131403417285270129393025182790246501272888821955876583575015839207730160242498901960174927471995579126589874288466715915721198587160696533677236627038997984167504864643872198008465513156695885092421581749348338864049249177517065885914746990480203969359763719055113635371808639554968759448709874805937890173265443872152251177125544211892593077624844575456594896149369728741139040028010499319981104250236801589654365071791880544273056900049973979604739759380796632393770549596839286781936379681778811744092765276251509550047552418579666857064863956008981217322353055208436086303731394726751204500074033619838678401192275420739290548123783274476941033371999212447101974393191192359917101464221945090629752943716431736480096698052172690206067776025458347395334684257537823783114879292568560373376208668786003517881569808743372141195833108698281463237197206069588073016574575730500195647016418962776202843629449166552794382600580128221306204473017526190046336514126881330319826871266138027477773575203080161622197502144160135885295855095033055488073379886265667969354601749624128170897587401415779162847470637907399531538769712999337676616092274968960611005869353391763103644946511716243640646395960502357697292634153057378035858604267892677355207546208339233835862354947546509461699445255084808175882870214142961634863322333619163092054029087216962938303420325504816355546907153025713128215993789172895868265118770797428743533663307151816122753831347697528404910099555547069729209421126803843986525213469342887603377600516669859661423870028776300096184325423393536766266833086655367430803120305404490751997553051610218937525490877507643668409369932086342912733257270446840738973117461487707596085781359799281129144045459525328988779704276052939666032685209664466079573692976337438867620666911143565590806841528376354562367810839320839334108031826228068090359966728450533321132721294947875987433530957851024515522719118705676883721628494980537934244063596319347869806605785709752512804442218665406948942457620040621350886737644539898921612780190203010101227898601055360109032399854014419639189479800099424409932085412797849151946091477325043679721725176208980981218636823294347246034218184932615956714010060448746385751980047120727620124183698068718610069517845513291301246893632617392605861699489573187094027525655868548755799703184691763952524052667501525450646886247003456998404892328939206362098388703483510106440245153674336018502213121013158248620401262226516141568852837050378392115550701050433457609036137164903578582988966686194674960297646847511145028702647533076403270737893010555257709026461096914238955170576488934809704922375508606807560881925095480465251893013326219681563956146229920478508017028900151432112583029861632492769740744868008874412285350429613067754938310454943471973368874845076858221164191333926146808568488879937328525709664429632008228009417769278867919660731952939571050636986344578439204441551360336155708194542589893959849828057620781910547782172072441079823274175049190410205044451492640440073696195972342617719865444983783672231257550153288360841477322182284269423332818268530759847007244749453397323707154139669185460397570052032639451593965044125640160746180136308609362560953529510056585005523306093180203836299018954635595033574381362202538764987270338323918008863994835485999022400967241240536703581134760337461244920124339027624077313349981634035338951489811107272921310050017638172570109173056257806490562795795237465902193556221908459243588207596210829508335780966695885570250566425378076877964310903741711233676596154877393275067372833787939275611764112294795782447584983022351169049163635614706881136374376605952704360271450995843756202109214714085374521919796537034006628205969186828343638564983290752116146333813335107703769273898968654241370831193574165258521974692988555542456904958320844678535392591169086286795788229150188185243058314049018364467215513818506292906393290334139502541145280342723817075354011360347476608955838979357327277552272918762259850699059396424530996889440105643749667153305816933379189261970116759602483595827654462565398461733887138106913963660122802987532285832064914969906638237544424578144218634241425871608413418973658577600673999119890205383116136417470757308078093404781373044602709808588189775668008449739239436555164463874952234250406213867421272642907740433202192573280880959578193606334925924078771809823093760445241426646000371129734353284811827139977162280079864052554859167627507493901330983324410897976665574875385651525459416674440196077993061806969489672750469220991107195553860356868493209123289363847628823706492077272095731614955316274084754841190249722093594576661164187444497956972068536773993473390085102656958518228956123418654988697461261015435627607359176549893681665189089280132568800074098466113002417021479074674502831806576169323616676748617208249080258529198137613903928648461490713189223467308529229148152472918880698168942065337868410651232976920370577688692650392848625739633057138915000514937838079751116785179921996212472917207367469962600261068367841897505816003823590114302759997233272446300851695834957001009634800583744843168057039625943220974594560200663212293873402619916211022112462183104863445212821191120581437374292069801931857889322070851052859286425622384072508669917618190293117839767808954118213608143046987930575085349841916304052246041985294746976120603205746279285077497614754392086826282136697777318645881838023415937902284933968829931900064606930447098730287320957219357664145020288913460369689325308572496298254804319363631178821785734303234818701899724652310745312867882102321551080649811285201635011663027803564722296845729250815130929957325874463335973850407362087983293507891886768144048030410268484829317997749961077952067020595812414337870526280207905577101135872566033752990164753302369250181459054651413981169480076946279553950459872093866058828516936405155966435514349768334431434711277071652250878014483656992458781829665581681503120410472527158367782866950497554455491179028760096371426179703636263923734559468182780225524065604951760539661563482297245621967515818204367141410652093912248990921419222082011171498699686512974285155213010022930933864930393220209465338832040911643988451022750564391603463745333470520445501507493310639130003360759356114406932402098567045845370888810879575873759930119845290764404863050919540492170600867864885758715006825119522434732202127183886230471926776565285216265066999501801467582316436497437830746392871018119159546256429562330605415191892404727624313663002777977608909766083473308029968183422087167305281501378904871653668852401782235235316381904350145174790916606255218532288604230828183902587572461053176397570770008857109137108480520407087208239815638663321657686449511576135764120107643785808031143442597062904940177706964010697360924476260636962605278451385106359716816071466113944994239679204267846331840131008704726142860860988989844409837708731338089629815114532741171512060347359719470361487368268725985663302488783028173787889468986132557041585186656266743782335932413089178073448740407790226039351726542245781214968807332118199396781284647428464218561237784951024468987537029851889135477306548169514197161717761514790685758604094942145701343780929656526911461755095592090709091996403218451654877970380222650390829082525851648197556428380622237247314410085120940723605583845107358520076352905128065550464743808542906167632038591895056299993414342042726193963571159796406948257403025296597397546568882573341892721684160681622310932171936774165713439121169302117831855946175500841074315898008259192106341196340689576688577973967448044573159398426822178443545685640040203199436065982120963919939870994704427481597372772456763686413245787033970987138248510212754762389600142187027896775714611517430323290825109762154222747591965694580741654006340048550843499290579684346782739533048486363447734228523322794956750975805136359309977900732102372001125108500156344974994192649783954238245194791266880545693097499331952116690707035031654802658767462668386993455101601772790545742525904035688445316407020112741252612678325146491756534424389466033966862059723831251968086190256479797353133518898808290330760651209821451259126754329433658122817726238521809685757168732521144765011837147879492699637128332482127381919148949383872942825125580268252287936343089608415950370971465220969750702459233093125224050921321585034120574826847072170180112792933574820107157697034609292115354909869736856038634177973252466810333475879757216380329174285937813997425700552626621119158165842701973792528905963417411803457847103339095365002992408210411372955841029053489896483653272112863705021818275051959910769330375458080506478858741529796344516700099947204555817029308181862702968256615707195288150601721133741299003401777812759499295543913198914328089531638063409047366729698925398935674176296255795444282270625815904778297115177582814115512309555569683228148679677834009530866171283773205013306015552057666523954241865553939177722213897921611988871810316249351419117596063638137975941367021480197253413789004518149011142100822446825438488851680751064175542683341956523202622187518744225068215950157716075887650933177004025668966377289016347632179693629804157086164382409402770962091124028279155488049281599552737191371289316944115647458544963012808840043505470777220241326092015818925266963566133062446482889190711556080415226429846145641271611558561080664426413610122066422226062311207372327014848769909134138728067357572305570589132611796739728359044466405867977257657517368689084799765415494944613199666779460218302375754242721659814016369038338986342733714027960484868040735861695640217022370658400972032856263864428232130825411470693420217542714186138038454943404420097769092630005895236685554755925270748613719682281955378194012828439802172699538985081991986571775609849065342613881383328023638811755348942030862892654266184156105890303207586037684652556232938145281406207596364945313287727222851721420226294502689372430164113599839068017323161417731766152616123332181516308929945540967804691324502966664561040334172412326321276641776045735104549608988271211149809816692897655908636482796518473002507790692558176071999603582377323839958381785436234509327697168381245864835875351845858972557994374009779679414551650429458968255253579790769661229139589300353186003173326722983948484084668916568468431398642986956853547754071936695472303265770815718603649207332791439211479093497462657531741537761841031037858905969969966630902429661621550415495152366328222909591741786826295211937597477679563967525960725513790362982066054071417912376469934916916353260868683116237693661061364296700093934629206818903490821947484663334956212254959776966821532147438106360789435343103920672245575843890838302317087421311893890338949718614079450542016682692909893379737498578296347441147616813046741784865405336117418252808391206597463570225250983357561833204718552516787401051789618225872284613402122453255569447142710863451037664516454838441811234243669421054254470805471855210427141009282269940888143683361639917722884914219381016929293917148478086207911143212861451653261100795981703951837011171626147570172119083021717529436974384828682408520193244541503061133718966437901786208792705745159458894922795758122306860225132807598852834436378699132814272732603491786035754956799455432882735319509722688052103671362620127167565341684379796316538712833712811728487968527084630020402622221674233904916119685983521639171064215784765160762331865905238010934387258762282699273958305854845147461151887124937468461883220336616510064388632299845292753685335771379307895833504127691055430156561186708433153553843701832550379111213138615810639992430656386845505517559221484809178594303829671156434293017696864261500199642250861869439044649724617195889685504887214355112585186794091118302656254460965668355119217830534542132396585060412077453466324363456587939338470029938992219436674998058618004917817802707401018419072309589695722260972896774071740339597582565660203302803627267602483623595380922317354853972493568579742826691190756932214856355445561683214352329079940672824123666099654028585889609291760685000077465774315610093341291065245707165587898463744092651753760878924756557202499846301279627505705359111283460677516921143763107379542386341260115947058561302058161528383051850205613553964459961395593159667539595758851984459454344780144228530475930905633102471449189248303813596846462396821293956520556451697928448489601644524795440380787684811167562512247317631872644247716311185519133872430882214885446033377769374552472071987924199998141935358519854460428359879174581640392200141693416662308541072326749056319360459975423278378048393629266628477492724189727730594463317010952622247992615431398710752501050395884904084849266673419011525382751982528943529737743167137172310517072427563611782679908171193917992291587901050774733727224817635632498491535532314517357937347848588545461562028635392668132407090597296575333018706655594124708932735906614580057682731957044365179367682112240551710929484658632945652247094492148649593396519767188610507894957729597360045687672370841904829686802951721679244626749016948693916145629450352539063249931561367685128029918255431255807149976324130786558306700715278362933691887552751770122938138244718974933609500288295138913771853076841722104428348438819688415214555475011396989173140174417255923916546492456100690507599403902682183737541877134420644553355676441660847529352455111212873428037034720898153733008302403390377749954311673327747395892891376616556734420735383397932835107034675923351946986074742722629866568027770485245220495872926545741435418121463837721464419523493600056251943106847065562717549753974547493748504299615493069774337524143668328558577480402398777501371068271667602110736558120274345441321986303440239077125695231164962998478229746505950562284119361224598263926521136201194459832739103883670990659116839586727343804179365090675974754694269815555361384396943200072818712327685023310492504788552889311896088433693799191786909530741145302835156546658259404178727681237050539149609934137913678330037267720458751263725596610757284281059663894412552270942769228481533297809189447772353942476461407585776068615523644659225133509213871323130897945936614870764466721536815975878921193487490710648598725910237981659878637302730672959942375606086880236538701958912023782522200517430805063232028889333463050768043282462604775815083227756788224576795102829644367289259613106289235479840718899035044528952617900041984072486213029789253807459448303801990616867565858600381526576690658947811899947132532465140278270828132282197705070447299280713281779153613324047221877856005870554930541604618464069961439329096223243966638793478202580301512193679277921188304563872683141565680517232527563681788701839486180088303404612473622831399284837201274775923035685959794004469445969960918324094523735033926796251216497431135386448972793222312310599499832047358237276584059712805256595442276091274324958125024595765185615299221037168989630693638267850436402832702992957729548445655477220950572071053507374186372463597895544600793006841007268132540125207075287501191247309033352716424717959264763844491733268154372264245742266818442385845253655184778256631526634141849757953255648315858327574214248857158330046933634854515274644804985954094596138935897924814214501794664030648025184491617141028666264790926760828038403575538119413941810096451954611453367281006401940515011118397088729895344695471782084355066551959537473241674012561677470644520885616312947332740366813053008259425412836018364404256538428882573678280693508282510088346433843777782926352726690591551614871671512328268387792934974749572661988199934529619935537838657836198352650457200402126351256097697656337064919973660727845939794138616843411035349301962720696964448986035745496824906806403642556132974470877616477423646362416388206516072214051900157170705940685819079724520741255330488699392792860734476433492683953940945018573845465902759805876196408533711841498228602524712815404608907429280869456408690224147528715931400018794022392502050435834773910513146309088347395950022838534685958946847306808710718589605944322863031015705172110409660055757096014864946038802981482875179113883514298231775827581339407619714215890200919002542534314942236408231129342779475957796150452293734193252640810214901086253664247959222002942091259411083023339795542993039390418923306989711966955284375904638370595207407708187493597868330385967570656718905651445679985619447930921962605278174443736434201040622981130300842479617558772991558547855036482694970855630752867727752849998982074013431260110931740923035608357345059083300396495444780461880977973059069401534700423265303164909464717049780139849920327061343942708694187477663040733182338833019788748197673939653044028704798791589427247746318041648504723643286167550963647465881787954747763107190886155664518350220987507519300043650578557808134296000893319544627077347251696899111493309797560017206343433433598706536695587208814321629331079054343834319344615188427497598600405135446923347199717192407338199923116966062278368696880268598990663679583306879718494883145856513580250774791142049260528701234746126908929811933408433879411332841178443203865041083997278854044891763534698361500020127572226566594528516631757678588314811377107393939767303642532021849874281641836750262959465567245270060754782177187009217544326959385318294900392007655832541996966716032077129099825846502951251326229456231418906548663792629510472399894112877637385965456557327355940510976173338428000533561955289189327413184583697347662927990141630829350171114575492615742133048652160476683380844112925021221957462490275470136377836880404540393957425570813651694364462489611998776109158003326700931587388235339343310378914947182769209091171439770561108446360518721318584484764544625654173245295453000150517081589291607496843562242257033949396543793131174088410382875778022272279300337809239602160999978397279756733792407609891565503593787322541004554603727423757771874281134535030900590303152258282755907715741143474242993474961693140115103355890248807629938776439256099389208894872344834337201955643629026680517457910485557609751532690401576452309611044958604344677307318738060654750822656715809545156380257795636348829515298888016906042671398009860680183548484889505873260615952429431620844727741548993153853009599180018150573172218279602619866809956041363818806275879172046397083168782698269541442877732669504117128756544229832863244253119027579617596753019741390481222420528973599999081027941234858962531074093871134008474046135988895991277208215209043986200318940932949533136768277787432536767117638275320782969404500131810741707925961390894102614582498159815982765561025786533870021606477366127367308070680101718829697604935875716732506189878052017512044207547901479682710929881934736249047400978405281980276473787406278724131373478660500652992613725211559521185418568613112219413796255262628596588079458669997865093216945874826164773120901120562623883130926211561207793885331076160429428947676223496311119035679263993039818447344643240783193074545538824502585519911880772961655585023613188221926372803957886479047668424636726102813097377808828154324260511283402733324412231202669284120705226653469413674228040054416361730044814678560374156472537178582186528205863008265435997749852718477009550038525920459035263053749433594172479655776131178867405598678125046985641128546219141449820871096378036289940046087296405771172470256714565324112545365781743988487876971265830810127045176277738188593853608508997054090134470122537349962898727512817810382946915882702289844718165570230420011891726245693512544673635826657640430125918896841518174487042519525920379470019766619560816365161245022341058987337818018095389196670314855609175889318524972197287411377877016645624999210236739601240406287846736362186626692177574788738058647032575124600448754757513784677787716919340729772781535365901448249166796241103807479895860667777439892355124357259700143857316028652046263856351682211869253291856506471307213662117137225499124009374868476298625017765858076322544750186964346485047051552646112197791574554647667435787733856687173723242767569425830469695268371146486635674760267000946502004824739841832105419956999290238174664142122542196100915717478558975418672058133360326988821927647826493711745822999628198072393994520707189452902731989484857525728384296580965967561174853091777573776577321741118144917865991558333761479427690204567526823791254107811754126963317192645819262961378691623492696923221140246526962964746054446654720199807826029099309768801497112522570956823197580302241324113275868780107403590426951280262934959155784180403870089412027852787353114115736477818447576842425531354792565068360080477763749038141236916118630278046178930499829429276636319353366008227894721167912388160132827602803400632369738816338897814980679923283712328876068886532550404813128491861731211024038177095879822587352587033976431045621300133945483464005501363080193729186587572625852723119508216447679126058735167897909739944203923254388243078934487544015052790818899238856128070432732598705104696825305915407032388168722397786647098409607497572385707840079426805395905307730544349468169193041254439634805771653585534988061270134126886876079295144520228728224873684749614373126651310923452199047634715664264409118491616101546891452742096062026028324995351538263856016626159486858261639437098756276105346501210490993259544220248981806578887714022110392250421556152809809531781404425598337065832810009023719356075894190330781872007711459189146487096294468030960518384622958929968775804674614322295648281095255786066846992453771885614441347396038935093094718923787446417873341921005940576733851755097067140130970260526636751639065859805765255094415755586601551358879921505903429168019843842313330648783816106914425102163985106572225902248637861149501758906217809620352158992551159325449038306829907275033603711555539918175861493824359391046272235534283383361622595720224539810039085673092170946546620108872793408100653612206724363756629205252020477974050989712737185799207282950991104584873121433803660981826904539226474519058882684663366345653337128694598276088948571374054447223571258907637754560039342841490545187079843470678814016837038402398946135198420132974238565095476232973893632471173435659627325719751073089153966636369435983543355241676082925042995213609478941777853855995347179104121115611330251795344573155864506524814126541903055661337911336792984362167799894958732427263071239499797990310926330254518837581102477518188608828741191189876052708118445459262381881428166255857057663987687776892608883736862243008496481876628592164317599948000134515339518729685024977405710497639737938356756382035542958534790808796091959985178839083081883994848496847298082006040596174318499289550660461463270724717704879268340227957269530748229391382017333427154846489812986735959790917729037286609674757045146322904584069693941279567583539003454558759716826051265400346030768149266450925660359313481252832801121561095782004707143316096697090127855920073800241703218763302323575987685881261648341187474333615047239935826963489009150627488511061675030926850481502560750965967108914941569748081925244872012270507485117581936769655920135775220663760108669720179533278094644374855032558666414416291601845443079693401958492242974973657355119572357772616108674586208626764135460854409894840332845048883993556948986347521374266151017270426811955939893853946426303291502205148270670192114544211003797501293601174489364473349267793639621811197099266421815279517936329721954156203337275068391144917117513732196571323191495713676155410175822483490072821162875700167531695505820123204478408711172788231087392087777910836332695930216278255380716371594549174778473808415614815003832677485338633990146138722141163774068794749878848469906983728600685056758549001464758621905177498658388455578736293520146126738626417956391814580412306928785111115668582403332803270734039037376028783842089808179364026477766230561965515916761502372381605182129108815293563406952341431478944597439086857791846032787048927905286835655997865962343380929191300960863609045433057003144142945582617317760973030839937040706066934784643548368005700366691435682481996178219712509236905745715978996422784053202089232582424177824251545774794418352429812682275812067043250909019663782407497485571628580529743384589924519085619579813479350542931092678844226787936653323355831959529780015927731464338222361825955196935391326400188776094250806577431612820152726890651447206854449340177902332787886205014566456809939341223026252860269847832348140288855747799548716110490748564509337275522575807868163326251920212850342476737527375496263375626294421483137863901036387409512801904195142393576465882555415740586948051360466617725415690037225736921027326778098759586581870474467098606756386421762915014395722408184464037351202998670623475142018441648699207949097681652525862548111643823908316346582108162882878702630054842600972869126764008520599987999514668473204947887531428433003837965505903046864258957714741719756043339167135591997806372300406176865354398479663194920909711595212471104032450567542356808972011110757439824060918190264932386414907794784818159007354140870688545455696163365969784423542191220557105767731809064683349214444002343206414961834841397354111601399828546000239645979741915167988533563968041889680176009308109021609121114943464852351496351855257214084710304136304065708994302701235078257289897033599101099844450273749860402461599843556298307905346099206115348890397694602673681056934051239987423150455157056950197223691253943232817321920080459683897082840650082222940639000581082660521028294888319965746290699724415113496744574350454017396821824605779086254575673727533835475116360603543698227523441667136059800524645987896091200303769780164320064059504504728186541667157783729219293317151647891392588486041750442240517771269577085821612872125983033295462842021427463057806863854011575553673677945776383973812290336026008880954425120650616921614478618915747936697701448241177684047043553607915216205005825518231790872304754689125843777985252109478798081876541735612671520150747106106550260521738273467499757167951296086531986954367932078891771828676966638856835111166286039608433180966565301937928385558030862585321902623019291463618611131482560071837604734901380188907005831897686318622777207662448103707106011643815759148743819149547957097184749801697918748692017250334843263781900223133385144439436108165629454130742317050345783727794844673040758971799914361746472749712108546415174934776434520606767644157705861104375815001408162678574881704170851808202870178798417314050784947893101933073669716464854086892706078159356493599537711106063882955290208669838419472393031416341731250261866500658886391631423751988633955235394373605767321123715011426264365041387623353683814316338017432159735041286930903533535211697439182134420149093876172282291895589119409424609694717810638802042975000196433969544376149442833381234812027176823980733366714627580834684684628240613350539724062513712333041207157507502879283131984512936420338566096176081075308359887083725086023184378155980095250500501073246703933506799408485134819396307687521302064111747751383421385979584613461363875388014993162188966925846990339324240533114598741471995917144202409134468028136925352226706450929846882709529627613770430817022338200743339676328856184138748427212098845809209794445553950619440636867860678230432476451402665393853009621191474988203142892482081449867217092215733983829637373408580716039830321613578134948754433638295519678779714440896501925120816884857529769935302466687449136242188057283015451021968138563190516611380466194334432153225940821146246877586617023341855965343360201435631515240128285183987590516995601356461714123283728629884771816967549926010087386658942914673761707982383388661163008717188675237715185047209405308773741557353730839942248244647007495948751965149586072274384682960448795788174176572093223506504970062488442064459155300442627209913184440633664258171287910759455100561691582097712757028041856524851568045491858253570816049496581424596178285046580716397934966514191442376455177011384179247828571255931424056791474741064587428734774148629545751170944747920420627468325999552742571680043161637118481972946648731225378817199253949786142881221876197298177061543995668809636699120402868987050955590744699909322625708949002081713583638125325810090697350081175666668606089953928812964915388398921045792376454548226235127061759242760265625028534442903331958149188454882417629687689937365311248650551435482486429706993337748892188885087423695453837192948454723516655608468063919391708123377048189250842837267628736642277661109166897703876803859683315127411556981071779284305769966884322270687834687116860842761416611768607234539749619580279494735144618362911768977217038127829622128484623017528777077749138235228918534939608077398308936690433925802259657644446187557699108491484489041807051070276869837959329064507589010619611404423541759684038250474862765709902742160533974891818763174270952275053676213742182560781262082155831413339741873952709317497948460863717545452335079155585334460160438071179260822501226770920944475703486923609785215203754439587594471000820182518972560957959795124635194177588122611866486773331073416094715322385353225384211971100515591969348171646969198814753064822764407873372933194197771040799989548909698099614857691015403510726285988721256326132136891028403849141775458222622110605797539567296918284968799625454465597139972126856511456526168487913411520196047953855935776504307644785729405079705621990748858754050385905760573592593655874108988793796105914927607705433357072699316383149160313495605936763737739863207420756133846767905284188599095596609293167553669730090211986059946572699132100292616828146369852001899667883152510437769595633274802886602922343476377986219207765784494854050455674851890906912294429847745969884088933515210464445846547641175835666928276030005442068159231156579294102800448751403272130876956181207878514573262826721047674091330728302918287126464016557631682844607294034317827791599749879301903941877831655074797828515322710542266926432304973921987644192912587201011405754582786547535100093805237421503603735040385091735839496899433420307680551282211866537386036850291843824186125263421628474584482066367917891605284825794878735706466492881267194668098490356449221922054047232863770741155565746196866505082152016463968550722096366961698208348749669906771804640125736266802752078873242106213580524699667804048687889941159055433082855369950414567433551556560127816239942786499849154976609703875455568769868938193974576911228996371427174453844401752154083403409659409237225663356487887405784355307618193633731745302885382207195461759147513555700581626389401739441608363051952857575334915605089569364677506471895080654630217141097184161718754286264816513395811592390443091148454653938103800484696808749258093523157726337236363379994417727810348954955365365638436125527030440369116919765499229363742593007063011502554374108421182545511264227580371622923751022778242308429286529029246233548537972487048521899804133074444190793009760351189231934116938595591648378219142199270944809214134196348552139893786319941184434611318762370096456145247026666251305488944697506578998719731178874002729751150587740060789188235213845530763587237153548438139946404679776777711723606890423294395922008832370201716073589759669923617031993637681146867786669931506919203466434794045971851229405651692148750575271689907129899606344615062420063005838364995993049968588865941874845476415591921043917754913572072734352595509150864505170963787547181844594900323124816723611564600022568244664027845703639434581558210519851537103761083199520403526456680884286593998025358986886305518530208231319135821909775525696884585698529058596178587175181396982140817256327809758064127237860115679579258307805655936724133173576099228659226757323341712475834836727529295596074538391831279116417763166642202912724592850968059000683506213597894043596217866076898139647300814543390147116295343193121238052638930804609901605981691769959568030654473705980069576746986023950249560801710536756681083550436467477315831525840397275447815169203280019608738309798912177020594726833278665521964041013831591771718002772481496958026854609817968187146480830987634523444319780660937018616540572138680014691483051276211878636211313875457960238492611426912850292104568117589285219491386092489254253991084163551609004572300433137824627371195870054789075213174503778787870089228216468829535528120019556229999780859298917815687683102707953436492695512487296849698636688478382131171096013227063928080164142368382128975258513023685377228976189684185781111557630579912076335014442953805796060844709097179601362620337058371725321339715402726946660758911397116302154126820970184901425903283972738081029913445544958644148991014427452948145915245794518710856024674402113055646133531816080934237536710418921308896668562704531052818073566552607085123124892261859985439909360079910729054850380786815507921013522922667034238630452142809497670010274929307112541934102628519872986970258976955419636131888198837512693893860626898568291951134562563710225018109509010573056048596341720095194811861533008270882798391177829878528730135191328857804142739809638388360723011428357646599956344172387511313638438241608944870787688346869117931981211312769132724601041078429507038454095105096729530327236832393269945280802703144671358981987414124292335138243754768596401337081660854337816924785643686568757046086847705884850467057821273108694042319428096195843318326067621209296235124346082699327664188532195307745562385838441266186101537298148485511140454691037923462879433360028398799434986124146969769450304950729615166142460194945504379635357541030832776407221756236919944777056115083644422977434061472521768167965649038657266769346778981895098251080070638847325159841593318803938390228236541597704266491614117456954683172274446488715992948999922723102467878647853168625325194417891298261539722145362532587466939512497714649750592814460958479233245866985298059187040709000047564041436090235176746423853176529879500657187241000019078936919566535181559842568922447854999121486300799361491033827918850766969892888374571434898305716838531710656482151295697995713629970943639947543430838429306047695557544510763754187247763732444587833576121025060671085677763657425822985426023205360269419152249232789983093722644017420787542024697212481598478748535645124023728483619157239973968860205164776476824530271638914761891636368866569573341113297345089242281215372363973261922980411907939025590031404264217187477547464561196749085722130431350095331003186924604839139465876902410661478305744113938437989300248238204327609277389177822334381811167471943504582470729182955961421070233683796728332718116465759556263426826256671006507574643072330244989565015451432483368687752383864598550116000213739291422834145562396120123679966826754450468554824062539867875132948037810001523955209223845438856475109221705886305330850631488856073724499205367142964365082984171167705725428678793034832842020551169756584483967771727307354318717568981679321404633085161963203954237962543131015976727820433004709662672306760831791109219500435942568126207324866932041945147414902268955878475612497562501837640532359693459128389352887824517076588475211469917925243702458180168897166447694050289126876316026098113068718631628941071539713024988646050809283516845200884830081084855311764901962276510099615505688390672991676328587437180580079881579656067882547006198876172341875543241875246710185258146746528602385978932784041452615191038982487055981300996740324782347398778276465094569162246985058292714856622828879375135924384242139020804809750860195099129534346962914658045158501412776993023570230222419967993405377123920941327067398692309049746324746161662660260009811082675183160248527758948394015615108494410677714769548141499365111662827244066207297356973124287300674023802318805100985381282640131404889173737173084591364196545530496453598957533713444124538744754632392379218699730184630284068768519845430943781060373943399599698042672130104376828746330461111729598534289949412477905251603698012248057825448052192763883965414806085175928901758642989294412407647911965035608582184892351007092129902912719128395450177295229308003134268149201431139640387406666520092426632467157298073224848765067054533055852727940405715145765827629100922771296002555478994667939808205011877152193485402164091385645546389206527157236850645348484736519481121954853814047657814727543220587704934642248593027426841959825031765805088037098946289509812781805738187474997636315733677743221437272714047216597963589838475798725752659624916648127299725729816674241843354367306937979627664699664096439127335443862388176201464810448517619271779933148877454127674760774522962637618725599814864086935921110166818806680238250299189071306846541927044120222582349937524719354094349141289939745171485483336432170782174915112406093973440301636574381521639248433003002972467653471655688700222810137766542717933914305420565767402085914770185537377738226147108746558639629205112861548604209270750232375224828125237184177961805047172897516479772458644946827181087004055083173636424015714991772121648201883690389539034803632770632273237909267771191880263473600721725280740421030730042893408017536372664212928081063586682946660083662092335473982545207341432259999180660271907892189684971978160454494171611803465599288185558884207938900683473933202079357319828202781388614479749804865581334047687956198440487051998228059118001775575713584864495269248944222982295638234516292282734110892655698136015118232214408119224876048656936102312849861561784964651993159971154042098026374820376013902876371580433989532488413239920802929670627516687529741527504699653151941631089030202851567582691434603998080339117988994307063568425961884996003144345138330429844767309739124484914747524087735905808677159197867061096859278746859215333262897885042550487504416752314328567340757552335475332370490801312267186643321926496824050799270337564607427816168773241106236703498713610333338241328090657934240143258917382121579242454010193942976090431992012548806851092315353374760489216650408207951204908084209293059601054123090780545384202710122520778506364311501805076932393776697639912583119362724183743052192809065380348011690577739042783544052916565854565720138452662433015804425529508005808623700227211147006101169936561140971722428137185324654298343171592783846556959735472771737090677307627463178155929033426530252390146257189523489805456692207295191131778064082407774850961612944334704817415458823069550895686167919448209805242853116242996443252228430921963994012598490874400566977121511090712904341558399677201923051343159502024769224649869173223741079875782711336361211365583851454077063646319350484542904222012784819378755023866429463614062382408463800835567240377034886670220804465263488780966040395379438723908503331513010176494478755483390747728347164459564221254221305691680197361473335699618665126884420438110275690212663000140253173099795559305984668525965525001486030342400846070929011250064660055757478108220404680235118675386314118042411775363334307078396621423698884398382807144048947998012183816600550809912089027373430466594364629480865996810235038000390643800436330109764735486557988833110852170677466398375494911687555829469101954220549492350825540343039835455144463121504155394441049843502853925058015575953905477674963637744254303359684771307388532114591030958966845467078146210503710065554908325201794914458614266839818187703856154738644450602288793176358542353466233837423539068618957088435386419678762964756541582727776276183162120643192040997496509287179444212419756497759306747905073099230240865711909375174260838945657144467284212222184205828335133553717330100022103477079821865764624518897324634038648704971561210296920378128766551201419709146547169523797429652498022261834797433900034231273803880277064376576082249868036634613226638590991366056506405776864621689011389196965603167413441430456230656967204187820132362522815821641695759216523255093236661716746901534227678153449726054405097982693268264196171215646139241472000220578034728224650482862386723356639776595216411490226789515370021321046734865599077395155221410636479675127064507054280705120375876997621451910413988881218800087948911145075569332295631912902258376069032459043942219389715113564346573518123940360105069102369644452944091012176231767109450183748361095536118788618132012072619283942182639307946887601903339172323414657064820112689371204324767707415793578908847477132429683438026635898898983533832245304991257303147852720710841990347803601772210716347868571530781367505157473476368022851073936475533073554044178351618774896319853910729040004361391442388532462246983067343502476522435176180038914831054166716691291148921523650665238509817056702156567789407921501054551018258416084144447140894614470504924579686205545681406759998509790893579698628037437468878797436691651899955654880878730401191756934198524527551880005457428033586645714231045355120320587931357455760244582980828362574377790281579422681791612449224319570424540472219514222662409970857954450680558070462962288979652584582933704282305069328507420475395493487758710965111317850092346253366437025759188342119861792345118414578874922085364428125045712413303080212355080419232808015987373656929503964171575265618032737322534048075649784654784572039490350317480825839000052396130976761354338989042765083409218626069959588685581440342891378352285705622242878623851008169060933603090384324510003419993263342659303773196298441121921258267179764927605603072864216248061773156684987067836820014451014342877124615136186620143413996928315965694305813815421937965459388976133122880049891757345798512999025816263124850040469135846294178804844631704927565422373116749124555341905687009300972134803062977260004480006868067777293062192111915417692838520683337224267091402237545077408540729185842008238086622335885410291137414684383313947087821554249173074054605616372635247486527097540354283039152081237089480432673806195556099001764101601299534186007394175815960080289316198868174547260388882001471251212395058790880918944566994691351143565463196745460164318028846232577958715737767290783296237581644780603994801480913195010127315906694498229782078538962868311213304016237784678748797934774664610144520320299021064992081645914993127246912957208534828016153051317610507432626773321797267641408995812258191974530049568190486910203234623185581953429995805330308162816515990330333011441113059577606352948524170263995896702556578008205008896831607118470547332167318159986761382826235996284693888401111418835392594792013341676205900128107946773674288986032050080053950122981902995116726325258602327243159471787605417665412709183117175483187380289905477965640056286676839329689766680781273483414955423992553380482999483305147598403411747936143507643537465207965268195737591340958155522341995956064493345644969181233707645801177259460595143807597226226323700245011103443467608547871289862385969954077493663956326615566600822548300036709618791854877481900595203950048930310064824936677250276506121921047108997554100643278480016619895624385230818448518565265757981749120919522309661417793910998739545746240912423269496097420877530578999093359437541015749874850810717873215547550633010232525394036323709003747388226726381651782916104645372257518395053373490913741736621926945721546110134286115426221729455059575120066360865659328631062445819437571686228117838315984379331736897540160380217931286322238420806619145400661605492186347200862318073124343992975656989435109898660967932257665883381540200143055575112961344060360361916802889324783968278886419126396008580971252394849332077592780465576433008024626520599458924449976712527318992483131778475198172510311131498172952061506619907344361840583397288947723840028434365418398091239083175138176229027554384491395005384277525523705442349317677509866779970370694590853163589560192234543465485468431985774712305791062995457883172607764754072346411803056645376664660203184579859056754673508471183773775157762525755945636577984755715817132268919778001873129053525828190821272536509898460677783868793011612508613778022243515491110935707737175063370602572034759480341402988662364556257221667364706729615355764563640273848760963081876209409843625919614757956076287086508842208751229137734468030431286094159894055230887036145705935715919370912551709461076890029992492136384111130561334169303017770077164061921355793669285753513355577870042859293382349162701331412078579578486626814508641584076026892841429549879175778936948967383450146834696562372525368799272004062885672944968995161929132842414416632964618161759094116634782374044807813891945376819909304150187799604617126210839136520590335967856950857664806809207930052317398081975179074489173932743385244891207557196924618178830191799143230713394179141898624985436217435024327843241378083244417669697597060600925144157753779440617277923603524543211973598688157258390039364747159287309896796601774783236004606447859328897341159841866797074245030863686326309689350782660143766126649843261617426666476092441917315916331233624387470733251745194550775047790191737683962399594677195087308167024301480693444479220023605516872087815809984253337160796440191345449827802969043606788829699502857006194379473403602178752740473614627211851263435724631706230575401684769007267487270893474793306622234449164226850489100355902973511647556264096455445690166246037966083800834558534607443598533654960766747755025588510412251657314612961311628249042842693094328661684229032934624516952433241068675426100567740820824478671931494627714172373620512034581047915819815719591483834394454366046143587378217217713947285914592190703007574645622425531863067419921621084518732156692111187491448722162712570876841843942973089934182778792606472979828581304963038785112841106455574257323899216813897593543879985761023960336001219741445716046585897166678789992554192446020426962026323423939875064146058232445338131293007979461914669481598330960772957410973406579497544580852365000512720344809801602690623815781577595393599299324013879049173600859885106583875242708305236879994141129512439449929586587098372913385252179738895355759054334532719120543344551217997881875952252694471408855318348721606981838706413534067201303565676139009517299710830901168691814984487305429314732836436294155325600883711926961654679722171687730161324530917646118430760959430260127107370562383055596618275959092878981748609987936866150743188801851776166281378404488045780264912469858085062556153115351265672106386949636466327914960028050806154832815437265560803825721747622856432600038698771105624190836729664629461533670024535222036874542710309728559411339223788741397732579441999168226107915990722058029956243120279572887071885909687565886458080577033456088619601337023304453607485676020665037976379853403173382171916198796487501708808274518085623823757444188030576119967323822004501472763522615109442180003059232649403846879364928542280589829324966163413065811747991509221514314453188184516485375613865292716640264929315847246230205607457357609900306000022049497937624648519630394371012561464976207328982472164132262641079891579203262594347021576142153345824103228825977378452628408541250167395955395402799427592969451704521634469925071475377548198196707108363849083257523769695354350459062507684387460149919542452310914187276442962268904649465859173118387223241454964644983475085642405172498126127338509819177627064665121924252613610656663958932015721068398690693917404276655442154000088179888589010571698200061889020342066617488030413731556143206571988487086226340451178730455165850046309200731814671190967043428713818630335754186366398558241105639825354718794295714817386341064169447319014199735887071907585234973512270567411728435274893804583749871732589753411287267273824955956920353847743347850379213911137523604888152078347769949210868303434663719421675381560963746108815142450085850175284436463805694464454633333438295890004245280381521031940624695705557893598599216551801319622076725823260792809125865713283479186692745684558458334577050869565832055498410128599728317520139177353495747153518083492294897303332963051868585802671477450027540128577994139412943590812677921334090421191155082897586071819518642698621865365407950338810956450254688406447430155116803490325094038399666894501979605390051665876979753981589055516574670440343309165654933469027529014126252394970091397791175133660697681795500829111501091592922802942127140393765624505105991320304194882667997745384265190861267716700846130300065863565863055834649211907568046326691214918438351624978120230682530385564073278836191932963497288690935971346708081234631817782485616723820457569958707820350534581665325212138950520240216273396521965755954817726696949872713058913539795373802913524646088477840037707132517703359917402761187772078233244498537866278710590488104537224186086232739846744574426201506639636814044069860869693700810948081553216295632326901766979817448062244750670429063427651780144080512228475393411397719539160200770307358609621551855633445587303974448259191865664069214319015040231949548063250932134026982220713538632815731551754226562550542373567229617637784643891888741918032686147775144810840570453938056386896995642783742178603375313122013365050306108982659122640938279358644029495283583536353660155297496991182049105699198968721938390113243422789947875690453782945024860179319665282857216611885242347488034266024713850872764172947687850718579207530475396267418630220751605856708565682621897133897406171389816998479779043370996144338563157251294246589201698827477267500471293801346225030567205211117403623767844805364971593447700508791200175890518184308228448168195079397573572223145441065762898113772584946605417557417578440652431971973117277061799213681661165481063931819207333538022984978999382157158987498542427627071419730899463692233400286625072998601212170773141850162492958698721850612775763108690392940638728343076374132589239603778182516941785226106434671669964205229919848995200396073839343721279707384668127047405479501134875650785899284278157326597285654896970911169723140842095696229775844318386783861397984755380929109376594032157135622251331081247432378060541403214431753581417819624144238390393192020433758322692720820850139183956260784727628161322530052019146801627161483842511030082976606179591223706597822900971048881856553051579102737919363161797504517823814041289879535658127410587161011092537553335630224972841985532039090469727235325508055221748713862410876620398144985285791033895064219355301255345402712892140424922050719621008083735343502958256307649140816774040183191154807750981841354323957289590286679509234938649108222265104419270009834946013019232461225175996881612325232909125346518882058387364922477478223836144082147344751540908336905758525570994969103671132619664659007890145832957217306436230067263139836719861093388419340737194179118298493818758987658666272208671732076468199006151293407538518044267016589438028037930729849811938139317478796273737541361303580605801373459693503278270931301442284330659464845520772095390193415059352912564537544916748277110555869546917360900050646086173081912950554628512409014891674531359623927868583640184501140082156431651920761703895821671202744161671525427263011429635277602062954414682815520475953309793548078196713222090294430227302860693875369881146961898175399065929637414325980494896208404679504837409901773159198564506422762774855844506041329311910429041650579671946792261515330517017600791247490811686400880495852611669890575959485990120469424860793150155767840908777675539714846380970768487895247943799060321110034883180255137599759970340873842029446067892393220131051891487376301647885280827536959929748829493198216216702087955343733196393647334670126915122564364995125713355010925962407639122888420579936491593490997772302242668926706417448902077472335873061267097038777071224367783361817405971282031969382856581913627743692237519346172472379007753093736286261772151739183899471227633820949398476838666066408683080998250644760131309744695319600502987975379401216099133500325130876310607120658686885749221479088269872357439788362042551170887533985301046829608100082343999108524502463852334145208773008282990923050660112754962700086963693283890580488251572113615451423687017664173966861647917344781891053861310564354392972296271609400438825548551562813249557037729392436420755866223421519830691651015373331903421263740473011148707573174796751846962267434508011479462257108403323303196235185767227413911284568545825961481048470176945071691315344158691154715037918618308548604331124064671233819556124859557655974752127114497879074403208910813508464713890259328009815994566535176043570860710575428017285316933858892191475525063165365610793709720447267925880411054148013662559279693358875862194470640022244404486710629959588837522958420287129230750329456882675960829557315273628956381786260710562556817015786859869807673415097276429292324523599765522622728483185985260151744743296142131105100913059758492371357016972031280679670268672736856416964983739385299390740384568101686575174100789041316739160733145987461235787864142262636438293045112715162724648167985247539241188153882489976095294886466556203449233320719863283121619101199715835134617379183079150088789700312963360947239494975270537080527602623618910890027789263089073237676624411644875737413196294693423264749080309921836949437470127897404979109128424014984760111327948047444009621475100125363565282528955120567608884982877658235533887159523003537731155599109682488858563225432884489160277260821399441430270451621155714521370632968066952915766437860315686019904620695796632424763969727907204010554474701818591558535483469442497780723060809883933533728074795382881797677699565006333774182310061414431951331421366054422884977696213697096374707171312220461957533261762559049967369992678183165966039747018345741859944066425279997509133132662406118356320937342091653838752868414947228923562596456220814900964532920857134432844730313993201691784024234042062801700693832904284172508505363047958015917011377573684427977715492659385060818635296053791235208343818850755418640463382421887758137151247577673014453590812879259039886662568501187081468834424480251899071935176052370339411836196639562183579966377464944594165172708419511052446328552932501155139357372190052453706138529338643240786790682522628906362191129988884169000979999220953845315369631761562624400427793324723159265212711159744696119465284894546562462736369419459517736599620272616726359038510293806708150306681260276392563231044116784694724348331534523106709161421376577564928732974062230100330489297737368629956956897800624818523595508987828617900313859411116372184038534649523256073420302575786855041314285216208207433236362956305330236370505222681799737052869592423026935262031313539080284273263737237346775872239940692308117355523118373733594157190179357147443533222785315113589911969798598304261758864221016730460092061712242422930679928204991868752310245141711606270287409000426610417591749177278977689139421175120410870023259731176282553020643043796408900550144425663128352623159422828115606312403757178589694277424441460663472408229701995283325548564453164326231862807418840931648479416912186583437092899861060804130322317861445665032530075707708090742321521350484709827233516770251444444203594909555651605765799430927485918867089031349586979477631406628701347869187790534240691969888361194990309203466872022646309391009485159515631620316231580195044963868498832284902123897021565899801631750940395371179658602245383433790439331420407371333985796168391921789513136271425628767448713569276698884993215359177844060600766895833595548304964805130544408690838337637281275237262624998489895257607130023660191293086431565359074056001096247479496843374529160162058012899091522194176645987660684116050982619288684653055835507147185641679397851739244792794644289434086957860267513391237046028424640135639548645796778172015291406623043860315706482201965025305053008046164621776477294439239021404009876379874707355884773089024190531008437096310540221903725940749809016603596801330656875334407046035683700448436816410132593571290847124600130115281195432686011181583948101647881668005132938081685258687379525993109520610229416720761761836975207895657290414603253175950955588643204515372090712126079324648049148800507331352212862962763209621876939123875322131600074136756429247325035157259218335558375798687732039560430771929278232329086958604989814190292611669807897060196912766721144251484201911392630867271044815948381317252693513531401549053134547338077735651799099477853779320152696698187954417505108916072724471752664983967704352915122990383595375398743267359517564610416165546082144029280189188111334440859995845782406419364001074922329909382970684464705910832371973664224959932619397599796973584090645633055335508968771454441888288059760716731880795200555076710592230750099317527530597134174169794306395902919584373805554626731473203369478675254893125428638577576192358153385502389062296259892935086597844400026633518177632534055390580677003012521900725753675569174557967218322685109583251277114990668952415290062910441719055588464436158457647841228252869988188669495835135074813471312904059704528023149585161476874989582282895063091530407407531043772729841435752258759442500095938717343666825338713415130718887557424836330799519662098359475327744400339845848853482496433811056126326356895275889157777572006999237821755725821789551624513394468794096902873472234490054299882996836962991024769908621914598359010813506474005214281399203453304705115650067178410310225134676547856447049647210341082464261518985499321982764494939188322217642217955771686128240616187514664754298536316299050903949642361141473512056969159001721756614316635462595730981456595008263229656485963669694808819484561351527400650124798788509349546422222197549838158121537048617352938349731223850124542622447780599338302399166366755397757295490053759425283028193478747317015536889953290087739868566781629461143092848132221873644470624728848044323539148690870727208158148048632962390029571747421265430749660369840875392010151921315398237798110653105963976746752114557805316450652524151328548386332843612588322744771245598193811024620334315283189831318839295500769002644758634212420094392820740087007670600033967195037736634203986410307886179324832538719984246891404956014422617183381305740001585594667449694124318851793379535675328761889034367639945512063611651860030737722371835983386857420665098630874718758398002041494322434461218778986094235508780524513732225220986244929740160186571068960798253219043253199965317149528023045192863386085261912871985045905887779053200675812952533288901537513777392606035614218647611103108856970914940257788396692135900976959633336630359722355980204864221011714124873038945243323794107237570509609224667301883878947565111623312016762105514227337157808141406576789920106728814797601999009936411578793317746005143766279505521337987585066779228730496675817251701608915358940300307732440180464368705939630718975825495396247781390082571731409125830668439329392936351859153956226835255796514749133338060818348924755513411000753488467795398489186737753309809536879341926766271524130964736671762272878771922248967034976739656260575003716754636579536947313789229607373024535174672556926140791409964588862643855464723705166050443580476332389100261901568492115155331365394092164082589892648303309410280701343199764602740489814112475229558113364424381983819713952514174285863960316790771344446153180743295623284417886209622476006311001236085291463469740072867317437878864087408152052641073653956019497314930205822111001776975005803060047472015794908989311052247126931375294394733264614182681648810322579261360199454038624737414803287970655580655795885614635367408624594379620134428373396705997029634201388195250601474471392967362557744569939313904871437067269079264295783435038269339524381284120554414407081353631221726687304902776433109568102653779618401865541259794479405698312716228690325677011334107498270827680299206593762833957921669042924405653489007010087762687495492200085842264254610740571998704159003130885076514665519794579280571620260181031056599623674979744066187338116589113948098777735484620452278535592326994130144805649092298491642739936561878216398036808702128241171802128722421638370938344452055291756170798845631109801748925868766902084827393364220922602753723528237822916031537938881645346917475318884235527576192319916637566694522882627023988959497945133407046965398823121433647790900117561769099073388446041457126136722908296641836044085413444189803408306497094729110668822361784221154269138563015595334769325102483863044863392819594416826699642597798341802608649775709377658712720488291995188941707710537050268172496747069262560474737236434183082352400196710298720203349423800278560190561255341221556369407620037513992434123132937243031697644187391271733957630808114012842720874707207765695603134322651397982189958100598828936718276374699629839362661490967469637877155005381291351007883301006344924515684768264082043899476983739514783154670594236126010379309996659000768549647893426059372791103744215258800015322685019497032283718981779066667482030379548233311361304686165000873919951668485113158950332505410762839119621811261185912039374943576846561085917685028220445083836050491011475492284201911808759847353355795251727724724094642587115070748484493914913031858980759107822595943155919467530946317779605655402288506057118016499525651787290174814235435418178107835933260334149997625361115836917854936789721379212224183859633062594077803412879683468461849114961123965560298206175047444105335641857608306550746112400028497237472122854088900004931324243310342587940769966248181051070132457857896470559072235269041439985042546483553863850080120155482921870980561476730620827074021882637873121703232849637835776643652604985514159616444795936146340138917870540847934982160019907375052252468291853833494153967232257532782983110445974731006373196677164146044999770202759252479658293091067353811484355496258605721466220776415045743107604368054946771573124985261978382056755499248323100584802591541950610992883478433792553404634910285779338996758894520221901436301928231351255137854398642120475975256258168996816877921509271663657624730336832454117532864941319966701611946135210809488002771120398443911610879149813639139935947891307956517747833368102232304153463446799003819593360219578703025448336424537955086289753559434269013731435606522476070384676147274713864897593753832641426287234444417969561354070094235466245679663698951590766958338711954104607907171887601322264737730850815291384655144322742569229332767132414083281116480485979023641309982586942166957008715355920405276954616936521244960137198862028271682012469452108896000773656870671829317491527172350362312545061508878353997557709484737293298429627893352954481827835918884046561747078209175295226799266839961741729215345627583441299211386606212002510755485259434254542148753931632899251425849711833468665223366677068713510312910571759740930559214315656895925967176255744805725899913211239659136800750864244721223199412395518200130204751341133822313929864203124641964767152555192743152163513971762531260967530509791788715533501648802504517340753429091198052617332599334109485513780644691876799598839601666573015218549446703018826035291125801650676349731942948965619462230213992332612444113966214717035697891820600015912130044221557505249939595844223550980911223797447079460249553527924231461830974261790123606536525500808643872775301838212079439491544829698369927283574064017040292075434363689143919159870943162175924216751649971162502102592523509128675271278411383550747210938942703334634601280563399580349305627230293601803837202732179661444652099282349313457009590909790518466900227003914215652344438426536115510814469164678001057564672678072704407586881913447684212171789577220158975733920389411530504773567761667115744915234332444186323470445219486059059333932062907863741778872869248610817157715275560700299356272246411107171537046570881199710334812767380328923081353219905905640219858258100340524565076449112883804271068228024026614942115131285333623623368210361243539170226633307249880929547116716711347733996815614198689404732711194521408914656850662218406932349335285638330459375728113044350690616743358297017348126688299382145555511774128156133731470951649410198851279662263907870083672119643802613465422319525421444437414689939985754814445975228586262097162261193349556749751591509413565739644547939718305574762297154147598859876139732785664459012979114916813890369649075721068665447736368467736922516991301799485177752176028043360263276904466454297418432354906550548598325872534932350004210618409922711715332676940790164155429342592616148245070838330521480228417189571517427595411199065454808179301133927519614737101047920194896250425012800323339454342881404677986338832728028060704151965067645583458713937362727514963704025390640099079528204448184709729470193793473858584169578137488528108872986766925499672834884907382062237611056863991491555978692088649776055461299466755789962399462627302818464796649670317579917828496891186799730338824017380169605782225496382958013691623781727958416734956318193892801711336537224749571638414967495786592318398463022289043929251601127470004572010898579506595701820356890388769903402660948027512240639008839807324246595810750875491445567707919534358601190704538424223832234256310654778511994882279141365001354671412554218362962869820419751878838490485742191532947026200302980202243716906764649397851471032657703714460683045006911703201782826320215731488562962796945024059119328474114887307783244579400034344943070341249857705772498011042884018141710444552779785903920526594438179395460882253757007165715639455841430644756153813547794310807321688303587650241607715578340282070875373908200483741514716070234835756829374356158222057060302399467326895097806976568111536958740546121247486170738259669521437976851857309752305665595069196820824146784091461309056825243732583402626737068397089436638245030052166374084724206308776331712483785047396931792287887467225240016812875346828186083606023236324888515072159378716684554625216578966089643050253502084124512162502119854097847100619966789801800006943117048616596279150645622695519785656151335164514831279338081689553510714818141076404845854721447565757067730455351379008957685859076091963025455068134842506966846987684138901393886352367555491011070067071380804216254128304775924613616455175509262501998196634983940355168866552991312059778859138099585965297982412929016098938896635498144084770999618618748661628661196520023007999501243968446244064146063913081354580366763239114823233225853644194809809993090236067748429899254989260526351270167970608032514214872342767998272349954596940076890106967447396170921899145432053794437629605737878669657765528331335567473394839885760780014432509977149786321834123590077143247236458991069656512028372062951298273727543462169611099343789106971824378614702747607562643748915382011223391047014734591166739365082331055046413792143816150187663586082726921365848388545241983811124832162227658735039464932669044730158797002172547181834228117873997208930331167922042435409539459310800356276534232925053367433853869838164570883351419974412797180704146773317733338752746438800292181815375154023649299881371407034934778700260899697307402769017477714811895071490650290653403624735513704368278071915394031712540715817063027564695343185922782745101035751808802183076010855179314206713954867172954170923653704596407857966157915812153871729037818849173452356975423324053297932138941833170884228276132020757514914876380910424576712943052618979517499733251695882332869355086121273849789977713724254788520159155265233934264050310569671472318404225408661850173408973419920447579894850154157366159311778677473083924187957164280613871684107332032071903815287938993022838326923054101255840269501484894580869713643267226485255329012500571703856482089276918355807550455721078847573797796908441575327495083837715712779029326669590229012269948085891975751044447406708665290075373676615238177394442587873033437133531415045526214261587518772792451508911518728408434809485865783012844809366965144706561341281064188406365186160321627821742186096181741352655789565613743127518249036656731970408132401252000737303095341584765655839364075631025849320060277229655312753872956367474722246750887067371053548942875213091698583545075734962590402727116355289641564262476549669451127390360724192274538715911508423388054377369762523464628699910887535228144098537997997918482906569667541952660698886691975195073470718127696136387862922116587964621714604723477264053927127124075570477550690865636586659674232349847993363300077542857322061754469442268588250315774085183731704568600005076553337507357019303584004068382529066819498722033048363670710939536388092644309937459832084371615280473540216574242823031244170885190894216486418119070905876206827971587971485744384416849435605852818035939650030392722918661198436746524348769233678301269577092757419806689305514902498188321454889665687507311275380451221961597332312867705801835990334172961853442948376810325062469024112132383258694017192049243989218674815666558304151614852493579355957472714786354380271233300373991623456172347277264621517040545308791232148400390816690627280435810544500680023205788134562199848884719683263921090220111240119430646793186705925535848032780964270680472606213984614417003480889421077014285636966189652979681220572378454287242110937335998430943387039519890589279305101350946903509927130330474409431570701909119619161122365769233338724070667861042012354917720201602218487095220672858756992842527355762712743582050297659430967871781775215657408072762696145369567220414060667249604762955334429506254574287303444803020995233251254771123754359395226526757859501398866697563234859344839304638575005934347950169111058899582227213346735479551544908721775401115120891707277330424447225831332415502292600562043903780680175725687784401251012887488516386828142894246379155493689893601004833926909192689451801230767695138414633607575106453460162301004843719818012057916708102945464217450183352238190734811641331818847430995125940659314721794779784858411473487252292288985762801529318318098763864438620169306976763647835767849263937196210276987610788036620649945836508117055746508707913440417915459950245580749588211615195437501609743244413844012690573447852650457871529957412599048760116454825936101600590285882498954909490644291536764041524168283347496100925226026868640983076901151675105439369100699502997748988080942403706867947906496953748991510351060763478263697128520597717180992601581246337655353408815558447694518253682379685269611609006547645028832062985585036597338132380578477283999138177489281247757841408337928640294847630354302147909158932806172926470546489611233800478619019111962415693124326307813344368680779363484409250797625736417987651663205447317544417384727381505690220660299028117830843656119476773457955563928272387411269936373105210255252941737946400355666403049515269973296280131844913571137853333987781111618341875279054864738291274937327534382047135385940097802310873981812600627556064964652284225745488572904743647340692937710611034845885474493811937940499002716629582899926230727778070167524030303390226202407163780046947392881406634548363489357864279923060482378320599655467280129229216480202721299973110742383548196526805706837271951545106419706553720424655229796544252414413282649580118338251208810188543773516023297404427912044661397101058009263055564772950103078079734210879518833846940025455032475809255178354603670280582539822223538023225718247214059282581759956578550746055212246280638818537736588493874642581246504691750799969011988702782725745608362392001945729501195658390838916232270765730507664036478311741420470301837331351561874311712053939271962342026468581927794767890073491292512600239082658420690758736885311227354656738076958309028809072304643013295402057860980985927839947062676527968401151093018536936520064551650167025695617437785681403370603851549433290798043223413564449874328395045611881262880041584198532235747622388892978628669574449386909167981967400203521813042435145101440967489008534425778988198205042548486774772633381637430880729603044639948433394867063469418449751519410771013394592911932058401205881808433970490457507334125429496154950405645579932737567084162524927307097170728412299035621714425687281473948304152137345704268218933867558391461584385333523503240379101976646636162444715363581924434850979714935286050158459590953904889752028195502716004302390928905089981740691760607393690401780430996747301923722780660443640465625088247146022027131152479335455888267487141121657576851075453886256551718296012256442474063296989543742308325094852040829195074875850458402939367700132168481891048697576040262522859724967418787828593014089131892442137145755000797621880357222593326501355998503930380932934721083064514782857658663885118523758493450269079483709005695942212967331267746317046746899728151482024695843873147748038730965286647197879720563287417347503255022822372758884437114501974230457020639950332526516963362667518393461759134462922862601741133436273764955548004504490417432088615062726285548295538677559721423932041000625918564903091725722899350612275189083679024321941676085252357361437405184226063637201484524339124135215447839460594431927493850428570991133316877528472838407292107234851600891872122648495309189562691500606426098686083022191756587371109631138438720928220981905676455841006016996371362189540643117054289978973896704355719647796161008975542464353908598770986057822969203178860811623314616970501473727437941554108317049066752861917855392310448591622904415157064397619222570013339459739546034646567459307999370952542494621091657608466394395161480009284989412345053589095326809940721160555980873479806036450796961462245195925190468325695398705778567311019643641411290168617948645758434707383121208671051029298072146514683806663028213041294542530123293710997064077881466890945567562670387244905841826109476433795997278537059767936288365721916459615732153760542908681530549345915066912956911581731515774334579880564436747222900809511080036578187086791526230183220157610546895371713279498079681720914517617797352601979870400948239185484285696325760428891118159215928288382156556369688878079725366837541129247618156958953628717346031171393329942342922962006379105139390053245297882870927032655961564761943026406466475900347678553254719639061800537621935230987131927678778057607289764330380214725331849402770593026843157685640695561344796578757483891531789654392731948903134039918428507984283307454241544856088705879936725945982147616226509882162203502213582862148949378846210492604980239691462396859701406356526123073310154258314807982741902474549847335768747534078377380302622029898813103222608664857990195236623067008977385777814446268931652639010144947814461913369442697333082820068172936966305814801551151766475052834275340080414061460595819690108405467512924869968393885035829542781996444786653120401717983579899162256573007546977911532782530704485632532148574919694616600877907058503795798819696534024112943477361488359743140831699703068298001486496253243860154191769889642491345916124950747143824008852666813568938781014167468782053863429552446459386749245651961397894071284939626882852733846643996587519792306558189807122379806947924337335975616476739969657551190432408002120972529901123408833490033071940824066661200975400106797302522407104337400354126686333141660353713820015626002981984316992472261570551469130524142726657244947234202141346975414782121558325829581793959656383194124565843466444679705113494185916523917697931850843217207697643640386842017719849353419348775937144267268568257477749785918504020906225107927841464376859956420580306592784909604312860185190922525142326111599904421952737510627818516804503032287270549034340504188315511727148241907200480754567306598435381905538862528381502655103143205821294176821004862522952719942844440668775182160117464705931272141372568191550781960381967449756309529765327536645061872138431884791008837921785968557019685919416456681229016445695082390612259924476489963267700519413718543962121000632996890911958847920968033177281942319517204697713353140218479188033119680562245580499007316312961964777777888201358078703333648093083323572813942974089915882869659239272694706910671987950021079039454948559698720443614966440282832987217090100559776717389243118880585176768592587056215410158280842005215918881922410178294219789223849145462034254223761940246336085681259911443089334138600346004509928138797782788584864220002841323262790879564316095901211422212035605419962681448096312351548102748169323325349556109598596328589596061707378054188400046126466008354205374858235701875748289191174327152241797567258351615086249344698299206669653210487326915315393015562276768172644425152983959769709020097338401482684781190114829900540358089558051276606518747030162424600026729262544707649624605486414136905859153622411173502370910763644815582317257709866704344135296315963085738515740568172614630580751430182465539011492603211202992924886571599445301150230781539072483606190310006950637231098208256400145849516011587778707137783977324196849405125083848152295672444481948187141448200470622133877576387087751224400971638475744684392123753342102821028105684065121548540630090534786410760343674559207276378083556005248134889654589892208767727346818745295193712920038193623177429568155586057395166592576601802587407143501740791286184941420403594868684354534038942725051148886531252060575635011643349958922102232211253217518152896770994410477998903185405146055804630581612652700798285657044539174009035072657997123455551262931583643772426489549684579138886397223753827293013637473359320287537277504482056423259751281887904585383670882424065201363696197477267935207483177129120187896799117669008809532096742536495119532241262848481484772219032598151753863480013963290899645720383298442316226131255889383999405547127684291563456751671907633704740703779982914216140263950208171758835808716803829277490104270770312427844250807100371927560460834000434359372798907632995779269768811064903102705276624496617095375406910402664164234808472117703648399427416728532485192213122224329021783147557008399839718094352454757300215963110875964623265113561955919238380555223204143862929866199952276749750348116432268537478455493602350780842144212415763644530454131588475379150948609672848283630482964103933480077644989161405611437398558537599642029738139513515249863982280818005628766859508842614084985410314258100782177374544613285828566676172329699923409919054403620283023716283803840201003140385736341569389533683135272503269693349180135413895612072777826635595767317173217691135337425181457546035569556414068551001187676102592243014181145211510513639524197102395115878617600707710057477746891745029754159084981742532666989509349147601641856890428068696140671127565795229632064800431070212872653233115010721640356025662724410138967500975478916521330865963677407981172783029388570186190629359816496163654220506740936477356468621763141436770272909257288999877488028414827084710173090717417814657932934184329201421980751077253746257264776597640313405339753243989256410790721304233538947846570264130829254283041475829816520033349788987880191991649329004080503717148299054461518292166934055366520100590386191697609350489204628173304492579014671764448464078678339251101744404302189369716625120338481518145440703591374067331811729974391028587420651918258395072206494142778869224127038776021285308742139893432138998684132038435440641732567362410686633223596221822675275852607581287658089375695542725828016562383243335280805623827204510002554760055149582663321195727789163258296623007107657166954458466632526959104646689649980992805377850943757394632824751697976251303385543252511754509232602621987204774372050344699446155852078670152600247976721599588154928229219596355988274439046434575802243134177274314855770380897321224729177735429528865899877841336833300145712355922067790921065272795831394301097546344436322710592317657589304909588682138878106593368922961550309573419231592462378945900355648596332366478119192315517635696834432168705299458529744605250620647976025760227623437567283187596278479672369691454580373929408961317302494129016004728600948353373814060033551266551089968397218391055663791247947922071698671952399433956626459079685601180838124906258442514684298585724608316358388322179259234554009976461047101566070149638432878441402477445858984203683540932597637240772793590401967634343358995967003519974338735787543008111096381111764320449245754588140072695064740260408760848151823892852608229952075304606439553750094776292617364533821698179810982516512165261140048444963889676288480458213981440695319623993194391297140585233774183943181073253808504283602074304502203225439293483982512618994104798956834957389741732617653235479829020953931889440102012017810425264063737600180168712656062514408523071381103422085833061457243394173366787964469910333788843564619738159571138121356586763978853745661998218327088213301145587569972105262276808508475787546122030692127984250730634937416447956552176197806585340653746218649533703670491856496995471132337844083720972267997317455963822851247415702640417011654227766770999284988249386028269717813240618991841479890954682201152826349670847272769924327011216684335134269731924747444430505053493558053408439010353271294803818848255588138392511417929001660253311954698978225798876168288822661198192975474659516006231904384886275435953384466814512826989168548759095047127584271024809203652550479363951906346555764234270224734976113354572090280155559975966855419830177895765841948066913117332938431882947974899931776503958361291458655602672027960122378802391720000842652836704632965652915988149005076317329180613791549138480729100946347485704142196464143136775385238539189841994659432875317258759683658461992523259422694470526957279556799316153949003048024908773797167705043987222553174044648798793972015491212565575777452650530839650527698770189531701716609412823683164046378104152923656385568739527629829736715118916956709374487204557130530528989640604059823772074230185235642188065117296798851772172018622711337177115277663487446631185820798426643304252025202890609281453371889120902247438292390962194761307272732054997918973026634594632797853812539751048442447413556321839849986146013265136625519622202298705500289830690147951750418329672195853588832091528451165344281529366894517039470789169354713880758329426156608306683558527762268348416092578483855203704291292927557051300467502779424845908930950822949583180962106239130867812343145725308077021769353841631158565124944381723491136204720470061275932033344368709587770694394210074995465237128086699255915844526510042373136924481110840090063893685756553869850627287577169747431475999154607040440941251780575933344734907898066845474854549775665254753392909084023016014321126545946914188808378519817862640640310381676461059486792045228149339563541578955360457448903736441095638007202188449487667370455680195623561065801365565884896871493891593253073786582565716735692999902028618452885962152611348085337738297399237080489637454257908416793477968328786644019653195222124757597971309303986972574756992739264369718897541357372015625499219607932567422331345003152942501964302250245648353122124253209392010383284467316138107318245055805962258673671856950209968566561666970643216780304097469178252625041062644178961657445925876392537364281469242314616552013003794163103298996449323533008880993512340749645197017771235737026653737098502613725705493826429083519931006407227147225355137582066051088317268398479368194083864982064588831762775170135935405364465223008212099318791797702983032648540047964355820205099254528901891211627694023661445508139432746057478559792859988034834256449667633432192102118644208957223089897879388924331451922069426543271123787889320006063498914494202756410499625201638353147440144461210660793435517004979859937530405929522499759581846967168658172096158086947819162497548548721999447974775915354763746530036510242881062101631595131907504263178174186083892523726222057626869143052888633439636579008551535401239888719259219235057366085654045322969224306842796099992443777980087554786438777005182975404020594734720743035261392020376493000196263433265721902514890634308156643550522226270985108321279622625593244551191428309430101216210339860966615713360730553964553680015477773573729345892870098318246359972760358817703134701622775835128473920948768922332661010900423852628260823014309389477341322524105290085659781693331313150360938712802135752103144145185712743952359421571468369132604832753030673243218092458401612660849181345781426475615558689578823981159707416338009671024218878190176361220969255733719925515636646467030737946312118109116091253221896441241961712660558584853299468803523236543425338776284184318593573402600100314938529692705652435152858592784245907974757274612345724944465934205257424429551600169792098208288755157842111493848499821374708953437204683933323067593383794036008164610708104312881829387244082956971950424831623786726139606957265889357333406251690827952273904135744367391510753562302378689074494742633703302136028490451067551516450249657016064008097151285722184924557898445455900265646897567095467240093739412405269875798063831983074111173174439267776406344838257364008740695655619293082518779590878034792466717017324091577632044708895091050550980916800884629486618509609930338108255914859030845430496448272100259774906252438943313579110629434132196681569532663962715541873011034565309260654856262614416275622776100697260400945775360008934762236833039935345685636729878086897999564709913072595048164503460663454041728505657523918851627957544900750934929460543237309461312931664760476700620156915538035657385301035499602000096815702189127812975796717295413950111164028340329659888762418824951511699371528163588685368131598036618099953060953377000825408184812703906172539440280128027104890091432149273584238113290938094907894292412428901293962289743245954837276253951629656039601010433958641219830868087487029680280995536400859742978084966868096684847672740399564265840027456405463015668956541585566355374749912590390015650547253094483746423862876938142605230760933395309396577147620439296604109680912662765936876310498645868468355730160226100607985375992731060790861899693249460463641024556685847267387288318407681290257868382316254910485603417293366779494633156000301541068716691792691725236877006843733512219205450472845767694284499490188888076836069976293254487711824556591583773430900177910780310215805121517569729287069953908924751243680488359115860907633792843834085508180596038046298220570384687189200101033666536747560903910129864062683233695012423263827645519421388171947156834665595088431143467032661663357164078844597757118448299159650177634776706074302218201386484138947480026718162412783368099455874215531348113741966518713811840875651858134529586472308585902907475720493205732407559995463679883769441564024393405445091590169117599860418734951403101894129509397710927932432133660071561082625163256006433262115381209469013734265215480023389382547289951846778855532407913494747129412125190504548556063768812434387898236295652049194638484122282870521622806625659528884537676145846457004788267079590554331540760679840300821339443148307192874179785803109964061377046309122313074135160706860350793549155425631346571683419566291783316191495245105652677614387233552317726742364985225987469114111619042522684892167622888066880324809497772785104668492747882178669860186580693426474450365115315474182038601377620521042983570036311831283250483245026585966399163796600749746471490933202708019550441700233732455406682804864018733230548921420369239738768499351131948325123628479933541914111471854893529516407732041392577718338332863384926757415623058232659169177824327633176863885502265553716590813680420766510447676232666348856128536958095659376470697819563095840597661617417968861219577699622414478309290802474668383187997069277817883350916979495272855116020474723554478962152624210322352502015841485506238230225427761310103930422216651824805095298084765094953741376678474593058938205755201796499719864618657696774944312900895199620584198753503165068930515663890903609628465797702448286150744847756327117329461877479630619256993989220782995237339890129340441703179463661041354681826159622189859206010528683788754857068493862512065373870251492030655063285209559490500705585414920541414248689961996111330922842994747072937239163178744594816460373008737842277925001248479277999362014045479791830868441890546562055870353389011892678405522783762514976795404576372626735798459464452773570171472327140635908062560862819403730505646624812638194866665854621902906420106843197488990240792397415019754847719738692361719307284476925184691473115999681983633005511024289359219840571017265355680052967519806591503847707248908881747343020321021842144948301460791931239008130240884923942068250936296364395227078190833620046623122775098244825959387851119095343731933691160871406082953680810092720512166266410105953164396831447869456150699527084286311178468665682633172119155561199511366349306876722051642522630092200752287627003892960499916386664266350687514416372234316541944232560385550001794798489946045498127839604324350049181651323403185953009623391561080251485402814036639602016171836031461630201254245858693785909713346351608659823798166377710947373618980136750410589091106550470939146001722445996244188570364132802556192579030167570858946936716670141944563495002916471218444651540646820891075008836869657655908557140764436209719534517578434222932029615583482210889264885125637191167290019710808545749328364328434176280912641359796301933973156693369215308700248861685940895809241981536153035213342139134988515299580898716504042410744077792984774425014976044568695270083258406591112662990701210169411698331690311246621263979277378775766935766479999948646825537260732401605210058872057056062612426121921148841771227413035451979283987423580068244871024806327457036002531351738149493614722439246947987081748680850467562738368816198549124105393730488992964500550121195931403530924674081832512121755982907150970997345780156244370812035856800983460065126312372016935444819988794722340734368820902830926781921606984141401060557868229842698955873986349437620049103682649165758616766125070123377324068547056951316676905108648239280735146367782161993980529323469447228706833710305603466741210295480443200169572280709921793746604690590823997360750721636383448748704577354787632483996104721219573051575942372658471690224431429939589928341318914155636438792859324364927931991667841255117815558053715071409203862528637054419556157079935917862678945434627856585146407330214551331795425344404520786599610367396829056409098190718188954540942365472704457145587038749095066996240911034021423859179763238440709028687028007640131360148144614031239341744702613572633400411936537290806816287197044848719647624829238834084523600300795367508970859462546018350343603432034275399951538294145011433339322237486914556671819449984885134444370681716012083149903351269462590134976277711582054859304231199543986906107395540916743112283689647585968069677501207569689114750943618430521759454511742070638745865088326872520686356956929255655605649646361410172582553849203481056399458723543859444740785178270422024404779789713087925710748395296015397629886451744264128375099908254652915506985225783619402900587457875167090809205567868401495289399072402659289406047784477011365682606168968903765809850300331122057621183465631891198439140255810074602633864238031023093654373878122936627945670645238072766467108682670868588841372755872077245129292509621109989080503638425290614286028179798224176841513456751616878943220432210985081734060534287791105310799232264850457347748223125694017508991621658740678616006276394408041840484570161327370412643902031104363946644422399688027911233102661126955909211316843641584108007873320706707133822391294682824406685511660490735438460699112511950683082398822251955857446580926714797873030107142128560471601100823093027436609456157105854491259662011010990442787534337297619410748294811546272494920323763261909174705065637270779244520047106122947207780514231632199901770558599646850284588387226381359126055604467377942858580419740458905645571647958326347267125560535937548563694727550035429555778364422129043818271169669668160570612534678690065923749651459689675610376028365523648385149953046383436990537365283528427279428677206401729936193193777178003867921814999834522497567746998121377147975233241774570943076157120005812489776797081012661571313970398157565775386596531979935525627415348679270897686123855958695028012838046211971141062620236018503665300558313982128677890889126099116038800435392105502242881684623890882264991203277155991480126318799478702772051860633793940284084032810002979241588825662350089262215973510713552458198511778207354525343116142996991592025314673263504003886102419154159447250591478273223003174143753049502943769543238658399141766577132873143120059970940146489964613482795543524407355142802205029681346148407174401332541682963035429499298378072238305118336414494657209223828596754930006282030494356665191776517693396991286142584811734570406348548830682004395950284827650682248135565312774631642035914295635411743655408358809130363103774629183849904717159344430598748014891865410188207557104381208492995354980845920698096651304677175527771781173219394550723437880502550121605609662525405453592107054760178835453596168571752990478820030485384044714997739471206279947182907811476191284253251478956470563035831823675644306811740934064323988679908158503087940790625643745747986182722123368724781097057357127164411106412179828794080773141345723473616191794116291720422963015773014620329259211474968712130130140394029652166978270818032682992198070188366040700442041513111903698247158567479374795410568862822210134331000984047195882984933185588660007387417480068357672228661603438159823060812811046778081143498020080568142410488759182587624193537531925570774191544093726487252588315864074927684267136773154769251695968254366587200401269375645548406472206593594065312003196278556873679892262795927017040662735326206439494693237866501584668968145353750947253155115361588987422688844638169764705922394131657033107651938877050134615450423815382320018106057163974236286035553740009622042282241201776213784954150787646767125490421741109845328549068394831378349763379206812993272388209129308775041049130412798801411235860445886442108163281255757992850940480195595566836268969394189044320762969898842953861636525617470210979949738673976380650649355271873424212464693558636120765775622913574520726776223211298822123332803131965393383980374614919489065751911235382722956431173823199371433483646099695268223347597865023940857346310395067937809020633965294531327718397753235840778515861187247796809698047174626625665577088966448467200621584603191601531012920455660370228080037779467125173534461433557555281250165446990495772871867935508933662904877914240976161927729306753370464450389123665775260198092333238876007773413928551813078605360015962757110765647642461883594832735766683394991314542451283702865995066784857998263020948721251359452877128500155081242978287791949349629122604787878767180197153971012467727143509492368919784324477346561416050349341878640343603629740731004229527624026398119194888163955949315455967122979634694879921782851798760188493426780428235684868777258195346705485640003368347552037931694575875354950356172608803485746219370262148389754360836527801563523536428573870240901203528841046073808398993745677965491132499531424012393432439892842715293667211937584537746990553608007272896434461468874211589307113883970866637442235754963797015266157343793675265932867253896232886175657890077524515899669590350478177700916487891801632417356267803888356309342461497622173860268699116270209916158621299348835684351223162898815123015786547327571757208604005662300461089823990813998235364958445865425663115981407255889334027808065508696910843408953011323064454550390060130893144923086849355643684536840246891102376137335473678306116069400149505569387431611961614554757764767950017171874706415000447097749956635919621414615446735753691962272879309805045790938649824202448685924827238951476664278943037127605926115013264153891001934908088792126946360228583876550000864899147642447237212917145725653205559471869432849147254400703594768074720114359372071065725438420861979835981837819893440036633997327287703626852591360563468993512092333643060673117790078341018671417333997163776632936974491864797482899547460364514905657020617985326802582924826550319304622585995768850771103047301577527770917923877565473902357357157124039316703821446544533287658731881631130924736547880158386531026838419659859871703684603270863533772427139732199297888852017881245959873428379538481059131920259053132515708475549235565435310828763133962996024547703546338268062641089289596131038956981321429464020532665338872325620073990625689806528546014764555399717928496160168419321072175766661272004306750062975275483348433752024392614899277064658354407748885057993738099930262002225418072722284948466592024575202138687630021652166903227560534822682365051524689453986344972500933978430836608775297100251599654210396429063187737609021965461093344035313890406046183780374144974944842279345389956704020721083086260897525544259183759581877213293962934633280057568190387013517830117360393898212430436070615454027095739867712817398937070743351528949235088527343729327922254783873201185664130506813348966958275626298623131066102317529029671255118645529688902382034760521077469824641766753496489660691087620213191577177053623474651084096844797405645466873518980777542297058304199922334857770928454578788585541793598040083437156718101160499514215807745599707031793748222501700850378592835877388766005972354727733932527274371513820844581257451845431202980349006509941706414400149122032173322891280821972435333027869521594689647473464999043480486087858886782524748051068408537487649396328010622232663484717074423362987628164718462915817459033588313456966879013526893424224766734270609341369150414694611635975416122982380857609269535286054948780028549617237452339970290798676095664268373567087050550403920452820700071820836883775327990638494933818442644425762396177144322783671088988752938214490566426004554139600460172229960223482751874855827240059771097370482038664835912427394981345396102866863209276674448607587540389059207325489482643660444032685461289559755968822565337687670081857732883505179355952231298584436766402209444797771933362773791575468172831328790493148220679071321288880451091578238020365276535015065361868641785033525179101053532590546036457081129822862026885334077379943497277264494528321154193662236615525249405899874283208901737687521616950876354607012283545981269278974359052808315750443273738665453384008300158605518852102035063118099097947641932631613016058398935999160741540846122030717065365003408997363336494333009919613189584357885693769229156092476276906178687796742390422829219761626804717966518853721091552192957401465127317235506424960002339348630727652891309765088994895711055920950290370313288340381763788361518284708572481978101943731389123348160208214894369382776955588453314827411412287048788596397900963020697722637334252081981500303612074550900533400186170724917692308980533651974452527907069510163115012460011825946115696255815847042385338623288447422688421749501769580313111164104980586674278284058734602781577285282814052926083710643687902938507300580558286523991024818036186514204965917940918766031130988351368562334964032231322340031525853960321679060143226249666179727041491324041912937212681571310725384076331871746704965428362808791471071791725910119422066711213550834816915929773749710795817648734788104242233961623662899538470698589326105235941596235305474677274255469945169928310932019591902324633026215040744516290548271975715700233545957629162797792359650574085938790905887094671900971419516143277063640141304382035272869604820959605775606859101034182807415561616072496373133970395521069299491575340292814747053964899894715119894357893819402962419862619894831166361851388956001479183495325180263729389678226255374340997646299912760885871110473837104510987833856001991397093479821454051876533729761545300179800254913467502546667749198116809190122316242758178416911847423219157627134830152326974285755180705836710125548474646703572834166091359135805243708877098833596856363488418302845594176323160474800716968084709171164131274346805168039961426689691251685376580181995266975110253547642775063731625976212751098642715568722322910781894671851831566919328616148623765474760726685359735792338461148728437481450488943824158285885919944266099200718071820077017390249625867767880225468805944140601321502732969999452735165513399389942500274546369465219524723806058950111009589453475585839971733391578041418364472186071058479306453098755559044620255049647904550110473383773954896702767703559884562043629675671544643392656684957664329131999581447165782651106408980135744292818493006380993724066082170254646058229548080949046199838352428061474521970803471531289017534907370542216624353623075383632383839984641940799470402101067103780046228560451419862125659840488469708739540995297255879230894875851402344442896245715617132340407228614909016705481160808956510603629888952280380444069514514920752645863680767215275124739232616405941622895949617500821778954923051947042765340100313160715809459667306745201730326696531758373777394907907344195929027162155227218149648670974304216470605197201347985692818906334698758946947306771127853937960731864624091997816863156534222177033227708106181669565432498566337658196857916966933535448661290217211213013732175817235503251486468791601390507746075309609987191848438511697711415079091261229027215721038135434573173654233079991534861249000212224133001235058665434917924960544335767008165534052046348592689417050470301662541606099279637089565752263964880631249950346700914207550926857911684329618842467747900007246338021719352738645151601045918533104757728260331304270407666419940486165099471851610408350466293012331542985964745200650206263365620090906572916012570884524019300620239848019550612447635545010787744315722432512000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Source: Noah Codes

Show your support

Clapping shows how much you appreciated Noah Huber-Feely’s story.