oldlinux論壇應該算是一個小眾論壇,內容是早期linux代碼。
作為linux方面的小白,我一開始看的是《Understanding the Linux Kernel》,雲裡霧裡的,不適合。終於發現了《Linux內核完全注釋》這一本,果然RTFSC。可是只看書還不夠,也看看論壇中的帖子,和十年前的人對話果然有所長進。
可是論壇換過一次身體,好多帖子的鏈接都丟失了,現給出索引對照表,即可通過舊鏈接找到新鏈接的地址。
例如,老論壇鏈接:
http://www.oldlinux.org/cgi-bin/topic.cgi?forum=20&topic=350&show=0
查下表可以得到對應新論壇鏈接:
http://www.oldlinux.org/oldlinux/viewthread.php?tid=7940
| Forum | Old Topic | New Thread | 10710131017108210114101381022110351104141055310555105871063210652106791076610776109371096110979101055101118101219101233101249101259101311101312101336101396101486101533101578101583101777101786101801101851101865101900101989102083102097102260102274102277102321102347102399102414102415102438102502102543102580102596102634102659111521272231373541375951492561507371507781512091563811162441216617151682518170882017811211829322183212318576241870625191412619340122902228243237384238755249446250747250818251759256971126281122664215268561827121192743720278632128297232859424287512529166262934213246723364333374643482653506063507573511383558893618611365831537057183736519377722038250213831523386902439103253931626393531427092437323437474449195450716450767451158456319462391146612154708218473901947803204829021483162348700244913725493372649354151551253300353743454422555015855407955977115645612567461556978185726819576242058081215830823586552458953255926426593481684926303336374146412056496686527396582411663531266683156690618671781967522206795521683032268400236861424688382569205266934517487272894373739473961574951875211975740117630812766601576878187714519774652077894217830022783742378603247878025791832679343182168283528383745484704585045986111118653615870301887331198771220881852188313228852523886792489048258929526893511992929306149415359497099583711963621296690159691418971872097966219830423986182498848259920926993461102177210353341047085105046710510991061141110653912106782151070311910771421108314231086802410905225109296261093521111012112749311373641137985114930711507811116253121166251511683319117407201178232111829422118329231185802411871525119148212291331237404123977512495471250868125218912575411126315121266681512688619127471201279042112830122128381231286052412878925129190261293441131067213311431337424134216513498171350948135307913586411136380121367041513692718137201191375512013799021138307221384202313862824138868251392222613934711420702143491314374441446567145107814550291460891114652412146775151470221814732419147696201481672114831122148516231486752414903226149350115208215279331537374153844515493681551579155679111562701215663515156847181571101915742220157846211582952215834223158586241587342515915926159341116271021637333163748516507281656321116661315167083191678042016829121168317221685732316870125169338261693552173334417446751750207175103817541991759951117646712176752151769851917763720178092211783092217848023178660251792692617934911831721828334183887718508281851789185703111862831218664315186858181871231918744020187866211882982218835323188595251891671191050219310441942065194977719509181953029195857111963761219670015196923191975452019798421198306221984152319862424198864120446220288342039495204949820520492057321120630212206655152068721820713919207461202078882120829922208368232086012420877625209178121199822134604214624521503772151068215484921607011216512122167671521701418217317192176832021815121218310222185092321867224219020252192851227082222985422406052249607225088822525092257951122633812226675152268981822716519227500202279332122830222228393232286102422881425229197123276223281942338685234943723508082351711223664115236854182371181923743420237859212382962223834923238593242387471242116224351342446815245043824551392461001124653012246778152470261824732819247703202481762124831222248520242490402524929212510372253100425420052549768255301925585511256375122566991525692218257196192575442025798321258305222584142325862325259218126105822631074264210526497972650938265304926586011266378152669251826719819267547202679862226841723268626242688662526921942747565275051727511082755471127655612276791152770431827734419277733202782102227853723278684242790692527930412850522829004283965528495372850858285213928574411286310122866621528688018287147192874672028789622288376242887822528918512926492293704429488952950677295114829561411296601122968151529707218297380192977932029827322298564232986962429912225299329130116123031524304258530498573050958305327930588711306393123067131530693618307213193075662030800822308429233086312430888625309229131156423133064314431531501673151028315408931597811316457153169791831726919317625203180822231847323318656243189542531926513236523228567325084832519493257191232664915326867183271331932744920327878223283632332859924328767133141423332355335003733510083353689335938113364281233673115336959183372431933759520338048223384542333864724338923253392491341961234344453450347345105834547393460611134650412346765153470091834730919347675203481422234850424349011253492821353592352850435390773550838355191935571611356291123566471535686518357130193574472035787622358361233585982435876413620992363506436467153650417365108836550993660961136652712366776153670231836732520368172223685172336867624369036253692901372371237360843747935375056737511283755681137656812376796153770481837735419377754203782312237854424379086253793101388222383026438411153849647385089838526893858181138635012386681153869041838717619387517203879522238839824388833253892031391784239338143945325395029739510483954409396018113964811239676015396995183972891939765220398112223984912339866624398982140533240291544039795404955740508784052199405756124066691540688718407153194074722240838223408606244087902540919114111842413157541498774150968415329941588911416396124167151541693918417215204180112241843223418633244188892541923114212302423165442427754249907425097842533194258941142640012426718154269411842721919427570204280152242843624428893254292341431403243323044343515435000743509984353659435935114364251243672815436957184372411943759320438045224384522343864424438921254392461441368244322054449997445098844536194459291144642112446726184472381944759020448042224484502344864324448917254492441451504245327944544045455010745510184553969455965114564471245674015456971184572611945761620458071224584662345865124458944254592581462291246357644647595465052746511184655499466143114665591546704418467346194677362046821322468538234686852546930514716324727714473821547493374750798475147947566711476262154768391947741520477836224783342347858324478724254791541489262483059448415054849697485090848528411486361124866891548691320487965224884072348861714910542493105449420754949787495092849530394958581149637712496701154969241849719719497546204979852249841623498625244988651506682502965450403755049588505240950578411506331155068941850716219507491205079242250838924508807151656251296145140325514957851523895157821151632915516893185171611951748922518388235186082451880525519194152202325234704524634552503985254899526076115265161252677115527018185273211952768620528156225285122352867425529287153181925333954534551553503085354479536026115364861253676115536998185372921953765722538494235386672453898925539277154210925435124544678554504285455129546099115465291254677715547025185473271954770220548175225485192354867724549039255492911551321255319645543095554996855534795559151155641412556723155569511855723119557583205580312555924015617452563368456451555650238565433115664741256675415566990185672821956764620568104225684852356866224568975255692731571723257335845745025575022857542795760051157647015576989185772791957764120578099225784842457897025579272158146425832604584382558500785853849585952115864381258673718587252195876062058806123588648245889341591010259309145941925594974859529795958511159637112596697155969201959754020597980225984122359862124598860255992161601763260337446045245605026860543611606478126067571560699218607285196076492060810822608488246089791612564261367846148555615063861560396162041161659412616809156170661861737419617785206182652261855924619114256193231622246262356446247425625049862554396261351162655112626789156270401862734120628205226285342462906425629302163153526332914634415563501286354029635973116364521263674315636975186372651963761920638076226384702463895025639261164142226432394644361564500586453739645942116464311264673315646961186472461964759920648052226484562464892625649251165160226533224654452565501886554129655986116564611265674915656981186572721965763120658086226584762365865824658960166189266278246638315664934866515396656731166626612666632156668431866710619667418206678412266833823668584246687291672322672801467384956749388675162116762741267663615676849186771131967742620677850226783442367858824678738256791611685442682920468398556849569685757116863161268667015686888186871541968747320687905226883832368860724688791256891921692581269368946948665695065869560896962111169659712696812156970691869737619697789206982682269856223698694246991172569932617014162703236470435757050048705369970593911706429127067321570696018707244197075962070804922708455247089242570925017112382713171471428357149939715898117164041271671915716944187172221971757420718019227184392371863824718897257192361722551272367447248515725062972620211726592127268071572706418727372197277832272855723728692247291132572932117314702733262473438657350088735386973595411736440157369661873725419737607207380632273846123738649247389362573925617417504744518574502487454349746012117464751274675515746991187472831974764720748105227484862374866324748976257492741752385275361247547988755569975616411756569127567971575704918757355197577552075823222758545237586882475908725759311176494276289747639625764952876521297657431176630912766661157668791876714619767466207678952276837523768604247687812576918417718842773419477458057750328775461977604311776493157770051877730020778129227785002377866925779280178227827144783749578492297856341178624112786615157868221878708519787391207878062278831824788702179342792730479377157949278795124117962451279661915796827187970901979739720797814227983232479870825799143180149828032754804399580500988053939805962118064451280673915806969188072591980761320808068228084642380865024808942258092571812272812799581493788151609815683118162721581684818817111198174252081784822818343238185872481873725819160182267928237184824903582506988256209826226118266041582707619827797208282802282856723828698248291282582933328335264834698583504488355199836109118365331283678015837028198377102083818222838523238386782483904525839293284368348448605845064884560598462071184659512846810158470671884737519847787208482662284856023848693248491152584932418526502853706485489158550688855615985621811856602128568161585707318857381198577942085827422858565238586972485912325859330186154228632954864418586501388654049865975118664531286674415866976188672661986762120868078228684712386865325869262187249287280958749398875164118762751287663715876850188771141987742820877852228783452387858924878740258791621883192882834488388858849458885179988570411886284128866441588685919887441208878672288835423888596248887542588916818995828930714894162589497388952909895842118963641289669415896918188971912089797222898409238986202489885225899213190261229036944904874590506689056119906214119065991290681415907071189073782090827022908563239086952490911925909328191186029134104914569591503189154559916036119164901291676315917002189172971991766320918126229184972391866825919279292345449246185925036892548099260671192651012926766159270131892731522928508239286712492901825929284193177529333774934527593502789354389936016129367581593699318937287199376512093811022938489239386652493898125939275194169529433484944489594502189454239946000119464681594698718947278209480952294848223948661249489672594927119520262953473495463759550408955491995607911956518129567721595701919957688209581582295851325959288196263296281249638605964941896516699656881196627712966639159668521996743020967854229683472396859124968742259691641972552972811497385859749408975165997568711976276129766381597685118977115199774292097785322978346239785902497874125979163298363249848195985058898558099861761198657612986799159870521898735919987765209882422298854825989313199196299278649938355994935899515499956741199626715996844189971071999741920997842229983392399858524998730259991571100269210028154100386351004942810051699100569112100664015100685318100711719100743220100785722100834823100859224100874525100916511011062210131104101421251014980810153059101586112101670215101692618101719919101754820101798722101841823101862725101922011021237210231704102428251024992810253341110264031510269431810272211910275732010280182210284382310286372410288962510292351103117921033155410342615103498681035328910358881110363951210367141510369381810372141910375672010380102210384312310386322410388882510392301104160621043323410444535104501981045413910459871110464621210467501510469821810472731910476322010480872210484772310486592410489612510492671105112721053140410542435105498491055880111056389121056711151056934181057209191057562201058004231058630241058881251059227110614132106323441064356510650028106536791065937111066427121066730201068047231068646241068922251069248110714621072767410705107493281075145111076261121076628151076837181077101201077834231078582241078722251079152210830404108412581085277910858291110863561210866851810871822010879602210884022310886152410888432510892061109225821093569410947465109505081095545910961381110965531210967901510970411810973421910977312010982072210985352410990662510993031110674211029694110404251104959911057871111063331211066731511068961811071641911074942011079262211083912311086092411088092511091961111221721113550411147275111504881115535111116545121116786151117036181117337201118197221118530231118682241119057251119300111213442112321041124324511249978112535491125923111126418151126954181127235191127587221128448231128641241128912251129242111315462113329841134421511350148113540591135976111136454121136745151136977181137267191137622201138079221138472231138654241138951251139263111455211427364114377851144928811451299114564611114624812114662115114682918114709219114740120114781822114832523114857824114871125114914511157892115301241154096511549619115581111115634612115667815115690118115717220115794722115839623115861124115882725115920011162322211635874116477151165053811655569116615011116656112116679218116734719116774220116821922116853923116868624116907425116930611171303211731904117430351174995811753449117591111117641212117672215117694918117722919117758020117802922117844423117864024117890625117923911181962211834454118460951185035911860621111865051511870101811873101911876762211885052311886702411890122511892831119823411941125119496581195269911958191111963511211966821511969051811971771911975182211983992311986132411988342511992041120103221203098412041995120497581205300912058541112063741212066981512069211812071951912075432012079822212084132312086222412088632512092171121118641214264512149889121589011121639718121721619121756820121801222121843323121863424121889025121923211221234212231674122427951224991812253329122589511122640115122694218122722019122757120122801622122843723122863624122889411231441233758512349248123511991235637151236824181237087191237394201237810221238320231238575241238705251239140112439621242869412439285124494881245201912457261112462991212466531512468701812471371912474562012478852212483672312486002412487732512491761125156841254437512550179125598111125645912125674815125698018125727119125762820125808422125847523125865724125895711261113212631304126423751264983812653169126587511126638712126670915126693218126720619126755820126799922126842624126887711273524127390251274946812751879127571211127629015127686318127712820127787322127835923127859724127876125127917011281406212832324128435351285001812853669128593611128642612128672915128695818128724219128759420128804622128845323128864525128924711292012412946295129503881295487912960741112965141212967691512970161812973191912976852012981542312986731130486213028934130396051304950813052109130573911130630712130665915130687718130714419130746422130837323130860225130918211312534213136684131484451315061813156009131619912131680515131706118131736919131778020131826022131855523131869124131911025131931911322683213237205132507081325622913262281113266051213268181513270771813273842013282812213285682313286992413291292513293341133192133272441333761513349268133512291335640121336618151336826181337089191337396201337813221338322231338577241338707251339142113423392134359441344780513450548134555991346155121346794151347046181347350191347745201348222221348542231348687241349077251349308413538005135493181355133913556541113562541213566261513568341813570972013578242213583302313585812413587162513591491136219521363538413647155136504781365528913661181113665401213667831513670321813673321913677172013681902213685262313686812413690532513692971137956213730704137416151374972813752899137584112137669315137691718137719019137753320137797122137840823137861924137885125137921211381275413842975138499481385341913859071113864091213867211513869471813872271913875782013880262213884432313886392413889032513892381139821392717413937535139492381395116111396242121396616151396823191397392201397807221398319231398574241398703251399139114087621403043414041285140496781405278111406357121406686151406909181407183191407525221408403231408616241408844251409207114113602141321641414332514149988141535891415926111416420121416725151416955181417237201418040221418449231418642241418915251419243114217762142337841424528514250288142543991426017111426480121426759151426994181427288201428111221428490251429276114344821432884814352059143573311143630312143665615143687318143714020143788922143836925143917911448941443793514449299144565111144625212144662415144683218144709619144740620144782222144832823144857925144914711451093214531214145422651454982814553119145586811145638312145670515145692918145720220145799422145842223145862924145887225145922311461426214632414146436351465006814653759146594411146643312146673415146696218146724719146760120146805422146845724146892825146925211477902147301341474097514749628147526391475812111476347121476679151476902181477173191477513201477948221478397231478612241478828251479201114819522148343941484603514850338148546891486055111486500121486764151487007181487305191487672201488137221488502241489006251489281114917622149337341494523514950258149543591496014111496477121496756181497284201498107221498487231498664241498978115022322150355741504735815055399150613111150654812150678815150703818150733919150772620150820122150853223150868324150906111511202215131614151426851514989815153309151589211151639912151671715151694018151721819151756920151801422151843523151863524151889221523613415247995152505781525570915261651115265701215267981515270501915277562015282332215285462315286892515293121153150721533280415344065153501181535397915359661115364481215367411515369721815372621915376172015380722215384672315386522415389452515392591154917215430564154414551544968915458361115463591215466881515469111815471851915475282015479632215484052415488461155245021553637515550598155558491556180111556578151557055181557362201558246241559098251559315115623702156360741564792515650558156556791566163111566567121566795151567047181567353191567753201568230221568543241569085251569309115738421572863415739225157494781575197915757231115762951215766501515768681815771341915774532015778812215783642515791732158306541584157515849718158528791585839121586692151586916181587189201587969241588850251589211215930224159410651594963815952669159581611159634812159668015159690318159717419159751524159883125159920211605272160290841603973816052169160575012160666615160688418160715119160746920160790122160838024160878725160918811612200216135414161471781615530916161201116165421216167841516170331816173341916177192016181922216185272416190552516192981162125721623178816253379162590111162640612162672015162694518162722420162802222162844024162889925162923711631126216331398163532191635879121636710151636933181637208201638003221638427241638880251639226116424532164364091646183111646581121646801151647056181647363191647770201648248221648551241649101116593021653062416541548165528511165636312165669115165691518165718820165796724165884925165921011661433216632464166436881665376916659461116664341216667351516669631816672482016680552216684582416689292516692531167392216728664167392581675199916757241116762971216766521816771362016778832216783662416787712516791751168249121683650816855929168619011168658712168680415168706018168736819168777420168825422168855425168931811692072169279241693843816951569169567811169626912169663415169684618169710919169742120169784522169834124169873311701852417045648170545191706031111706488121706762151707000181707294191707661241708993251709278117143217127314171377381715126917156431117162471217166201517168281817170911917173992017178162217183242417187102517191441172520217229054172397081725214917257471117263121217266641517268821817271492017278982217283782417287841173150821733281417344078173539891735967111736449121736742151736973181737263221738468241738946251739260217429024174396791745745111746311121746663151746881181747148201747897221748377241748783251749186217534674175463181755488917560751117565151217567701517570171817573202017581552217585112417590222517592862176326141764384817653859176595311176643912176673815176696518176725320176806224176893525176925521772890417739558177520891775737111776305121776658151776875181777142191777463201777892221778371241778778251779181117871217827444178378891785649111786250121786623151786831181787094191787404201787821221788327241788713251789146117952621792907417939729179574911179631312179666515179688318179715020179790022179837924179878625179918711807172180298841804063111806340121806676151806900181807167191807501201807935221808394241808816251809198118124462181363541814821818155829181617811181657712181680015181705318181736019181776720181824422181854924181909625181931411821562182276941823818818251469182566512182662915182683818182710220182783522182833324182872325182915311833202183283541833889818351809183570511183628518183712419183744220183786822183835524183875511842054218434844184464981845498918460851118465211218467741518470211818473231918476942018481642218485152418490291185199218527894185383881855155918556771118562681218566331518568451818571081918574202018578442218583402418587322518591581186118218627558186513611186625612186662715186683518186709819186741020186782622186833124186871825186915011872600218736938187561091876213111876598121876813151877070181877377191877790201878269241879118251879327118826652188371141884896918862221218868171518870751818873832018882782418891272518893321189971218930744189416791895843111896365121896695151896919181897192201897973221898410241898853251899214119013142190319441904307819053469190591415190695018190723019190758220190803022190844524190890811913302191283981915183111916287121916645151916861181917126191917444201917870221918357241918757251919169119221512192352741924699819255209192611011192653412192678115192702918192733019192771120192818322192852424192904625192929411932541219336714193484891936200111936591121936806151937062181937370191937781201938262221938556241939111251939320119411902194315841944265919458911119463981219467161819472172019480132219484342419488912519492332195312541954232819553129195587111195638412195670718195720420195799622195842424195887425195922411962472219636454196482881965590919661881119665851219668021519670581819673662019682522219685522419691051197662197274341973786819751319197564811197624912197662215197683018197709319197740320197782022197832624197871211982689219837234198490781985624919862311119866071219868191519870791919877992019882832219885702519893352199358841994773919961511119965621219967931819973482019982202219985402419990752519993072200364842004830820055919200618911200658612200680315200705918200736719200777320200825322200855325200931712012654220137084201489382015617920162201120166031520170741820173822020182762220185662420191252520193311202214722023524420246978202551892026108122026779192027709202028181222028522242029044120315652203330742034432920359791120364581220367471820372701920376262220384742420389552520392661204161022043324420444558204541411204646312204675115204698318204727420204808822204847824204896225204926812052034220534764205464082055494920560821120565201220567731520570201920576912020581612220585142420590262520592891206271322063734420649208206563392066240112066614122066821152067084192067805202068292242069138252069339120735422072848420739048207518892075713122076646152076864182077129202077874222078360242078762252079171120810052208308842084189920858491220866961820871941920875382020879772220884112420888572520892152209277442093823820951499209566911209626315209684118209710420209783822209833624209872625209915512105292210291042103974921057511121063141221066671521068851821071522021079022521091891211139822113228421143489211593211211642412211672715211695618211724019211759222211845124211892025211924522123122421242279212586912212670615212693018212720319212755520212799522212842324212887322133337421344738213542092135996122136753152136986182137277192137638202138093222138481252139270121418322142779421438288214515192145671112146264122146631152146842182147105202147839222148337242148727252149156221528884215395282155206921557351121563041221566571521568741821571411921574622021578902221583702421587772521591801216429221628774216394092165731112166301122166654152166871182167138192167460202167887242168775252169177121710652217311342174215821753069217586311217637912217670318217720019217755020217798922217841924217886725217922122182865421839248218519811218629612218665115218686918218713519218745420218788222218836524218877025218917412192011221934668219548692196073112196513122196768152197015182197318192197684202198153222198510242199021122011082220312842204235822053149220587311220638512220670815220693118220720519220755620220799722220842524220887525220922512212205222135434221472092216122112216544152217035182217336202218194222218529252219299222228554222391282225193922257181122262931222266481522268661822271322022278772222283622422287662522291722223354242234718822355319223612111223654312223678515223703418223733519223772020223819322223852824223905612248882224304642244133822452799224583111224635812224668715224691018224718419224752620224796122224840424224884525224920812251442222532504225437282255379922559481122564351222567361522569641922576032022580572222584602422589312522592541226222922263554422647328226553792266129112266546122266787152267037182267338202268199222268531242269059252269301122713292227320142274315822753499227591711227641612227672415227695218227723319227758520227803322227844625227924112282708222837314228491882285630922862381122866111222868201522870811822873892022882892222885722422891362522893361229115522293150422942558229532592295885112296392122296712152296935182297212222298428242298884252299228123025792230368742304864823056079230621011230659612230681115230706819230778820230826722230856124230911625230932512312558223136774231485492316203112316593122316808152317065182317373192317784202318264222318558252319322123214122322764423238148232514392325663112326260152326836182327100202327832222328332252329151123365522332960423340318233523711233632812233667115233689218233716019233748820233792222233838725233919312346692234296642344038823452419234578511234633212234667215234689518234716319234749222234839025234919512357802235300842354091923558081123563451223566771823571711923575102023579442223583952423588242523591992236297142364045823652439236578811236633412236667415236689719236749520236792722236839212371722237277342373822823751489237566812237663015237684018237710319237741620237783722237833524237872512382271223835714238475192386139112386554152387042182387343202388208222388536242389067123986822393038423941248239527692395828112396355122396684152396908182397181192397524202397959222398401242398842124018752240341642404577824054599240604111240649215240700418240729919240766622240849924240899812411889224134214241458382415462924160451124164941524170061824173011924176682024181302224185012424190001242863224230374242412392425827152426907182427180202427958242428841124314918243539092435958112436443152436968182437257192437611202438066222438463242438940124427024244491582445628924462361124466101524470801824473881924478012024482872224485712424491341245196722453448424546138245547611245650815245701218245731219245767920245814522245850724245901512465482246292242463987824652201124663171524668891824671551924674742024679062224683842424687921247923224730584247414882475283112476360152476912182477186192477530202477964222478406242478847124819572248344342484607824854729248605911248650315248700818248730820248814122248850324248901012493222249283642493890824951819249570611249628615249686018249712519249744320249786922249835624249875612501963225034464250461082505474925060631125065061525070111825073111925076772025081432225085062425090131251180622513389425145428251544492516024152516997182517291202518117222518493242518987125226872252372242524906925262301125266061525270781825273852225285692425291302253332642534457825354159253598911253646415253698418253727519253763320253808922253847912543452254284542543899825451869254571111254628915254686218254712719254744520254787222254835824254876012552448225536364255482282555583925561791525570541825573612025582452225585502425590971256126722563182425642948256533992565904182567226192567576202568024222568442242568901125727722572820425738698257517292575694112576279182577119192577435202577860222578350242578748125814902258327042584396825853899258595711258644215258696718258725619258761022258846224258893912591168225931544259426011259639415259693720259800922259843024259888712601796226033854260453792606020112606483152606996182607290192607654202608114222608492242608984126115014261440082615394926159631126164461526169701826172601926176142026180692226184652426189431262223822623561426247388262554211262655015262703918262734019262772920262820422262853324262906312636312263295242634023826352331126363261526368911826371591926374852026379182226383862426388021264151222643283426444098264539911264645015264697418264726419264761820264807322264846924264894712651333226532044265431882655352926559201126564171526569531826572342026580352226584472426589101266288226628234266387382665174926656961126662801526668551826671202026678622226683512426687501267475226728914267395682675209926757381126763061526768761826771432026778932226783722426787791268609226829454268401282685230926857741526868901826871582026879152226883852426888001269185522693407426945678269545492696034112696489152697001182697296202698125222698496242698996127018692270341342704573827054579270603911270649115270700318270729819270766420270812722270849824270899712712405227136214271480782715574927161701127165721527170511827173571927177592027182362227185472427190901272232822723590827255589272615311272656315272704518272734919272774422272854124272907612733112273283142733885827351779273570111273628215273685718273712222273835224273875312741841227434014274455982745449927460291527469991827472931927476592027481212227484952427489911275214022753522427546958275551692756106152757027192757707222758521242759043127621034276467382765510927660971127665281527670241827673261927677002027681732227685182427690371277144122773249427743718277537818277724919277760220277805622277845924277893012781258227831794278428982785338927859021127864071527869461827872252027880232227884412427889001279170022793349427944918279542411279646915279698819279763920279809622279848324279896812801083228031199280586711280638215280692819280755420280799322280842124280887112811291228131884281430182815342928159091128164101528169481828172281928175792028180272428189041282712228229864282406182825251112826339152826899182827166202827934242828815128325442283367242834849828356029283620115283706318283737119283778220283826324283911212842400228436194284480682845573928461691128465711828473562428490891285362428539098285519292855717112856292182857131192857448242858765128657422862931828652239286576211286631918286715619286747720286790924286879512877552287299942874076112876342182877169192877506202877939242878820128822822882800428838488288516192885684112886273182887112202887849128914772289326542894390828953879289595511289644118289725519289760820289806424289893712901202290275782905138929056581129062582029078282429087201291146022913256429143788291538092915949112916436182917250202918058242918932129211922922756429238068292513792925657112926257182927099202927827242928719129320282293347442934638829354929293608011293651918293732219293768920293815924293902412941981229434554294461982945481929460681129465111829473161929476812029481491295236322953603829555659295616111295656618295735219295775120295822824295908312961853229634064296456582965452929660321829672951929676622029681232429689941297191242974589829754639297604911297649618297730219297767020297813212989762298307742984171829852919298584511298636618298719319298753424298885412997292299299142994067829952549299579811299634118299716819299750424299881813001774230033764300452683005437930060151130064791830072861930076502030081092430089801301162623013330430144648301541793015992113016466183017276193017635243018964130219562302344243024606830254719302605811302650218302730719302767420302814024302900913032457230336414303482583035587930361841130365821830373641930377712030382492430391021304229023043575430447588304554893046142113046558183047345193047735203048212243049071130514612305325743054379830553819305595011305643718305725119305760420305805924305893313062700430649148306562793066235113066609183067387193067800203068286243069133130711382307314443074247830753239307588211307639018307721019307756320307800524307888213081726230833604308450483085428930860061130864711830872801930876422030881002430889711309874309379283095132930956501130962511830970951930974052430987141310124623103173431042858310533593105899113106405183107223203108020243108898131112231127214311375783115118931156361131162431831170862031178091312187231227804312382983125152931256721131262651931274172031278402431287281313132323133197431343108313534893135916113136415183137232193137584203138032243138909131419762314345243144617831454789314606518314731420314814724314901713152622231536994315487983155613931562161131566001831573791931577922031582722431591211316809231630234316410783165267931658171131663491831671751931675162031679512431688321317149623173273431743978317539193175960113176444183177258193177612203178067243178941131813572318321543184330831853579318592511318641918318723620318803924318891413191384231932254319434383195363931959311131964231831972392031980442431989191320219723203539432047168320552993206119113206541183207333193207718203208191243209054132123602321360183215564932161601132165651832173511932177502032182272432190821322194023223435432245998322546593226053113226498183227304203228134243229003132385123233034832352749323582511323635418323717919323752320323795624323883913242698232437284324491383245626932462341132466081832473862032482852432491321325242423253628432548158325557893256174113256575183257358193257763203258240243259094132617432326336643264513832654329326601111326647318326728119326764520326810324326897413271146232731484327425183275324932758841132763911832772112032780062432788831328195523283441432846058328547093286057113286501183287306203288139243289008132958623292936432940029329576611329632118329715720329791124329879713301974233034514330461683305477933060641133065091833073131933076802033081462433090161331268233128144331386283315168933156901833171161933174312033178562433187441332763233230044332408283325258933258051133263441833271702033279412433288221333111923333134433342398333531893335876113336388183337207193337560203338001243338879133414212334323843344360833453729334594111334643018334724519334759820334805124334892513351931233534324335459683355464933560511133564971833573032033581332433590021336212423363516833655159336610311336653118336732919336770520336817824336904113371910233734264337458893376048113376495193377669203378131243379001133822812338357443384757933861411133865571933877342033882112433890702339295143394022833952329339577611339632519339748420339791713407522340299843404075834052561934075052034079382434088191341179823413386434145388341544293416021113416484203418115243418985134221584342470083425521113426535203428184243429047134385823433036434341228343527593435826203437957243438840134421692344352943444705834455229344611211344653720344818624344904913452088234534984345466383455505934560921134565251934576972034581682434590331346217423463531834655239346611311346653820346818724346905013472470234736444347482783475589934761871134765842034782512434791041348992234830824348418183485293934858471134863671934875362034879752434888551349225523493568434947458349554493496137113496552193497730203498206243499065135075623503000435040778350525793505803113506343193507507203507940243508821135120552351348583515499935160861135165222035181652435190301352842235230304352411783525270935258211135263522435288361353340235328434353389783535184935357091135362882035378712435387581354395235428684354392783545200935457251135462981935474552035478842435487721355194323553436435546008355546693556054113556499203558135243559004135615302356328883565401935659711135664512035680752435689491357178923573382435745338357544193576019113576482193577653203578113243578983135818502358340543584563835854509358603011358648719358766020358812224358899213592092235935014359466683595506113596526193597698203598169243599034436037728360512593605642113606246193607398203607815243608709136159723612941436140068361522893615770113616323193617481203617914243618799136210082362308943624190836252951136263692036279782436288581363223023633555436347338363553893636130113636547193637725203638200243639060136469323642978436440518364524593645791113646335193647496203647928243648810136538323652862436539218365519693655722113656294193657452203657880243658769136640423662872436639328366520293665728113666300193667458136726612367371043674895836756189367622120367827724367912613683062368283043683883836851769368570019368743820368786424368875213691354369381183695140936956601136962591936974112036978292436987211370127123703184437042968370534093705905113706408193707577203708025243708902137125312371366683715598937161971137165901937177782037182582437191091372175823723372437245229372601311372647619372764820372810624372897713735512373292343733988837352219373575811373631819373747520373790724373879313741988437446228374548393746069193747682203748150243749019137524182375362643754812837555771137565741937577622037582392437590931376241623763625437648118376557693766173113766573193767761203768238243769092137722332377355843774736837755409377613211377654919377772720377820224377906213782222237835534378473083785536937861271937877242037881982437890581379154823793299837954061137964551937976232037980802437989521380694238029794380405283805246938057921138063361938074972038079292438088111381245123813638438148238381558593816181113816579193817768203818247243819099138224952382365343824831838255949382619211382658819382777520382825524382910613831052383275143833802838351349383565511383625519383740820383782524383871713841424238432404384436283845374938459431138464321938476002038480532438489271385639238529554385402683855234938557781138563271938574862438588031386123623863169438642818386533393865897113866402193867572203868017243868895138716212387332943874461838754169387599011387646519387763420387809024387896323883224438843428388536293885930113886422193887591203888043243888918238935824389476683895553938961481138965601938977392038982162438990721390181023903391439045468390544611390648519390765620390811924390898813916492391295843914029839152369391578019391748720391792124391880413925952392294043924005839252279392576911392632219392748020392791324392879813932452239336394393482483935586939361821139365801939377692439391001394251723943662839455979394619611394658919394777720394825724394910813952278439547548395554693956140113956555193957732203958209243959068139610694396421783965308939658651139663811939675522039679912439688691397618239729484397401683975231939757751139763241939774832039779162439788011398102398271843983754839851179398563519398739320398780824398870413992540239936704399484783995601203998261140010142400309344004194840052999400585311400637319400754220400798124400886214012024240134714401463584015490940160771140165171940176872040181572440190232402281344023861840251679402568911402627820402785524402874324033315440344448403541094035983114036460194037630204038085244038959240434888404550194046088114046523194047695204048166244049031140511142405313184055317194057559204058000244058878140623512406359744064785840655611140665641940677472040682242440690791407999240730854407418584075294940758481140763681940775372040779762440788561408196624083447440846128408547511408650719408767820408814424408901414091304240931914409430484095345940959121140964131940975812440989071410101224103092441041938410529894105852114106372194107541244108861141170024112981441140568411524794115793114116337204117930244118812141221292412351944124691941261041141265321941277062041281792441290421413111124133129441342368413531594135874114136386194137557204137998244138876141417362414336344144509841454299414600711414647219414764320414810124414897214151298241531894415430284155343941559101141564112041580282441589051416660241629624416403384165239941657831141663301941674902041679232441688061417100924173090441741918417529694175850114176370194177539204177979244178859141857644183998841852249418576311418632019418747820418791024418879614192252419279744193846841951599419568211419627119419742420419784724419873614202352242035984420478684205562942061571942077482042082252442090801421777242130064421408884215260942158071942175092042179431422261324223695442248758422561294226215194227791204228271244229120142378524233011442340948423526294235810194237512204237946244238826142426522424370744244892842456169424621919424779520424827524424912414252122425279584255158942556811942574232442587352426328444264410842654009426596820426807424426894814271339242732074427432184275353942759222042780362442789111428197242827874428383694285675204287843244288731142923682429360644294791842955669429616219429775220429822924429908414301739243033654430451184305430943060091943076442043081022443089731431775243130054431408784315259943158061943175082043179422443188231432530243229114432397594325752194327470204327903244328788143367124332967443340408433524294335786194337493204337925244338808143434424342844443438988434518594345710244348759143516282435333244354465843554189435599419435763620435809124435896514362353243635994436478784365563943661581943677492043682262443690811437705243729844437405984375249943757941943774992043779322443788131438148024383267443843928438538894385956194387609204388065244388938143980624393020443941048439526594395814204397950244398830444045418440544394406023204408116244408986244131514441425684415326944158861944175652044180072444188851442843244230314442411884425271944258221944275202044279542444288371443783244330104443409384435261944358091944375112044379452444388251444269624443726444449118444562594446233204448284244449131144521072445351044454676844555119445609819445770120445817424445903814461954244634404446460484465469944660561944676732044681382444690071447200724473463844754859447607220447815214483772448285894485720194487450204487879244488768144956124492926444939928449522294495760204497908244498794145015674450443584505409945059801945076272045080832445089561451238724513614445148008451557194516166194517757204518234244519088145217144452449884525426945260031945276402045280982445289691453185444534566845354539453603320453812424453899514542442245436334454482084545581945461771945477662045482432445490952455350444554669845555079455609420455817024455903524563028445641159456582019456751920456795324456883514571572245733114457444094575982194577629244578958145816512458333844584474845854219458599720458809424458896614593564459390584595189945957141945974462045978752445987631460718246029898460525294605796194607502204607936244608817146110734461421984615309194617553204617992244618870146225072462365944624837846255969462619519462777620462825624462910714632704246337294463491684635629946362371946378022046382882446391351464187724643417446445788464546094646042194647667204648128244648999146520462465348244654646846554979465608419465769320465816324465902814662176246635324466470784665524194667713204668188244669051146724724672808446738568467516394675686194677427204677851244678739146813652468321944684335846853609468592819468758920468804124468891614691345446943258469535594695924204698037244698913247029064470397184705215947057481947074682047078992447087851471234924713595447147838471556094716156194717746204718223244719078247230174472410284725264194727514204727949244728829147327424732817447338668473517094735692194737433204737858244738746147419472474343784745467194747671204748136244749005147520332475347544754639847554939475608119475769020475816024475902514764012476287044763929947657271947674572047678862447687741477231724773585447747708477555519477774120477821824477907314781835247833994478455784785448947860281947876582047881202447889901479241324793624447948108479557594796172194797760204798237244799091148027924802822448038718480517394805695194807436204807861244808749148120352481347744814641848154951948176922048181622448190271482242624823629448248168482557994826175194827764204828241148323082483358144834765848355529483614719483773820483821514847202484299044844064848452539484579719484750320484793714859782485307844854173848552929485584619485753520485797414861121248631354486424084865319948658771948675612048680021487125324873177848753369487590019487757520487802124883277448844028488539594885964194887615204888070248927354489377784895128948956451948974002048978171490133124903202449043168490535094905918194907586204908034149120982491350544914670849155089491609519491769920491817114921362492276284925141949256611949274122049278302493325944934381849353839493595119493760520493806014946024942739449437818494513094945647194947402204947819149518082495339044954544849554459495602519495765520495811814968942496304744964136849652801949675272049679622497368444974861849756069497620814981063249831114498421394985862194987549204987988149917074499449684995425949960012049980971500931250030634500415585005286950058381950075312050079681501220925013546450147238501553395016125195017722205018195250235154502468485025514950261021950277042050281771503953250330698503528895035840195037532205037970150421802504353445044709850455259504611519504771520504818915051420450543598505537119505759720505805015061348250632124506432685065356195067588205068038150770225072983450740588507524819507749820507793115081625082723450837608508512195085639195087395205087812150959225092938450940038509522595095767195097479205097912151019772510345385105479951060662051081481511239725113618451148058511557295116168195117758205118235151264025122956451240278512523595125779205127920151323112513358345134767851355549513614919513774020513821715141372514276345143812851451429514566219514741320514783115151539251532934515441785155403951559741951576202051580771516267725163716451649018516561995166225195167796205168279151714225172765451738158517514495175664195177414205177833151863825182954451840259518577720518791915192685251937214519490585195623951962291951977982051982821520316252028324520388695205702195207439205207865152122112521354845214725852155349521612619521772320521819615222326252235894522477485225557952261521952277432052282211523257025233682452348599523620619523778615242236252435594524473785245541952461331952477282052482031525114425253147452542509525588319525756415264082526287345263934852652039526572919526745915274702527288945273953852752079527573620527789115282304252835804528476385285551952861461952877372052882141529214225293523452946968529551795296107195297708205298180153025332530366745304843853055999530619819530777920530825915312206253135444531472185315532953161231953177211532219225323536453247138532552795326117195327716153318712533341445334575853354589533604019533766515349192534305745344146853452821953475291535605253529434535401085355229953557731953574821536846253630324536411985365272953658231953675211537380253728614537392085375195953757211953774511538115253827544538380585385135953856561953874091539557253929254539399095395759195397476154020402540347945404643854054969540608315417342541299245414069954157991542110725423127454242348542531395425872154335725432849454339068543519095435715154411352544314345444246854453229544588115452593254536914545487185455609954562121546747254629964546407385465255954658011547268025473719454749048547562195476227154820812548349485485503954860901549329254928384549389385495182954957071550208625503496455046618550550495506091155114172551323745514358855153709551594015522500255236564552483485525595955261931553198625533458455346218553548215541124255431378554532095545878255532584555438085555382155621872556353545564711855655269556611625572732455737748557512795575644155812742558318595585906155913622559321845594334855953599559592725603048456041388560528195605832156130525612829456138829561569915623125622729456237698562512395625641156313425632761456338108563513995635659156422942564357745644760856455509564614415651436256532474565436985655377956559471566149725663274456643988566539295665961156715252567328745674413956759701568107725683118456842228568531095685866156914004569435085695364956959341570685257029754570404885705244157125652571367945714856857156049571620515725312572291245723976857252179572575315731742573277545733824857351501574174145744512857454319574601015752493257536528575559395756191157613322576320345764317857653519576591915771868257734124577457285775456957760381578205625783486457846518578550095786087157916642579334145794480857954229579599815808752580304245804127958058301581159525813319458144488581541195815985158259325822939458240048582522695825768158349225832896958357421584180425843388458445409584602215859545853796958556521586335258628424586389595865708158756325872928458739949587576115882025258834724588463695886078158941025892874458939359589573015902668259037124590489795906223159112352591316845914280959158961592233325923592459247769592615415938112593302445934108159418125942778459438279594567015951898259534234595458595956046159612662596318145964293959659031597213825973521459746939597610515981289259831874598430095985908159918612599341145994570959960371600183226003397460045559600602716012505260136584601483696016194160222264602473196026128160323002603357846034761960361451604275260428184604386796045693160578126053009460540921606224426063563460647419606613416072090260734994607466496076093160816132608332546084456960859881609742260929944609407196095800161010562610310646104208961058591611185926113409461145689611603516127912612301446124098961258131613239326133616461348039613616716141627261433319614599316151494261532719615595916161399261632294616434996165933161712152617316246174272961758931618962618274846183797961856531619294261928264619387896195698162015312620328996205972262135144621468296216101162225762622368596226209162350826232903462339689623574616249082624305246244141962458341625193926253434462545989625605216265322626291446263978962657551627682262729729627578916281722262833574628450196286004162917692629337546294525163024082630362246304808963061711631173726313364463145109631600816321587263233164632444596325984163397326333075463341699633584416346862634297646344049963457901635235526353600963561591636269426363725463649109636623216375802637293446373999963757641638601463840089638577116391959463946089639606016402461964061851641190426413425964160471642130726423192164320062643346296436071164448926442895964457412645272846453767164610394646420196465856164726394647488596476217264834204648458296486044164976126493003464940809649580426502901465039661651256726513681465148581652225226523565965261361653901265330509653583316541683265433464654448596545999165510942655312346554228965558701656751265629974656407496565802165710362657309916581309265831934658430696585913165991326593053465941429659583516601712266033544660449796606002166160226612942466140099661577216626512662295946624030966257811663178266327774663382616641335266432064664432096645921166519826652788466538379665567616661926266634309666605016672102667279446673845966756801668151626683285466844119668596916692620266936984669487816704582670288646703951967057341671234967156851672583267229354672400096725765167316244673446396735991167422072674354546744722967461241675142926753243467543669675594516761592676277046763819967656661677267626773714267737154677490096776224167880726783021467841059678581516791126792720467937561680158426803314468044431681239126813615468148021682779268230074682409016831597268333204683445016842519268436634684484216851282685275946853808168618284686455316876482687295746874028168819126882783468838321689236268928034689385126903427469045911691253826913669469148451692148526923269469243941693252026933664169417472694336946944516169562646954021269627852697280426983309469844344699437717009052700305147004140170199027013081470141801702527022716470237511703235027033596470347841704228027043573470447554705393117065362706291747063981170732727072837470738921708168927083347470844871709346270928464709390017101272710275847103807171119382711343347114597171278271227451713247627133646171457527142932471439971715611271529464715401317169322716306447164156171711912717315947174266171844427182882471839481719385471939231720136127203217472043331721177827213379472145291722612722274047223782172318022723338747234539172429327242825472438771725118227253156472542631726714272629871727363272728534727391017285682728292947283995172919822729345617304164730393717312697273137274731491217322422273236274732481417331701273333504733449217346427342742473437851735132427353198473543111736171727363356473645001737223127373556473747342738370547384890173920912739350047394665174025662740368047404857274131094741421117422210274235474742472417431662474344791744204527443481474446451745126127453180474542901746156127463304174724922747365117481221274831641749145027493252175020102750346517512706275137304751491717521948275234384752460117532422753280647533852175413934754434517551451275532534755437417562462275636421757883275730454757413017581793275833834758453517591017275930954759419617601408276032334760435517611047276131034761420517622008276234644762462817631045276331024763420317643612764285247643908176517242765335947654503176613252766319947664312176716444767447117683312768284017692227692725476937621770137147704338177120792771349347714658177216322772333347724466177366627732964477340361774130647744305177515227752768477538161776133427763205477643191777226627773570477747484777474917781125277831384778424217798934779413517802394178114532781325447814375178218572782340847833799178421732784353017852102278535074785467217863244786389117871895278734224787458417881428478843651789877278930444789412917902914790387617919932791308347914182179287227923041479241261793119727933160479342671794170227943352479444941795633279529534795402417961231279631664796427817972633479748832798307947984178179915032799327847994403180021052800350848004674180112244801427418022464802385518032016280334684803463218041653280433404804447618054982805289948053963180615562806330248064424180727828072821480738701808139728083227480843471809798280930184809410318102020281034691811236528113604481147891812122028123163181334928132847481339011814210628143509481446751815100428153087481541882816279048163840181757128172930481739961818152028183286481844121819113228193142481942451820264828203703482048881821138228213223482143411822792282230154822409918231589282333184823444718249742824307648244170182592728253060482541511826219328263537482647141827107528273116482742201828143928283248182922691830207328303492183158928312937183211522832314948324253183315632833330548334430183476848344085183524982835365448354832183626372836370148364884183724392837363148374818183893628383066483841581839181628393394483945501840463284028871841150228413276484144011842914284230544842414318432093284335024843466718441369284432214844433718451352284532134845432718461690484644881847182148474552184825842848369018499724849416818506704850403918512401285136201852778485240891853107028533115485342181854163828543335485444691855183928553400485545581856125028563175485642881857143228573245185843048583941185918828592781485938301860206628603490186118112861339218621755286233714862452118637372863299348634070186421928642796186515752865331218668312866302748664114186783048674113186821982868354018691614286933274869445818701782287033804870453118711002287130864871418618725772872293318739031874106028743108187584128753029487541161876989287630804876417918772052877279148773841187820032878346148784626187935348793903188015882880331748804446488140951882967288230724882416518832549288336734883485018841454288432554884437618851320288531954885430818867452886299548864072188716162887332848874459188816482888333648884472188925394889484618902972890282748903879189110642891311248914214189222402892356248924739189313028932760489338091894252728943665189525772895368648954863189621082896351148964677189723012897357948974762189856228982927489839931899948489941601900198329003457490046201901284190217302902336149024506190390029033049490341391904102929043097490441981905517290529041906244329063634290734241908140429083231490843521909813290930254909410919109952910308449104184191114742911326449114387291234594912462319132337291335934913477819141815291433934914454919152127291535184915468919162478291636474916482919174022917287149173930191821144918468019192160491947011920116529203153492042591921240929213623492148091922378292228594922391819232929232727492337661924360292428511925192829253431492545941926205929263487492646522927335149274493192813262928320049284313292931454929424829303384493045361931153429313290493144141932614293229474932401419332361293336024933478819346229342741493437831935226293527984935384719361449293632514936437319371772937277649373825193819682938344919392486293936492940276619411016294130944941419519422377294236104942479519431042943275049433801194436429442854494439111945242729453630494548171946701294629824946405719471117294731331948621294829494948401719492503294936574949483519502395295036174950480419511510295132824951440819521970295234504952461419534792953289249533957195415432954329649544419195597029553073495541661956114229563146495642491957137229573222495743392958282849583881195969729592980495940552960372449604909196119051962832962274649623791196318792963341849634579196415572964330349644425196596049654163196611294966424419672315296735844967476919682275296835724968475319691342296932094969432319702442970280749703853197114272971324249714364197223182972358619731244297331724973428419742036297434784974464219756832975297349754046197675729763001497640781977225329773566497747431978113297827534978380419791116297931324979423819802366298036054980479029812878498139421982552298229244982398919835929832738498337801984148429843268498443931985266929853713498548981986535298629164986398019875392987291919887592988300249884079198956298927374989377919901062990275249903803199142991271549913750199237429922857499239171993183329933398499345564994403519952221299535524995472919963882996286429973068499741591998733499840681999127929993186499942982100033104100044361100186921001303911002259821002369241002487211003156041003442811004265821004370941004489411005255221005367541005485211006127021006318341006429521007273341007377511008434210082880410083944110092614210093696410094876110104312101028794101039431101116584101144771101219654101246114101346862101427194101437551101545121015288541015395011016154421016329741016442011017170321017335341017449511018684210182974410184047110191478210193266410194391110201356210203214410204329110212821021272641021376511022139421023306711024251121024366041024483911025184521025340441025456211026109721026312441026423111027156621027330841027443311028147321028326311029673210292968410294041110306632103029634103040341103122152103135494103147261103218302103233964103245541103317512103333704103345191103422372103435601103515542103533014103544231103622192103635514103647281103718442103734031103837921038286041038391911039174421039336741039451411040512104027344104037761104111022104131261104225542104236764104248531104318432104334024104345611104426162104436974104448771104517162104533554104544991104611302104631411104721262104735174104746881104810242104830964104841971104920442104934804104946441105023752105036094105047941105126782105137174105149021105260821052294441052401111053158021053331341053444211054537210542918410543982110551917210553428410554592210563136410564241110571922105727844105738331105812472105831744105842861105979421059301641059410111060687210602977410604050110612254210613567410614744210623035410624121110631040210633101410634202110646242106429504106440191106523321065280241065385011066497210662898110671665210673342410674481110684252106828764106839392106929214106939861107027321070281641070386511071139521071322641071434611072902107227474107237941107318742107334154107345761107416782107433454107444842107532721107667521076297041076404311077208521077349541077466011078107621078311741078422111079233121079359141079477511080178141080453011081424210812875410813938110821666210823343410824482110831347210833211110842148210843525110854402108528814108539471108615412108632941108712254108742752108836884108848651108921342108935204108946921109091621090305541090414411091802210913019110921088210923120410924225110936371109419182109434294109445931109533321095284141095389411096208721096349741096466211097143021097324441097436711098164210982772110992392109928051110052821100290911101165221101333941101447511102262721102370041102488111103249921103365541103483321104334411105206411053842111061788111071292411084690111094834110939591111015694111044381111120962111135034111146681111213274111243141111324111111416994111444901111517494111545171111622034111647191111769411173787111182623411184880111192583411194868411204388211213292411214416111221735211223362411224508111231280411234299111242582411244867111257934112541001112625021126281041126385711127726411274066111286784112840441112913941129381311130204821130348341130464711131251521131366141131484011132125121132317611133394211332867411333926111341366411344336111351558411354426111363281113713402113732084113743221113823792113836114113847971113926432113937024113948861114020632114034894114046551114115982114133214114144511114219304114245951114324541143385411144213941144469441146394611147179041147453411148146541148438311149194411493834111501731411504507111511842411514560111522125411524687111539814115341744115445471115520011115520024115546251115662241156401811157272411573864111582273411584752111591046411594204111601151411604252111612516411614841111621727411624505111631870411634574111641358411644331111652163411654703111661909411664587111676411673752411684328111696964116940541117010964117042301117199441171418311172175341172452011173186341173457111174212241174468541175417711176181341176454811177162341177446211178195041178460211179368411793913111801534118038171118121124118146794118248014118344831118415054118444051118537041185391511186126341186429111187625411874020111883341188377011189481411893958111901466411904385111912013411914630111921180411924262111935414119339841119420714119446571119518074119545431119672441196406511197772411974086111985114119839691119910784119942231120012104120042701120121904120147121120222341204465011205921412054147112061660412064478112075984120740071120823364120847771120926034120948731121014074121043541121176741211408411212884412124131112131579412134441112141914412144590112152050412154648112163364121638961121740641217393311218744121837891121916084121944541122039711221584112229021122312174122342731122421961122523464122547821122792841227415211228109941228423311229304122937681123016374123044681123124891123213894123243441123341141233393611234225941234474711235616412354015412363914412374921112381559412384427412394172112402741240376411241814412414110112422894124238744124337841124426744124448991124516884124544861124626412463763112472060412474653112482021412484633112492378412494796112509864125041761125116201125229941252388011253762412534081112541447112551809412554545112567164125640621125726304125748821125812084125842691125915964125944491126025741260385911261108741261422411262934126237951126315624126344291126415714126444391126510034126541871126610574126642091126725754126748621126825894126848701126922434126947401127089141270413411271115341271425411272147541272438911273206241273465411274241941274481341275400141276405311277233841277477911278161511279234141279478111280161741280446011281503412813964112821885412824581112831488412834395112842509412844838112852268412854750112862404112871881112881228412884276112892162412894702412904586112918864129141321129223161129354041293398311294758112951373412954340112962312412964768112971211412974271112982113112992588412994869113004724130039541130116714130249081130385113041501130523234130547721130672811307230541307476411308804130837904130946591131010954131042294131142871131216241312382011313143841313437011314264641314488711315212041315468311316560413163991113179844131741751131820041318383911319925413194149413204706113223084132238841132315194132441641132543641325394511326282413263872413274627113283734132839164132940831133012654133042921133119714133146151133211594133242571133389641333413711334163941334447011335218141335471011336128311338138311340118811341415113421101134514231134625011134819031135016121135183211353264511354114511355148111359248111360215411361176111363121811364983113657311136749911368890113692374113702485113711471137319291137414571137521011137614051137713781137911121138026901138112601138239011384710113851801138620391138718971138824071138991811391270113921185113957611396645113972043114001328114047391140550011406186711407111409194111410149114111944114129101141660311418138611419242911420143111421251811422195111425120711427234811428157411429102611430265311431150011432170114331028114342201143557911437194911440129114411476114469591144792114488591144919361145038911451235611452264411453147911455168511456232511457144511458236711459215114605471146116091146215181146323881146791111468987114691924114701211147216561147623801147711041147921114801200114811960114823031148387911484175611486133114871996114881349114901091114912618114922143114942141114958281149692011498606115002660115015251150251911504220111505264111506182011507103111508825115092490115102298115118611512134611514264011516153711521292115227711152425131152594611526795115272199115285411530228711531227211533209411537169411538256111539217211540183611541518115422458115438171154424371154719721154821571155110861155499115562482115571140115581061115592460115602065115612402115651173115674851156814891156950111570114811571207511572131711574130011575885115771409115782110115791821158076411581131811582251411583252611585182911587198011588112211589260115904771159133811592650115934191159411371159619751159887811599471116013751160214581160324211160423321160592411606192211607468116084801160916671161015261161111961161211711613204711614590116152651161617291161797511618171911619285116207131162138116222431116232572116242386116251992116262801162722161162823241162989811631619116321227116332403116341101116352041116362373116375821163846911639159111640260511641207211642150911643689116441363116481674116508401165115491165225991165321561165417641165521501165648411657236911658201511659121211660228811661459116621241166314111166419021166523141166645711667243411671934116722535116746711675665116761308116772119116782220116792076116801679116812705116832095116849691168618181168710511168899611689114111690334116911074116922354116941698116953151169614431169713151169818871169926081170011871170122921170324731170525911706253611707249711710464117111636117121170117135701171427031171514721171624311718167611719178711720189611721191611723154711724164511725451172674611728261511730155011731220811733239811734784117361856117371711117382309117392135117402384117411823117433071174426911174525111747206811748407117491023117502027117511252117524661175371111754248711755838117562481175711921175818901175913811176020051176211491176391176424711176616971176725871176820001176926921177010811177188911773629117742521177516111177632611777259711778176011779246511781819117827031178378811784573117861581178718911178819731178926991179018471179124301179265811793753117941254117951911117969651179790611798581179994011800145911801261111802909118031625118042445118055311807904118081593118092641181010711811217118131573118149711815248411816108511817516118183211819193311820211811821172111822176611823215911824122611825581118264611827159911828145211830157118311675118322494118336951183425911183577311836571183785711838160711839255911840168011841113411842232011843267311844417118453811184647411847131311848224111849104211850188011851231118526301185398118542224118561214118571846118581311185973811860225711861411186222421186321781186411931186522491186956911870259511871103511872134111873117511874100011874100111875116911876578118775221187812641187939911880237611882501188323921188412391188512551188618991188724011888230611889139011890949118911209118925581189346011894173411895964118968801189820581189925451190012211901386119026611190325251190411501190580811906950119071296119082522119092578119109971191121941191218511913195811914191511915167011916943119172283119182189119192264119202701119211133119222299119232585119251081192610911927980119288411929585119302381193114671193218251193351211934252111936140211937212311938844119391731194015141194138211942124311943769119441115119452474119462239119479121194819211194913541195013751195167711955107211956137011957177011958214511959175411960100711961646119621919119642018119659071196611471196731311968588119711840119721511197326841197413871197521861197620611197714101197810591197917651198017991198173119827411198312051198423591198612311987145119882141198926671199161211992405119931873119941089119951826119961066119974521199811661199917681200037212002179412004181212005157712007175212008911200926951201010131201183512012237120133981201482412015600120161684120172961201883912019114312020252412021271212023188612024853120252031120267871202721461202874012029148712030312120312532120321681203334312034236412035604120361213120371419120382555120396812040165912041103120421456120438451204416311204633212047144612048258612049212812050164612051369120531942120548481205524591205617921205723571205960712061391120621105120634561206412901206616501206726361206816401206940120702115120711862120721198120732447120741705120752247120767741207726041207927111208025412081691120821160120834221208420641208528312086167312087238112088455120893471209024361209256512093224120952548120965561209723441209883612099620121003121013101210222281210310481210448121052335121062250121072011210811621210916512110268112111248012112178012113165412114251211542812116126812117132212119109012121437121221041121232130121242657121251437121267481212725901212825711212942112130445121311901213212971213317421213411581213565712136188312137195312138259212139202121402080121414271214216331214386412144268812145135512147198512148163512149133812150681121511634121521463121536541215415151215593912156221812157155121585341215954612160204212161698121622310121635021216414931216516191216618491216710381216816011217064112173184121742563121751109121772362121791006121801293121817041218216181218323012184196412192152412193220412194104412195955121961021121991681122012052122021299122042594122052455122068671220718311220841312209130212210194512211760122123481221394412214246412215256212216164212217262912218225112219242512220860122221391122241629122261757122282049122312661223224751223310711223435122351277122361206122379881223914351224032512241523122425061224315551224463512247120412248234512249473122507991225124331225226621225367212254951122561176122578011225834112259271122601030122611440122642133122651049122662508122673041226822271227016041227126171227272212273113912275952122762153122771696122787151227915401228022611228114691228223581228411112285152912286265612287478122881803122902671229323122941033122957712296267112297257412299166312304701230611991230713641231174412313143123142496123159421231688212317627123186531231932312320152212321199412322119512323172812324169112325241712326199012327179123281969123292410123301183123317301233223191233330912334133712335152812336567123373912338866123392161234025501234180012343110612344228912345490123462293123472537123482981234918171235025121235123031235214181235324681235445312355125123562638123574651235853812359599123604471236155412362149512363126912364234012365133012366168612367933123685911236922121237078212371255312372124212373177312374185812375229123767491237720821237840912379892123804421238123831238210191238315811238419131238513791238624321238711001238815761238914012390183712391262412392170412393286123946471239515521239624121239710681239918001240020741240126641240282912403268212404945124051848124061643124071194124082188124091262124102182124121201124132330124141223124171288124181092124191021242011781242113212422260212423262112424229712425102712426847124272547124282041242913191243051512431130112432158512433805124342132124351746124361177124371795124381468124391822124401570124411241124432334124442619124451861244611811244715941244819871244921641245080312452631245319011245516612456199112457124512458170612460242312461175912462178512463439124653761246652124678541246811101246920891247016691247121661247242612473861124741256124761401124772506124782171124795101248125301248222231248322851248410801248561012486151312487651248810201248913511249044124912435124923612493725124942009124958991249661512497171512498957124999631250115361250213531250323431250481212505193512506123212507224512508144125097971251049125111601251227071251314341251512612516201912518164712519935125201888125216801252222631252371912524214412525723125262111125272621252825312530267512531173212532216512534262512535218312536144812537154125381248125398561254047125411740125427071254415901254520771254641212548258125494381255059412551171812552160312553170912554667125551483125563871255721751255820321255914121256089712561168212562116125632038125642265125651284125662463125672270125681098125692456125702191125711812572852125731120125747091257526511257654212577182412579248312580350125811892125827321258314621258418931258513051258625681258712721258819231258911541259011671259166412592751259324125941538125991934126001586126018041260211571260416712605120312606203012607179712608221412609636126102693126112029126121294126134501261417131261617081261721812618850126194541262017112623105312624241126256621262622621262722021262815321262952112630690126312012632564126331672126342951263513761263623421263711311264082712643982126448341264512781264675412647190612648168712650235126511444126522670126531878126541001265723291265811711265917612660435126645661266670612667158212668150612669623126702666126712121126722672126734001267425291267555912676228412677138812679139212680513126821022126837351268411741268552412686232712687263212688135912689461126902609126919541269272712693337126942642126952428126961240126988951269954912700116312701818127021999127031605127041511127054881270647612707210012709225612710550127111779127121946127131295127142302127153181271619312717181412718175127197212720246612721189412722152712723187612724166112725224812726203712727115612728134312729263112730870127318551273243212733642127341791127352111273687312737504127391310127404951274110521274220691274310821274416551274644912748826127491677127503931275267612753229612754837127552372127562542127572104127581374127599471276087112761643127622051127638741276493812765174812766231312767138512772180512773128512774367127751641127761925127781455127792276127802871278120781278223821278346212784244112785613127869851278763412789192712790659127912161127922420127938151279522821279620671279715531279850912799192012800227912801162212802183812803786128041978128051907128062152128071521128081282128095961281011031281118661281221671281324771281425041281511212816256128181011128192185128207651282194128221415128239411282413771282515451282616001282716571282824791282924491283096812831112812832833128332221283473612835366128362235128371984128381649128394331284024691284125281284210341284330212844977128452117128461738128475431284821371284925461285020141285126351285222671285399112854514128552053128562131128578651285879612859218412860545128617701286224061286321312864572128651733128662084128687431286926631287017711287126112872244012874423128754031287611361287717671287820171287921491288011641288132112882239012883255612884255712885260112886239612887268612888358128902295128912569128921772128934671289414921289521701289681128971043128981499128992234129011523129021316129038812904507129052510129068161290719371290830112909441129101425129116171291249612913699129141273129151691291618341291724441291814821291925731292012861292120571292225231292333912924215512925862129264212928199712929628129301872129312022129321084129341932129353551293616301293717251293814812939136712940128112941169212942197912943209129451783129466921294722131294975012950281129541025129551018129561189129572560129581471129598211296012871296141812966262612967188212968262812969101512970182712973915129748201297581012976265512979169312980171012981161129831350129841720129861079129871995129882031299326061299599812996261012997222512998121612999300130002607130041951300537113006122913007238913008245413009186413010122213011314130126441301344313014966130158871301749313018922130192647130212307130227913024881130252488130261993130271592130281517130291123130301380130313421303248213033127613034117213035166813036371303719081303842013039962130402004130412286130422136130446881304521791304749113049721