lördag 22 december 2012

Vårt lilla universum (inledning på gammal begäran)


Jag har nu tagit hjälp av två benådade mattesnillen för att försöka få ett bättre grepp om universalbibliotekshyllan och dess exakta längd. Vi arbetade i ett par timmar med problematiken (som de f.ö. betraktade som helt rudimentär) och kom fram till det något svindlande resultatet att hyllan inte skulle gå att rymma inom vårt universum...

Ok.

Nå, envis som jag är så nöjde jag mig förstås inte med detta högst oprecisa svar. Jag befallde att man skulle låta knyckla ihop hyllan likt en DNA-sträng och sedan istället uppskatta hur stor procent av universum som då skulle upptas av denna gröt av böcker. Matematiker utför dock inte gärna beräkningar på gröt. En snabb omformulering av frågeställningen gav oss istället ett bibliotek kvantifierat som 'pappersvolym'.

Ändå samma svar: Volymen av bokvolymerna ryms inte heller den inom vårt universum...

Nähe 'harkel' ok... men hur många universa skulle det då behövas för att härbergera dessa boktravar rymmande alla kombinationer av 28 bokstäver och ett par tecken nedklottrat på 200 boksidor?

Två? Tre? Fem?.... Femtio universa??

Marcus hade skrivit ett litet program åt sin dator medan jag upphetsat matade honom med frågeställningar. "Det här kommer att ta en stund" förklarade han och startade programmet - det som skulle räkna ut antalet böcker - antalet universa.

Jag väntade andäktigt. Det enda tecknet på att det utfördes miljardtals beräkningar per sekund var ett försiktigt blåsljut från datorns centrufigalfläkt.

Efter några minuter kom svaret:
17297241121389649669574482396818213131027145858316999595850434614757458568803643103282923640885924744648895915267072609339480886200924447040211102823813483956168974176942615093893878762100941459833818550716310334697894643030515640370769916119934595830677003442988807998172919945992903790071444829957237876073545821258525296585495272272240896898083592840147067024704974985563972092264186904495634761733219674120556518908077530572077508223382058808441054634786049585622437471208743446622769079857254639102645229293972408907194348593449050516112311079430380911968866264882753602601902521227469782902003798102739327969893159344292371305945993768279566592672673809742803365682191054543023968645522465948012597619820611322177610190947451953174894065220529372977865198403749925945676049489142503673068396162321376013532769017508090635573629855999089532013834176263455284488990556255126618294611302865244088218148553897544049755045018120082545267899868058984955995003346058097551262445444604858107706753872434773130922414672820223349654597130119036808138838061074234940367892160762325779110824401856795451751152210214299059505865184900264664556607532187589083406551126557944664016164453635830258749489737661443690979023443733694179227864913838368286338040132876809930674042519907658039784629592337832651869074838701885252866584198792302887362253931342671191863668425352158288458998677176730244175131885572723808427454524486700190282844405805240737993449509555771072924360338900022150088529351885992503917884553957786665753938037279130513243350991462734055000366632147724615546912612334875761465278513911544152792386797186987613711863019306565836692698240624443785263977160048568888657502354173598939300027278278250000122995145437308014728732981587147544668509959011502675771596348470445993184553702192107330633071578489588174632901098721353658507436370261482825309723328305265666271795122356194348820093973221026570262627516007440762375070095489402159652455854029402920814441416284852836077445059826893004399264933515347409094700895437352740825879926890371678259697328510259829964798382967871355833094438333568368096881405122004623760867042652737474234184300909882388475892142263751882731999258052283428380736888937687816155412455189077068354448179657607137610984613055823749094787006269553048675366243346383839254010537990252482757531329542675117472989328682532665695979042358274604682676822266311831230550162189403383013480895444540621877007643664613734843090463580316772340754757971203068799995902060812056511244200405893739648809505467640286597797500982818427816157232741553199271940865803366136038585970433350123409594065809317985488176641702536793515804866406600589272251554845213614269834738566709108776206120570690123138677843703472426566223393908137865070895186791849459279572829217531687725513840657957840425746696023768150904050248123976291303039674158398838553000193451788615712372149081470096634599815092655903648580943091094846329674784551259288260737388250328974275096072701623197153450805012475278391724079566747420710737319895281278049231454081615356293892470395508133560762067709276659790098826358588796246708017706536279660242353634318685232675352410369921209602735871530433163624566456927526706024696529475227511370191942738919255879847850117542650628272876243335268273628947274385600024288265543245925258569097815811876805501369750179753409799975914460053836111316158801218430264710257706829519809958229009891454335316748801402046598048024977463005012511844547837501742311651630675103310570283081017967668966075969857585532930797007179485067459912519739498358383978396661128239657752313433894369489633564968734206119281887553089961169102998039602387357097395734024390892093961949495563835080428387494656374782952388566951962033394944656003185940032993189534332224621617157336636246815285810132398724497543135124097735247587481802909049673878904438076963731859631330997737283440281016620087282043111457780027875933502381640578811486211775032765298406501589502037353831079402634464568489266263592049716725195814376485789858566296868224405163465071163352215472779031124783212230736731335661513484872994038691731437245216400811110255852095725179248929633542399087739950150413938171950098641324811717398004917403866756295630337477078427347099041806400844710283143301047861226533856763811696169305887747245603796622248015531672692178472113412265422454218985857936766012182967830177733105954974995599549490116319474265314327075651404106219868690447162298290797530314016294189115768671371175133797110082623747550872522092542067566535588312479240370845878535242525454219550939615758328029838963394635479638713796723695932428192357933780596477522654082168834413331925732998008051144785161792234210180128264921867197907587758203038353442401493347828940777670623339995213922360353999340751494634800962590587053274719047751311113349657340003760926812106128103569677232243167672896183056392764975109026428415664088205287682176772606092305534681675426510166380864940050939806845393534881904927303775372263208863646450551275382256158745377124531978342545132935868363756635092765366838144354626860535825725736621733107665729952283818193792159871293505716960870459638327749808309335050151430101884535653788558319688902800209064085034562003272175566722553950515663473134307303345215017812673088952496892236779731173888300893063090096743372545822410116295959492177406134442236900895914598123391656861792779376930259524294875372256000306330687400094950501800999418354656578803985947622865412010584656829607999877105853444909947182083182038135519193638999569867420449465111632783239154711137891184663666364820431828288775363490636483066631241077686469858703007712971783030091430870014730622893484521869314967185808221222938129945751862562931892323910392814933260522933031066519333020015997179436256674045625516242002165416825561487591975181421454992076511195904276468282545043643583636323424473766706531343723828817202952475439254129965684346346960033928451555433923142507392197957912853349732338371800305627879990391947049559841639933663074298776318516284450040097355361139252616034776293138820237567689134036584320490353343938242457264849061318701889886808393509320405745103519132072406447962864891827961517228717224696356908042037403612226193069307014239084753024731335692454411259545277760879373636048095967078521849002329560396412369803307854267619864734964305145377307395975841326284863220581264961325019757246532996446867494108626840463542867258717813718009349072395916262468537854463524852089088895765696836613513525616411102575633542209651821393570980458969287175965194452043184318661663003789558279491452384702301424288101988590218238163917475605397255627318871441199896426226103692414296259859883827518147198786017513167778531764798686612678652674145520845988129323382273666281866156497849579489671896256760383529629167034695314992721855261609129503671370236078478696224564356682854477774834383356669732713490551545725185296440872943373083803976689042899440353466322147925196647365472714092282680419011406400187647496356498448415278107016357702574034646326453654155252755057247280552570344705522036429349973278241833328701759461792638142272914683805243532734874284879826344645895192205787192007676430774644109655110402862151279944262735239265526835174275843261059999543989487554755284016389628829776011607893997067564733344692348412598196764406867481390169452202868928822725646999517006551138183400320692441088736660313504112570817420886391221989568788806930410083253000257629431169085801063233579579780851072225303921906589169008008865603648979858290260063576656801830233108627405310349472660875212890187756188062218924033257455352214976130049213849097736769578916852666965189584536503627395512233375929325744516402675409067614405564133126660247675094858390379586065331115615172782694499401323173067942558359956067957815932821567676435927365092750448597305173110020815227844073001081393038463757594453298371118877972665049509647441673533164889750717668586237501262004403489105671575232351489320480647678406322780030682338305049285940371311125295339077225812911969429295643373481202900246162039399468476281691794751907079837615768807103808984528807391651175806579239550556980164759153176794405782320968778778850986994815319622858200580864960880313380119188732037791872203212110697522417229866607090387701818646791827661349756693127785342287507149360584795805477967344347867431732207866333990464485186273740793640702945927467151226979516480155235897441778036795707020629401009948671980427378497155140539964276584322370051261918832561821887820673660786569292440411344368780355391898776673862376667915450636386452101916579301920761632458309721264192537111385876303156988673243513413737850537905791733647946358389678244398286126677330214447554869184363930360573905505491229954217575716714013469361649625272003434134521416467722267784096024960507071967837795265403241457409048782406991237012933896085586450397104102813253512662606346159835291725386457806193400126211140439763438476560313924111948351504854698630667194635909776175541961355910029247131360903037560415077403257824727535816844175522763572421392429789748760906453468633272834194134912000466556303581619855598157095174583527803955627117600535519539514921312108378264826127260686383634313647549710898919983796171353880937243096096864120204084351249965119267957995246130857593671963195561169769231437104890234226534623975653398783790618521757684518649346321138937133314111814018826498518456987629350264415991809454215953213972009851734588353109239636534338690896952842362556875461566535596224484274255394927998488904224801705230180925024096914095411847470958923295639949475571571857103738211316303093299488321015715164149598928672576309337453400464414828083984262412147236107411362401851135697706583931688257307856137203415360173637820655679913482523928631747210067874396246572559459342816633794776236215175558524009904377011480566345912065880911835736654606127782966412097992222057643740892961139722063924878052070317679630459327978454563615786688179343964240595492627326677444837830081441263093280562064176789955547183632099604365250475697401541403101514624485277239042372991076952280769220267768123258800421338918724920440682945821229484496662593406741809665321448513292722151739413895714765910338922943375400359124375317707197211712835578523249911032238274432709079364171229411760068687635214412149534266933599730622762237724809220648786655875408012836146524521857253591486347884711742607233226101412267224100181490893907374661076823015349767890967383397589358264718928434829033714838952259177589594906572677592358574357845457911227093519900866863196134911137775600890873882624633000646977184726558331411432092449844179192337443222265165131540713503238144277794707866749797125406433502128689132201226126237819677855906728434852743984243235636524511105828914144432530980807779510478983943512676356451596335841418678095803318384526072933262858676480275398523799553600610663087894239627578701322972804704790041148050182265658856755873105734246315148227162310184071714819759518721367320181894341878657747382838121147465824959668663417361069950950448048706579570566885094722600416893859126093247238366432860041104337472998538494532486456119653669969069532027642507732678555378249895072834303759680434859976419443637895610104995961007909634427265789383857373113573424904363331700376563778669728231480259932842675489161973173201088135105411369278681735044520415882269433500710559271609097082791538491110821510522950450384041435606460316062612203759293540020548726085329620371921012749905008453123535743999854588780424722802754269117616326019699028096941713798854903286542329587642792483843993567681257185923099650552203602619452694568121993403324484650567678922968893462131794165563326190655403387587775528034298631743647123936831260119034908296479009326027603654189526381701048553024915813435147048465647505102004866171916067387982702489060715225001294593307259927483404666373700185103730620464476224961040288376771074602085040278665071625620471814777278830139775354603757235326290869565572852103307933611788931986288651067290246132578360769104782745959243296948801019403036194513083980766179979892819711260136007778182369051185303955854246998526269978172341761876979227213157366619891081427436164750889535182958481516272376293192176747997834233545868904053691288610524275535233236840146282501734290392242871926299865397321036118896222776916780009899154379398208480814316620065884234837274705867633971060180208591214546834545215289999895495586486144656251788173023363276183820620223519390530622843646285497467727466123887815499774471736247455268985836594193431634396128100411164544839076126182004022833391280202331494898546419193536803227311204171895361523438859823904631647020760349377692420636189867904891648852499661564036269963323472012711894024599303740524036539996836395227664267033681675009573517402396641647302948799659695222066623442085541017418334644013354871319080132551786445165232242511930699202828634148355091110811923043358358669774205918004962080020753220905965563803918132589784106536956348431187308687737291401389989523727593238829605786653185110264386224017318999146164594823775554701855797419340739088196320337696992621069565529837446289761304689046459492678840969693066298276485769408332375487846089490402993005554155624744522519258207776131700630250630338980067336966731648905753881739971518805622719954383477122369124486613236022123060148337063913048807946970525389166497612426773598035477884093665351792780999413574389076690669714739477342090401254519117092708202620879143017240586981633617277187812033430742223624543162726748521438283777396916483339042710923501918680029376002454342546573925524246376073268685753613817693371594145924629673163247424642162378472362491897848670004723844519460474093809337196923459614048049323560292312508391862173496282755156368830151460224094800410762223477890640255531657740645751537916477013736846376102814951399242914552511474551808372607481618197946294027484229265682516832401500577043648901379214475689730917753920084450806264144075700852650572210949389809830932892744467338533353619681252695614164740907853698502642840815956805471089594848484514553996446388944164154782229114254244989963454211879480221099148129905040646559448348097741535585688141724352807423285936162031583345414129549439227948380724001434778822714195147490915278068804604293647385624382467179580320353045173275845901503147072361366946428880593662673019231985195920120372403498749877836657796296219920502169542857735567280712955672430157143205038406531948489333936473486017805895908505049240765366154771382159690618474155033076348110856866885261154441791377913564765624796456843774926466511991965210562518198315101785328481891892601491040929269579225375977690673106511056811199466680504517560227286853040264903370648649975484745250491987240365342836895788083648514857996098939943492713706603583729253299976186916879737398861164579779635010921717344740620294522926738373414860289488580529877091321743291407249488760630436758987396999698489621325583797371544314606191946245125137555738451611623325779714305323799234731355827061169425369694089860198513849588150112159306927068903011609438944018420358815963946994052543054671008739370470292683387199495446801709675565076156742974579022230525090228118412361207731433384547928298151352916829787106833496218871002344147350960012927549758506632880416489696202605957105958198847268854290766117060106602710118000012273141194945570564591582178099863453461345011416522194039771264223838101322013793631352400693216819456527128842090579148409447950793808264004635917977246120213252624030552260810797736174452515842267041638602417412713084001865717586305032044344848579598330980171743238500113297552336674297194927261618881478097890610589712111954116526937586482900411971921289669132641012533036600980874615617543286208626531569002439071352040434935254212247304691484665344060141332570714117049628731322838230238823296615628713756194379454789062215859834805007389431032785391892244165721580796009270944116298593069442164749149079731899455564351180106670443274665499729149699040424590228417850106157734562013773212267869668028125611696327113866144927526721385551949625616769979033106717639204103360881694544774189881318225734621401469388319060573278946476619753488082596633547860527434398731968358245347076745380023150452022114991106933087558426652367716407765852020913713689768958862342639004673927465910669757756884615434910751131141575479757831539749851687614619189932892540725225728429032455120958464196292579691816063490690730332502910384276623643548808042903193942389201905719047937079405958482689898417604528319570896154441170201825099518128979542103944753381551890219601879361046902469793128036810996639769311649976380737816011911621962608270746823249810926250686115054678085294081863866134978282872278942711667899738001402715211091656576427630110147411244639533935393952404887255311377577694585597593256331097932330810941456490242033630492409697765373783941482387453336514655910018548545492771868439942305914526290286227872789214186756761295223027401076586240709917077908178481101176203631383475387361169386360223362025737149989559297435955268733167290219945263863166165454383397684153810397740351246738769815760272829929256461807114521754099323170054126253060379092063774149273963490705750129342411502209099958937308556418945270348796867360586979030617748112517176640278946588401619261292749095951091772319750551047653930122879163308685891720507140408770300669005251900421466044045535485905793227114779346981554071489600585224640165851110996394669820317612464276308287011081871472428875879851907559424031634455784524819394008501951912121575260114547958149603300473214001419013394248760791437477070205610094690442203163836914229449089080363220923683102394213217278953620273374986954367162766942914883794637991440539051706091926887653443168273502289125204027526005628939747208966319185323064438047054274570520644055961101881256770170748526015247499213523194359534690877286613501815753668969821545119933650507679985558887193029257599279451855766722242399741144211424832860923423336198605864348315763269807264831349827920722902961304142162284686843927408258985713025325083375723761855936993017422900106393453559063121004466025603004205910005184744352017272255954477098785032616970506085408314703200311628686919862332230653015015668192733103979526608590064429337753654890752786870220737570245258071418553692497763171373648613353648899179538308553082708020804002441135369441582949194911585487494225617069898635111707790162357735671023455743085159178845341079389701548250189389555444038309188455774202719105218664061752897196203228461194587685395981739387290650806486809961214627109187371774840431484512693469623658796187336692713119268570789703024029255153179922986086246931698722028675424918889874986993794638944140165936007091177104426525401903060411592671941018046160812882442897049941785411080469927180755926518531517252482244613469235734330161962801409803024885092790429819660322233882884535583727120478078848410366967701980358942011859019409107287557611753420834935345744101513239538258865468769820440969873508740945710821179724191448106247596150041966114908280348191329834359305988448272276605705156851120675451578697252153739103012618940398216347865534387248175936598498861498630568565752250219446706794599310642284755409370119648364647825778350102925826898235614414444189022384760133462771394762625215977231671393579429347350298368491401068435930808864831170050943942243328041476650271369961903937149207552260670601157404138867198645047944834721619485016560519512592418656985639055288055720625840169110963682062197528933689075985882171010275446447456893474832179712555609036397511136730111904358781661604265477244248805528871450335490116381427583673736902367586682201135285313282261705763117103463969105399414286710733307096280342221888860387515184005620960748009423619046684622650115942699515103224999708773678317697713140445066754420577520455447345577123472470181861932937570869429669252499760728113661428339990494661011154677856212746542097960778473480333008075821319805300938672834241122220658205390131207255972968622626226228380013489866333677475783775959071701870205686496652680162964927454797725089930933973138219638600795056220578773939120371681209832267463496681971108075484830087350343113356504261421220965321823816629056951670215430493162654345583634978059517098732040466980565773812998982910103656722504076866122562316977659530545058774796018007992697923031258739961984753019947296280411093612865127875140569368412575483501310580457554757471029751890219177160100767602801112443934779827532524748167784403082135054215255733391093803010815585617019507255641248846506807674606635641921163383251662194534702962981180657929847175085637092800014574928179882492982645464029275214053677803598346879985226252145216884690782606737288192256767634435595048379103917464846767192049953329477501179680990739566165200023242715906904452270470679467867646066958988243170128865726745656941921310417800922195921418140170319383897246524137092231532958826787269730548214643844366493654567129433680629880536980496171283029920419458710166806473308480511662298439967256891405144298584991065442081574108395306760212361401925520956172709939166109661451020194782398017543319134762424000433958537402180911887303206027350568324361359296878537398458969055510620463473020317903256266813641892941982897606305234375629636591141322679707930097670919569833332631317197041145256604662565280386160971693514713291145324512317392966704728698492759839660293236133601452157215907611564001654516030356463658223567862076207302862134754829978407340822452222215857543684656634420058033020647263085393364138069491592359485980074271278704727864684852861171215893620331596696451955466614953710098017152722616247773214573163823505397965236487020394180858588970260732102324622215553839836537083951541953945022393846321696490614900993220978445499641298675364335373969754559555902586015610937435995475183395753905909870879556588112240577082490621455458105220682742435734120790494135567611211092641996887831229802817259183928685113202179187406987411293924361917244428348891712670442590349586098399076148733908330239011840893102998795178608185928689156743116578842125886370371271829868718393132462857863026239877603778303111957182178224171971366066525026952900254927921814616131493243257113285970528048826101824563498496442386938870047579875992496346064956622173435027976556426867268801806701256679583735908628631204374628482668657073819286253801405826915408977812256047023816145091070433015114564715677746574050669550340434920484357974046639309181845292793478538144809718467290278660966083514843273416365126277833716656455426041669838022491050051385619798630755737042123411511264100797867256832484087670686683961826261985731436138319098292990362013420781287274269706085292361444790166295720307972147425762843440621347180050152722496705620545569023008676049818395104173149878306990360954962678442600147261112754074891103026455619158817229660801761546999060926233710537714797578584761888977752127117003189241382153736534559065411639537131212381631478229920321952887114779603379170350244695447487187464818985101795450458463136679153497681597303754621080259304712194418050596161973063372943056833961022583566687005167869781987804396323822716829899897979707977515720347459206462133392431915540075976358262621782608183344872279820032819046689630015750443040884658333378135583891094339163099944865831908635178630417568707103083294301203067226401442089197440505913748010820671861602394754438835566721532408665343377712892703922948023432851841945225638851198061281737521770617636537101626014842069470802709214670351240470778365657017851841969758477939552417889415000739607121436180732709265782085844123646991861118597843179962767248230101202516240248127355141863379656082583729102582333412124077670312941466565282127032579490910578453597698313866963567316040293262971932009346999459626644530280178307102948849744979038797809204115322973139490030090665200748001897824600991572466377845635402599268094473890006126856710641460200199540593898489319269917721494212376483153130590804265831985572608077495927617463958546981689905391118945707839100503199220767638014960575897360511428180686050063686783072409016745843533275223372440086102688381819846516631470206083533125701525210012427772392116577548001165539843043980497317420908905807525008825182459626594365155538700019615160266485810578510860525572012441978155127813998509660855287608084397098928955576510510084984378130964736262347689428074791914514538731643729952174206032095485551194169190163701121165589271006836153429383361149223150241994828220075376652719909585294347286676435768666251642053423966700524420530161551255274590893947145883297422844661033905725578427148564039445357906970417010302621250880522486955172476683140019647230158514574435727329253099217125668507416488998996824359420058356727622848013536531913639493646460939643286167858773192276490133373406553563461378457800281245839155886983344761359468776848385976523132919035407587816615344108308603143359317229933583712669997967301823727332881110892522786460273853435162427314806263025852452906183040485475540595751312176202516608004082195287889300798711516092511051406806379913805486727909362162156486190504197171745230013081683622758611735742319081927590657948651368481908714425798783529329981669920589413679012022822711683665655244029401815190841920923444045465980436236750240106880551417434454070389757394796350917144125237377673769179188012501092994909046247406199121485409249482612556753081667410156707507850060397966005339389737882905307013233028815462805444503596984284768198078041644742188000361079943110902184194611136028495320211289552162228495842214705716549206657098939953996316214147948624961971511852652234472613244941810955383316320870278299432316995109848722246005562206954707420966157669391127029655724714704780274905699642583143497263148856936627641520587241737293369805280592985890031597325465319561998400977320052367912979967824442444269562669208773305257669125943696153552146918550893469814522717824576993095746959504301045194951100500922583965472219494050705409185784986275386840618876631675634445272308295657409034839424391000945637638907487938929675715405706855583257654699282641223050069778124165122185012442027993541935582066765800245299026792686120150625037178028684829216906087496911467542793717287185853136876935600283630133452758109716138312195042333733713874291567096278607202858727204269850032969939775313180438740291644051657943918853045508504960918511461705179513795645881873699726317694947890636248242447109320216541885449856555410543053587394058405541517864734507198051951212343091741893568166817619729024673337279995829227540160556105136287658299030291381533789961657151130723558936153622235248457439437795675703061796122806745460159187780049353709318249189170806091074438041317923567870221106432017762899254753953346788846632955497280640048309983153290565039817487822524867873462468481695001596985062686959331808215515478257561783048137514760490197135638312759298902838646616872076792369765934121338352310794657063267217443749961637325635331101313829096909164557397836757890971983789589399856994814432709798864954421934795029544624793266902417100131420625954123651719021721535456224955307186364624853690057036830567715577318819484090690278390499373437516252318100489474112343292737006597394398629095746563793401435278132709592061468848902641051309555155704348618460919234940865778143834310819811352254256547382068889824225002865877294720717987319154993075507930976653552171984611170913262033096491038058566105823452475600052524647572595703866052714849288969717104105806927611163763617822766763151013562857915181485627504507223386876918876755669235057183602518168231875169626671604276310994018255616445388962358033888912476230203835485143244951664962775125018458988987611800737712920847181512769322953320770195998461605928631822047549178507607687485896320987066435272989394050251286071999596285945124024962552227080591669575195124957269604497652501295723576968983168892858877260482371101086697246764402846652527140206616709789124096585739457773899435689799963950700214444926782286361551000871653582950482904237382428195249496160764823478437153121241275383855101674679270708835972540944591235524178405930890688542760414748278199978669988585575583734991116366070925377135786254679705038810883369037887710927824307406454927799150736468002955356149587649632988211786779029603014854149532517415530193040244072782552051227308548724876016235032924217702819035449415465122879225600055908421848456252953723889158829688247721415080046121539793784344422597483023903685090698324685113517409180427111883671995783411517409170720315326184601929037318058940350550146030531072016886697135855244553353288793264783635939384677342520285943107086602422118831390402379059527344201633811948605436868477905280762863881632536932177830107474898661565963638068193532807339925572549685158531814732563044893189993529698562416118535898430285096189165628842007952786957630413425585526800417939449119055059761615233087369101850918981391132574622352316332367044449398279776944800307048689658618678853789702028469148487482762601095362742074979714675458012947171927192877055378764061952260485182423784333589526404037123450354978638661549717376235283129468532574843621978274742237306525966050807392112232643084366613588220818812486491184846099800385018791049263063790839071671713138238584095926801893751070314107175961308746265488307798600366711558380741987733112893847492911176304692470383990490376096143446032063171221223095995809674298108739133124236548399646894464109252768900522575209102402204368685039433643883266307903988298380594634411547607110196811397188440216993610709418144897138373931979958150056217232613661649266390931528625486627686501269714842942463534318135629170957651093818912554861552505641835625727960989957517216959203059256454018762641156999485684732504879010887715570662897823176550331189652345121940945336678180482134190220575692018228711369443842508231972737853877547476452002736458836145211606909126289000253771156440128113300436320077831079163980726958114488601628863195688459311514699526958671205519489034359523701902169991051659020078305672976399151161349559306476443211601142285322987019793734331755972923300601015326833462657924784282256864404239985249747906163495370045189074251714483077424403331490922418062832295125406976439993880764919463336000259900870043356830304620553509424497968001601125258817722492891813773749976108347073025245767712975850699305135845673668116576257753914106390773423483168349626989913125326049670606818003392598169172717570066468448683154936026106501598720362980177103853317525182599619158007856441791155950469122298883107633750581738422583917674448028947283695197843925515333539386310210764421266348473114282491001889218759277568905778923942543845025643065132562526128310839976810630427054784331204103653841897271438569461502773059401416256114354583237661538893492680353730264604778474079438693098052031187811636065685632970540605417207560813884054932547756330682628515035360407637226977339549487356093811449152966195355907003671146578393708627261789938911328418022705608486216664802332049252401541359074588732163139031270152698885969308512894804845087156556421901484919839567216916585420466372248784437567247571517802782048546903329292096183205999583760818926746159970443177649677038560360220328822250594929715216510034923716034019350104005036154023792369740102713595941430844485683762582015665223920163463110000418605647472269299881885884961351661226485653822737619730453328662215952311373919419098972375646015959685805305741240689668552965431673245687365942498308037549505250156328545339711498669096036766849355276281772359556758639790964838579899075962255943590711377583584827202265104681180159244927094095447801831964920284054756073542646158134782413752665453704431994826106322563323973563886671191638642744662393027418080445434797903423108069676968908453345223010524582686938769631157723629704417526618613527438696398957851193553450200849020792884078651572549031230989540795122862821305773817814582060600893359497989611877211696332385170835140725430930231730245446246086369674173223863597535138709365061036439161586815404153620683631478376201703322533811250942373052820556529144484353419568040801418712864237729854646591190241921571412738523474698713856219371351531200316236053609115590719294146614154874936502729732402667070333870081257833619477641060120471779073118579680598083841900116198874539222660022762007691670228868367653511788092968172526440299876773245403838447385632902852255561821095103255246687625961736730942009062874021067858159564768153277890169271001884527031463726433866471881342019978474868194579966650043372392814859709402754500437809201127823658161149286396781729387874492917224806364880600424140699614518026360278406489310531905072463127031509594335028111729994809847754456119801035842787938048008258407979594936221438677875261651701265202122424921006036379945185512365853546953821427229226577175271335712088619453611521125718611216539223219075855585216751756123446989322397599454027870789350674526153979057733128090457697092766039106370305799576192230521959023871893549458447339426573205895342133725027121723526281586960803769339201905456626753805064596779119240399554612671096150086912583955082435910503125121601006660376693316896207090151317354473292630670035750874181394842437761544757235856971156073686323929013844548544694823585540405046249117667311274578235619072313134552968004735710182771799001351642000736276493694761316861355396980107815885566050686252514507240880773417268027930321101625006900824924571876061621671670247794155802246251871449602619595859574472029938520632702546307547019617060087394128538190678804601052201266742622878914385876429109250698178258538861068091470268388654247966582042288823459420171212937135895643923107649315619996036198640228418300334907332698708695597233042630641654623145755059723124454258877166378526342979034701867798322992683045377439947188487215046043255144514090635618788924880141403006482878420564626924114714037244827210895307222777159643927176089066462334327838686239816233087932878625945047974699707572533037607443807549260474083190204371890178107048459070945612541953671011083006250758693060242766215388279811208771554131664640632235200832832225159939669265800282829896569395350487986960882146530287933331841229438277088061930411884357640123859785482840837735608344169997232440425897564743925390655704375082180742282992303990255657560751205031451559427641660898098280778051782168600730683866562424573823064807463594308264280653145120811829259038265259872029544960497518676889212245948225609190968594729503350506173900104268269087556742964735545857543949297062165205848319694361731245451936774444442354673956962205742550427133361631364117981349220102487589134536615058929689227697732716607749152006997338534758418562247415345875089618639337296666259122963782978558481249893814570200673805513214560173034760351413506284110827082847041780756344845142239792721541427508103185746541833556680484288557220654276484840566363679150972053084991014180903569545519584553349206034228035628486015350427127883623707171408996028166561760165255197849776981300936582259709818216519427332940276373096193172387392400701070709422442929351005055261377453839208150444585491272063518533764324004362669245958393872628193579188487796289515325472321563366868704464030544413907913679907032316858463530491071165567774955848538081389547710698263522863007627936314770833231479416075732560613810938206028128941735039537799789420143916850241860089686965111663960711434465146012776799259191605617876073916093544062941813819172377532622170664286459205026697105936168293920460875520826664133068056444663497353291722141215121322730202702472059098018761917291899746651491316980725822611989942543253283852992663096543631496700859032952828204257512827772538845666427195232066680568603689630345773644736333408214517774012363569797727273236926318269019672524459511850543571828002073841784060657900163328345603801249389635064303774689590949361838209616942199919130952307286465596282545533721432493391991554934807604947363102998194491186161218805492905949911736020409308216600328572014921283895707803157516108268506139448268124126343470562906060502920026224202156766488282320024434546889027125409983003887565806525989632800987650686287043793234500347367738219696293863495132216035038225146008956807168824155175280182082281668603937856351539453303851273378626658110566617114766484816426894055486373233945710358726335941732416433752301377925155310682195645742158174729560180201549856763813683816278862030918457064101816268609089699275230515379450117652089573500540774701153953270943933516883698726146794130868921511048560697496818176567263647295658135084203688474227863312667554831745349961922348966972926628367991692817472552962069811171505344158739496020649988751583599501701300675467591653776658912232262854045955354073172584771982625233669576481671286910600756220791809625749215198305313149779191245943740244726009730927013748261779931038707483272058681351318097679437047861787499771653437769756485701381331127904998533532162800195067726107973862435648038936464838839806381364800500236514204699893432517262455773324509469432599879910355517636936572474296390244395037688972954357752308489896894552116063467840610374481628687771730804226499249973670153026691019180376090444354227435512292962463001149912446940311686331903881857205489666471246931661356107079716162503678046508885599670093087710688861384094129916860829845209994524700025419897979993674271595350121391199063850195839282287341902081263341346991368346728682911169331081580281319438607075831978842553015123369152293609159388336987244628236959038377268210998020083928387803584744234169497686271978213167647791499245346572919139153544460020751105883908436675216805171401528291733520374383443108336586919422482633474522715681953998183581558105652407198544271904201785676994208027800971750004498588113848424020964557145998288549407306418246810877607920278260713326623620211170380604323519787573815585679337232833672394182607717877511385470483530495655625506795628652459994637364170887372854289089009279461136242687242787436763438472577230902461845573455149779323599113493226506203115185254784600488336469041630458801124196140431415055588752694454365557384420684431640640673099193591108554023545950930592139374453387099085356377868904887243660726905792113291240369054542562723881473524884061412358909591061431534875984148890918321463006265014297483464413285129878320926833936064574602986641608375620177583950542061244875771272989591597014601791555379175346337578098769436138008101282592210097157310719486635726933674435992971879190578887886784838083416428705278501787881750885462505193604232815303775472430262567901769332652664022614048535285454779721079572432526400060998397027288761748395293021141544141438406006211648972857318475596227848261763788121049913566890647260134688586814630929501745753803392093943001841917865961267044850433064858053327217223156553596914632167460948751783803098217352864187458433189263668451757557390082569980289133362981081909633790659660706292696641238314650639270877558889818265279714824127389396739477482445291133795743423427623396797302804639688144410456691679790934092777848043405152339462765520542330320514258746816104684586501715123948272038330441399834309605184409131281034155062821922129472201875255875670719117803383248690287059048645181458375457423678419009455379563981802477528317988943352548596560219009083222066565858916447313688829842008086108859777489675460442599009454574916561581481392771638430485553603037775416641495140535769771157914386807173128673544543727504223495572344861042620865588606039186218266674336014021529733841763215569600102992451709775536798018120685370733170416850881078314038481039326383156021067554153147113508179849345066290543171364214986335705397466351858308911277950817606768970276437931353275813459803853433313916932642005135339909979897801768518014884998221197731551658491769104882745496842876409541325357676457356236369028033151709365218441428268878481554549115202658492643135863721528227003819849183097664984817365510244748792586209195984545063885385070925990847452999891660755175002070060475532854591265045618715742759002227558381903107344684006728502734404579659507570935339668817741788405534422816556584120025883119404633727704746028402693364327352309296586823699350175212846994430662694701053476139391448704910624262292622804278455150580998362016199997670440665677776455414533572870651200838963277604795538100025361693528544627846027114179269267828670225996015076767923370147590298103292737379732843911637693439501915213851705587712143205012393813051911558009790148860740017217867529651682569366378068128899122674480178902135011844221228813668920287796656991512879169639331811196603699365924369721586753596362566127575456887180837719673354675079235450991230232453686799802950368105759971472576923005130649876394311721295334037728553876447794881608514083615055473643786511628840167996961259151975601987214446170719200147094345052155839755351490266281256088262407805465912241655963560970706095097437863522397430124883611851249980707313328899341101910331602668738396979696402910317105590042531443388247970462431924387732019602498207715260632515119538144016708070986317399030155233794978625826844600240685262681064862482310103011877630366834945597103261147600938822759714731569917755262168788419686021778390736134270994596192617794374305779900517355098594127185776379223608014037926138095875937379806460033593895242508810553300150936231942450177452778852391617868814489908943480536241594383733829435756095396840708423464554551545788101610966856948051562195643963971745561361257794070239749207872145992727990120404502578785988645250253932432736078052476527125194180320844889027316110573010750207459983624076371373258516538011369369275218237670572939553113987980044539095132119617793694807935223378101937219464844031795743311369231985985477396032759181292609723197375312243124886360508059318599604911519320271057571680792869277624538601614349638037004914667248171508856314338897066965417673940693149650101134806035115488476077898511181796044623298667584375621996701593123395934656558696411024857301709194173800576644021237975733688754841296017350963031874073610475574080899352455782762208902603309968199536832246299194440645524190621589416775193355772954545403385751637150348537239289801403419297334807184895330808622456814438255941493790947860882674609425214017750039442401826386119678303985004644505068847129836345063052485080867769163359992203038166323259526850646534602092944650356165377405830370543301987476856374291371054646645753334416408488969080166903932118357923369035491998745330321391552379572387061729744934742846262426274692883045073507933735882817530983090833737513539365080959239312464661791814745243317403962809142104310546765888711963183259564840171751519717204245061092176665482589020057152551252156233360795530825159175825250448095129272288427659003991784036402421344001991888158135919168384968840398399447092594520614676800766903897154575252321319055603334544466461052588455637463451821174589868913063132883360604340311017874191858929818582299438776338380331966731535884226106754288373480717566435728052202842725840496695858284281882649254712881876155500073520856001806874435897567761047903789385339491564690379800077731880651734509756216085138298426387421406843198455973388690700385969784887037171580853973496730169940235042851600171899477548402657214753881185961879923712302989339427380650934426525793347743477084745439568268340116210390605150903856983944931222412449807319624254302486821226558980817308148920452099443094466026016659767602384432361190034564199524709608371280055392415862018584085425662973705976163844507936262160267262090392977764353074406682971713178741710726390963862459641527180481517837823679453232328633345979396215493686466688344798354986418534272316832161590233683297048140814811452395883567398757714550826164744128978051738753373674988119625174678994438429640354014540234512581089257886144086750921386062001099249198109427166414351290876131439275758105027178198769891050215685954395254083261438892198564873139160598794864791072569657937196580280489166505817245582030783129164663719900116500678883662707297665449859438663275394072517976914602987909285431267644042434613018574428973274610545538394375289491997489400468636236798289528729334236432341206543339670296177042402979741463061556223677883080634936272536664156890920711620116417053873241617120948354735069599434747677708447160207073964467968944503067814298491104374285782772755898248229744169235323735864319071579986067266346409285376787995965938002756463536293388728998186435062767638495365169577593042416960115793845323263264122543972767325111720766856495948667388090559888985857255509130032812840194701690943085880606824450302845886465964550155569458262101424705349811030949911108447086709758154540777564073228832906840891850872008098112338966107344490551178030630019867191292866238099860556405490946066551371156170982659585759206408900180971488938910562968898666387748545337797766378638796975718203769339015468925596381304629544178623046480581574392364291036940264936964564157729668568431817625653403909223288889294961191334074066279478063820680095129862718913984731061579140799511412603037023330577016862562051435605305999785187655408643413257656840410704617016270838589421511914862437197399954474305885092217389876329346033444119129411789434578567631519165637676534395561566088815217776776659009228290854313129499372765249726033661454552661591535946018829671607145120137718393602987082563766794564859594093181007857090750370001162650662987069413850438578041167664480253257517182634382023279092993827687482145324092066832667659518455076033453271082267735744481313371470352941518548004437516035260968599167660930493006737823978960310867123397608834612187035439158298845685138907456078111211322218522132403721708690256469600814426979163046884142301307464165541651582438372678439490014984070152728668139669346829111876601129830699559036233111823000085561540531434209134221867452819190087658003494471351801591959447788519288224592455842668417305302916282403452509036672986608146883971040557332735701288522804979401389212194155799647262010146786556438758096505306029610126768332879167441895002630342132849589600576641915791409557430508547287790237964721738972690578504414835728673849022608669881621098212150079309763068851276813787252992615953279772933736632556456529906413073070264299936484399690152631675996797641386511809019655368198634142898556873895943985226839384963028474432405292191148529249242991865201245847498019312206189619642480447217712832775441442638393512130643972467429768860448699505933997676526804034448629843988215629169673408819510885415724327101700765595024081188550555201116981724163146558159869896416167364575654513549662705485048840271722506704988302992215104141705356348072565378049980770297954729721293592046377800821048080941071441909503050691796493186365228708421673739499695479592810754284395000641223194893503139556799858908253720623068481915663997402458816327908383155616989900271272267943514771031304035482792993994366280152006666453322039134844904657097373241243507940616992458824744731095264994055202201511829422263706814881585288296054734145891450772055722668650612826915281630050355936012279355457242413006506096786250583348713220962407445354320064742237664242918018058898833240841270243134471997705395771089865159284663394921369549233217421262154671172815086545706927009377383572313257116436019222627200826399637587295375983724179749960042154298976784769690142102194446080695060675997588650003597985789283146332651158155865564846999276985262903084963632207771128818333889777076709270124126275017073563575723386698635618495046853724656851613823586130941493864662558273151453398429041808647540342836824545812934729263949964668365935756743450182278761677588258669577308785105023248822727236948626612042405919689004948752957863429904048648300910375940004908781175090111734707418736814265023754085917908036375699452149721117615543662358981085893207855297900654712074110377507604258010559635200851847623138406503264464281842627026128420640631375324772674506547254302080193824721808415880785281548033078134604489837063423233171733980058817768237040100015345925775201863572398364071771770821903535268651669916954275017571307807953139086334966375995615797723297767200762116466855137011169126241900602727348670345895294415294200180722881879977570874654961374665350507469477703047862635307666980754765189109275883785209190036398002272835428289123973050193717989613227443531024229739411583940884706429305150085171654080728323045760730928050054688327935101751603247402901437352462332602434128869958760456982695608349282504258254660843176908552298136676177051879231029011251167072985389250407982405744465931889482505084632038782359773207067046509127438769350862446067857501171837069642406971268345628672017284245666723269909828344569641216751179287316604358775637503383956088134260552235187100499290394182598906012748570875200189508436654756806492812091662924996423017712019176980215929343407095200659075004924366032085626347332689237294137232115676883456175552022220987537933091422947547594362861211584709823057188655604467219509497478106004597381735212946083266628885065796730739542746743106304845190327728029989987030522926962337393415049908680014575170425883117048597451898206193106262849078642209219740324469445638275683524309426889097723918403784162439028229381649250565719648044338244368218294865072643252443291417915808286570356929513159642023735644294992831531589385597287110692459524495578891920174848219254806976967347310792206703656621900127977010298545904243535216055904153366082070882586093358378719158436851499948154564210844831859686261766307088328648365848907283076092194057084786946176250456175016341347474692452033573810856397153546417861058640075898043045848138939234048508764811644229098657243882988480628050141460229639443253943045449763689563857469396227647288875816538669574631672339579542089009520955781445012519330959611258161375257254582603259945293050120973336558787237550976765984039967601308916912136343871067793538108514722191017186368632232832461380132967465638161581013629100849167530803686816565150136566013013047597317649266713828591001018985187013841677885541252602775558907665482275417601972952309880256356580065295311202789693557579669838712202586190766557719576516122508126706419614110315808392873498226558485353096179090315999287865172728446876810920889476068732458503228010901158388721767719334962406512177395612564174909354708678077392110143154786570943631983024108629175113423620697591380363905093360754510313760521897920123642794833354586772337404070587141372000213442086083016296975159843404821392042737916530884358976348076228094026445259291647413862847931292822487389919984980022060818543135200782716264146126342685589491434544839279389974618341675819836580532841526629550222774738606654990456178224456936059630139554857519241314338999199909658077743579771191380672360007996656999585676485603112599791973585738841571120081811302882750828466810813684424476122193935496002289107440321658208482282873469170013447888064594846760465724307500793549808874487105320135691493552774626042667752248848374573192612520239923864401682004725300038267309366629179255441201111049826800437246216780141832842029378048977314344463382481205312095092584340071492351977380943305722487542174049636088065454865898581403829875147650478863078249193375918536513220606012264804563901125035590673149733602209549649067679888526821774538797055973402653938390127269012395483354626584035444345995075569864747563736240140773995703782466414768590694952107739924822944990509038035358859934584859980703742493605961521916655958411936361080643046101796719387170571616877190315429976052735763046481792557006596755778995956067034381214590808145729260863348580535891549805376838100711067748396238835487336246654422696799398220306853650524354100533977844852818005365657359960968133850578442042023882844060175519734866697800583146297774657559214612102339321073538355370815617495323795716367548892137564591244831516401993281628007460500097224001022477902280466531513587864263466617975165620008741785971808394142168556944681175662648730623036552723836791884957698745161032800320432822472478854671066686429659762936142021786829067216249894154436217674228823160130206928879865051165357166026679363350105130184915373696045489562560204209237258662168983389439102476415728995028853836319061911070702899480650903963661874472737288887580773325371441124121569434118682027747443699782112672928308003935949342672381326655274749249409521324267995138270117071806960541898720258147288625264934082842697092421208127973946869113800868164473027819409699008050598231836359651732706930789563799187664606894349650188603122678898754239703360036968994480224463694961391332455667070927858671132169004796159030773052938737798722091503302960060331050123415294849290400483297207703621040890677193171437716795112093904528957655780479048941806022316663715383684565559500432895498913309850926585677689844662034722464182132377421555707332168917013983919267273830057481147812738786781716294316350110581818673067000285499440129770606097365312019132784274353426285765080085621424051621470756064846323411582834107450374003241905712775957512128984230604701326522695963602112602891588741907954798533435209211016223981778769940580232124667504866664070401331007810090784047717632596495653666763200165028463923901234953022481766127969465900005271828441612616465811179384754083755086146961507550308200502570198289399916468113233484601415325948129868936284751766613029902663436226771405610969520713217381717072297799937771994288777383980501434523827412891301545933901098492605395590846635088206919439954342792887318004687283038033325626651156845523912187851633992207942268429807926872754946457072592353397356885336520429807662149178308932323341683975025142767954506188157733720910981027203335651597918098864541113894297024331147686216379890189794050013750505574382736510356936497659149223177330505251796133029742627190756030271104961232311133654294007527017178321724325352170591578506844065050074208352198719658060674939266543773775605621205382506761341292923079108899044489852267902753729618702523516666414139091903496924666861761460380606296199834315242088760814039748723624739090409281231707719674891972489111519346337872123443088566543805978095405909320382018570687616945818232010494860648594041870109599307938571563863401686266850125184040784731997899312130854745431945177372829286787423466466405419379976467059181700413920238692298292786112148160598626628410564288089888487343221202571753047421662619941633758948813073898515501562928220412675102322779532963949873278647421576646886297395054967355133078577076752603922912326879072722582017527429339177360850442577888875283629230440892139382566275959409858474983284314030667687695345974823083334125453217599333498017216930312663737161334119634382454285459358216453049050627326315927120543082040564075345534352386643096640803718646861234844833901921442324568304184036024185256089828843149474750171670145320189956904975074608361887179509497158032776156495785696128632413686303085020078473733709084025973946387356631475873863580188793624920599194785142784737198603864580023358631311506741346589909991610325251145700494236588855712442396834487554798999504853488532378072964694599798636014177357579532528122879941499329767655770542710167905886894260191302643343721605016745837826798754711297226246100428333606931963379671843957214671547318245408860258949287310712874975984958013085704336526390437260700854766927642714079233279632470241838943532212969444973061213236646334247056259156387334427748612764436331608307867655336708579429507600728631085290857605394240828937658414092265954928115358725730878391259040792113856660356126701403687465995344080468123305933666638981998953851228388019788329111907912937472911720247326524262829392232273992893984020300368837467922020474515334205591603031518088221799798512206504102986852131557276286235676285683592357847910285080043527202431847040849498711975580168460608714261051875421215877311569357874902757062151075749091465767375273093205223722960060281997089499209320400817433026107603417642560732418472974643871077795426708078139131816525347044977806498868262649486371968647004573812313411149186177728829350121138526491016377904539964256516013036522745356056553483539227527369951808375227352764955690293798618531090958861279943335264840904364179497313908239745993050820221620859243131426453986707835594250992036686758691597591648244241484340913352032281606017585175623098324408684572548397365714811329749747807871710562603785538523412342425179507974027327406505260693274410743495576421388598725146386724985974181384138336155757193065788127102911876477862289686594796730138099869267292095512076243824121559732402217853775079352478232309071854358169045478466148002285137708119223257753417659932332548602587305351663879669971682089829033892939498695139476146633191587143088709444055840160716458912562978274032573582849378394303065291092976771388650778535213472766984207729554168841527757158050053830004989269056540818288780921029718737984721255157619969493833598797210658664060442936778230338956453894431572286700980753859936209892858851037110544560305240247614021874819484337467246506391004156931453603506071888854424515639416097898676865714560717625885381548350827142162588564863608955386747762893245480254975943447742784958995223110385022743896513484481698159324852131743543262157041473155309642428380925305869286926906375988942873324326782072356625106557281727055959605476417607850399338363739632895494604599484959813380860940016539145448687469056169529508886693077709638142104980627003484043725098894602891844530727782554212923313558492823017819293198286266254008681853672329638935612679107819777805655672976625723000224382102925807983755688692425235675637578494123527750478132535598219621731915364862410994103656214006591702655952516117886384065805663138496280270889278037002268290724724525362841212753395638132551224880485430881322556345310454341605104558212021373542311656266888761737650774102391273474268534042186296056602426252385555508405587270235196456994487537454055379563162995210332011933170075750152458528869455094516611970491218203679852555173059194265895211729708632035292615254950471508798358279175852243344462494357475020046709099411057524185388369857909301444500639082955278644701916724757591144873358330227619017860546207448108808496645829480283103737439725912840695459748631357910504283139326381142758901721008656630793993271309882016400951682830006325262487514097540388529769478453059321615078788791394148794675282078383667630092384947295998449096111096078203924500613421033521181672734434414157823675495047120366597804764542358193924603994533754763402269381666434514245943507146883802863290818722609230776318528631867587990233443205380558446484932446466714486457055356453942279951767104533717652762091697599210302168258629328493105165574084680939855970939622551150663682765268725958884410932256053297245099979918997226307875895231880361546213849040756970656539735384298121927408548076775337172806331121884344839757820855074776637525560991463340557970094188762360598488668962021314086676993418497598089730139076467305714157680192602808781110199869560284917369214036640669716087781214274052498678698241358454379854636123868883917309006925305500951140000589660881352394322938587037314602879714281302478097419358458427542750198803103113691968700784584540144965001236072591114745782775985826440837153308027252703610150194347626645845119189365779392121367175104836348205422842644997520013060581938567549830786591404497623511339754604922073375036351079608567118062533750326696399547245644441532157827302415841308759378136015802892683064717863472845669091750283501873126370041961878840150161673694822598523301349921589670666277327248300366525429180773937712264922271931184140910216802445862173378363474933884983317744458731570691510378129831488501193265650439263396040252148129386495053616915272109445310372828286837285625181208522943194380060766805651184523509335450617343770178468591817432379327580300339145319793532664918911173139659072742252949154480015958090953835893715719108343802097693115192960120454265049891034994101767386920087487350806005234323647702872233900328122999186636415576348568119275269986765818505395977839991670710435588425873509142077684799681098039578580576581237316199590682378569955271605949346641011570505492902904359593547088152139517434921784461191735277052283151985789409889184453562473065693607039808339187687109559927407178964972579691367752986250676035460790728039673275986120927740708719716840911372292948827062653401176966442647108530628259048785410003061161504041183839942930161360668628745977488775758312232836509285085134969486310888141428274380125362653034620172788111913385993322255981663872888777774436381612556073989577023363454491394508012097234097750302357332044555410927462312206161762833886426493584757052636880816614434183361272727216304745904407602526855047082294824136543276425220476033233551556804786648155964710244761236762698168596128153531652089567875089630090391346224162674809256175736003494030741188397905052226581681330913458649902635621185199653466148352706097590708720517246310278504548408429045125933197664511486941398881937754243278419117996714902827822271267655596135825937429407882074937044509886591953090207986822609584341111432300962336008440593854554276487596118564665315195181420684765370006638158870431475662581389446605699482552183791798257801445410531808346342700423499866276666764937592841505372441266141445389082183377897763800479646841023654824635959378688701363928092157318693482825142375055774186525392068101119706466764458950300574219909824949355994748168881118261051744554728506789800195112663851601260482130985627277581871775383103890272829449764078355766980461586480041486300584217171599273466724661863652083746155336592385110425422934894872987906586779413912000468155917447268875003669225984991375914929387307695596227267168411924646254951377326672805852580911750779616487536011977113230716704804342197975398399118352888652109426246909892615020413028007858667091208605765284080016394625504672442562053593313004893723866519423601608859081659984946315711239208529601296615987025199659326522461551192568951792927459871948927956630216651725224128179472877240963945933194871666408435502019025903198746421086808282647315179769333274405140479042147423923451649840872622697233269227053486698020866584104250226685080550604820298584486083974076865620658797482013470823142218362318934824732817953132533809365254155243442304311426726690045444783383229062015324881689720081612933276171634114901652245422326334442537359726736199423329251982915421257009192075519466108308830591580658750078078742922819900991534563023684415116697323155254235713004149582157491654598352235017138771873074668137911734516988013455715073652832265204486996616491809333710554874539259534843190236349329346872840786667724407905852384428098958128933428964052414470831860554759489134614701715943318203509603202957792039491722856198859040014242073704341927202825319471630613502674460431100447573781487182918205066226358113309088501766269976329578900274404693599113942342166520945153964961315494727663319135118230093570693817576371202556124399764820679736631455718615645988053340224952725893197799965098829631599295832154682729032667877794792324311599145667360172452509372276391107608262572727814697428501397320630905920380969601010431533392221788407321305895690479488486355955196880142736714028416714539242683402502428347003706369996731414438597873681230975537642955278585785440008987403783761239859007321572345692713803882686080993669471454559162309161413239615807510102832762768907228970937483236196588452732417073711827611916840905522243502849491472939506882538688243822584407810119725446198424141340640359023629708678163062291971854377421431466279668295788849122332834041265175417387387744681767331233184993463240707611707580257287243639123901984750867249523786687633325838049586473777313403364510357026889545906278326123549920681310113435415222320301470091910480000750201060332503844031534719617329347191104686212008950528755311310134101770540835809091546774067149962566470261412561077918039240948750678753693211257416508967147151412195085566658492635039849317071039712017992562388102396839954078492175007803856989574408654980760251806060136144524045624060793533752026350604735744353139432308806184197947884027569112247453094623165932431257538179814939841780557534077655589108793162058634766033983094995322639406808113118892650072236048134296970471172499144903923719547475724070673039465931002320345026927912817221165548037995358129582765308551109532719213969251414326534311102277168905928696461293466354279511432323529236520910338837315902621580908162949993191936549717308278757745426671018664437241316810584585585127227078379428266575397586317729234944957408287390929767661437237417655859894198582355352120542554431094236642147499057445308668744051517046859003144576398796610797429735497696519780971734479475983838772112460026396276405569073232936746483335886230776915468573319518494091658139667157391201534228297925414888738606852793751480644986076494045153508509976138414929343650715258862755080012540028768130601429610031007566453244839912217564875113617967297997492294838114960746332640427573923600020731212515684962585213881243834389685886942847168275889835428100746907104144584652443247886126966099358137394936512160164770950774234624666336124334609690614195059496990312563147025130585888735248703503997417453180384296618672761150672825853708660713225452146442767235927035427138540161490790924676543231927791152139649502349717652396479244287713781986743440039272070437960624204333588863594798998643640203824410041134402052590497845602804622609125119715513784181004767351780677048021794718068695652391875124273855825341464573118222033076231070963531019471550248854032368320734908007717658400220456575614539828391833281068196799869105755398770311035766571311610598989316872181250762056812228097377985938092299682812937211080356138264452132753025169925134220157551402355511976574075399532718272709240500808866815204275470439082329513403623640345949898758660341677860842181956702257938738904294619318981690707266716440240500909190927612868000156666373918118531738276769048491311507488193484848953295282546240328799477585072588187765865277264641205655561060630039968693391773748006718140088811221246027155343853150587977646534248374894391459769175741595737012989552881215434328230084423158619111077976445987557635544715424534436453579698920119814218025288012770829174447934627014471506497421802781757707484890738009532775569461230998556802164005785312331554367854382897268179476100574993941227154888405099085577752366048454059032040726292426008546406177895973454992808652574463867160170657673566158877455218123056513607513473590424466242751174122385422136765882062341106211356601826919395647498835009577281948213076126941077063169679286401796160986166475855054524491718958074677766865033144352466108179980861893552862036981978129025868421165570681280183417954387419426794656674781808474446229398365771915917475927953835556070995668731746869064412286419579664654295781372099162746674749509840899649355330958837901858270286127602996536098228744410642726025086825097743733443087020665077501366216779602292986459403364413317049686554497164705561053761142232988062187816342730833941123801969891659717289743052940692144053074741601379428375102931130068865204734402600586126164295329736673544837525553540879247234734115678582286148152541092351570344137371680111032857771642603247297980678172713577217966120213714362014001178864316536810110589162177710156344248609904068455987351489384120460334858481029903085647524829057679809370982318469940872853605939685965287558241789776969704786027578425968893307962837111252461975424873473261193917157164667670659332465278971205548379302689558359727812125856551356667417745881951500053927193057894052179090447930637731301000380066834260727369499280402557170950902403604853522725879341154435778954864320161145999268111615310360512789505706753502697680897386591075680659125765102106836849675880856103390371703803384614474885787281280808841175402338896391871848638241128018912807696352275703255255351655994308961653984034634406103878335312535468900982900061197986919950566579743060949867023443915947555773520456777953961406047588612878596640523942447685203014049257256247776480985905758880290215578652278721656399625679484050310300632489040721166532596222529082937049014937439817113380868027571810393656455657152552292675694393391202459711116976854138425452014187379988913041841465634052559334754161674298664926721009567163097586834403153942550705462904093603689414741523909253781526044676328134393324663416761252816928972140441153347515646738048941616927958150512194519614542380528155763617810578278743857461433937636715333542936441499999025193216876753896763051015143440533850776317398274467654001433532969454651682495535573809318037409744194524657519658732878215735323550428768837057732783930747725215181599291976621815581354687076465225809764766489481263328761734159079558466607880818849492883541034182978466908328554353481126921158547319023394491080576104141518803622856203867261585390820117224020550326655755185665096180061413821300061408104301409325676063735007697645260113446164063061637769815451371841288389151611553051337914876128365929427141107933192047366816431668244027980424158747443170674592566720435126663969016473428305428910669486997134820136443822792438653410324276374653577835425868228985636670239436793464854155825813924940235595053753231409029077526590472550740689855647620807477401400422784547939991788783457879141493777123593780211239398901352003510134727739031069388561748805539241960612187801460119299755731594766842014753518922006528825808675192896586083829825884785811219344554607649115805155115829200552782781974343210682690337957350530508135672032061070801673506434229722101145900428867928623962507675374099611172658485912190111547397422015262612435203355327878257102831786685975279636683019179780668516946992048261691954069149608733656122588468737047920826647564519132472566674576199639760882705503044507578952610822409413266554561013842743582041215288027367195042363712168511208586180143428636297963587953116132403296089419490456368444680496826823446605732075625501702824230578084829472377692474511767345056889952954332125896670498938854522379138254189615588707221144836290599761485987670911575568615944908270967988018565330787178541275270083990358686471318586064976540561150164010719266464808346829936065076680589155342939553600020266767340653454872637475993481555608228871838134434094269789807687816376506185039395844393561178162881496373962508650699025135515887392601363645895831649978924518102432417055704266613993891473930678466356524119485026612720248270875342937457753560448309300490619612246124949910669055765999796685580165094379431470877449559795647475263464853692703171621122519041366182472302385784211161356811030474887723718797999252844023379176659377913716594075418428545324216807428226813722988681607392085887520863768553626129291088898406659476247318473338522921406472128995958961712909455895792306257284906409798779577755076405672904369906502028498467296326574150535762554978350613975618516698005461680521313928624301884295025801300355473509757593703177846297468206941803849618006741277778237555961100949738426663053013161227200277869790934932220497084117600738462304532725130627944144076421740685424462853250398530938175790208572096104259835192482397162196747034776902385741640449971547553355956042981168747806592587029200413847913258813241568339292544546619858356006076953234436684134918975253756344295096438578786283043208872881074388418002458985316429623988189266995598737654845502013166507225544962539225562002921331220009068824686611985673158380635009912364839847511211218880048723614024171350333691374215192892600723163765210845154136574446890677366280836635406605860342457347964081608357246634430245638393862334215807475899070466749560169803309002022193222679506663554825839084691200430087465981562858998680330442852068211702506141249757323619877731440735812854742617246482567106663221596897049525726488571183279824673219406367678766975347515525442967198646034613967660041081923830347682332173253296794069091779332103980596935180382135684776121890208993946545230320317067450366868973963523986655060990328486799583518208913779933163578462580796846544816610417407623347637266948420212890991704342210794197784204423333354973843462134826112809246284052492316403489424622941596457895026338664575334440789168482870689693514538595057788076295768787620819515994490440305090013409279177160543426030342526610836493663834292177997454206913708795125546203834687669682310964753433193151010791962230610785762274840758760479787543486523260839005480250172028013969233376635867772484374755684937321829633439378711938619310900642401887020382270063100038473858828619936006482721331568836122512545409254364980248390619248785836179311506102080611699554945241977679396735068164053880129359493834162725743100008473554725530827403000483981176419590874364205767323765910928491062098198760359273213059942575845406305442651859177907810988550593942221916665264651403742095122691528053885664858005458511873012335763838414111822236753435888944541750547222197012254802001426893338195516542034534413632138825526717480228951104942078463595816065517673319273154994659920583675630913410391433185270177391695332188640010033876866484796535666486835529170029491090518057061271980893963477795739155408055811061178525472134849225230643789697247776950234284681988683409868003581935297959462332400576719039154416836456813386760031293090944163817124283592033690015288266507445548162160458090565104842819126704136237660966423657496695236470412802041559052682396336049569923679143427772212352195309535384674176432840965640091791604272105415918067172481642808344441176431532332470503275167878437738617843318875343937431621086496594707050492336448616616731962231728596130829860623822456748972474645752593478529647921389316178495551411156024984198003089018034469970615699961167458013757042770956192902697601061345513604177803385711255126152451591681149993035805248419444669001089559274975328193999140513076619400321299509674164079025685205647355166599585491031257413442682730347836099045885808077184439156580267890818781775090108784638275732892255170082440242991846341370065497239226188770535565533729955854574748133337325891821109828336327958114445194208186349045398428105348826693061434079549335635423371633386891336943059384132118124470399139777454039861135375736045264461920278780941981110820272392833850515958114837884652627033235549965329805006421559265332346101939236085120644658075151901196662236689264387039918630628265036011976285511117232296092005201105886467753785437719964526558976761189070840874078920345959618847719877501821045600609081681910888078737805177116078992832852195596416032708797301615839610840810618194186065196681152048824774521484874690695914616560652652487772860130617527690524483673518425691474464561369216078827832523463718719815891156162099429752442307584433072718539383086074793255052701193131625359925762318287936874845537674957064762185549157130350697251000785068501973210168781888617351758753345377319119549405472968438244573325785350340978240591617942337957258784168489994208663943266845192994142932834172425319331740069232615174518525940086911877075298146557964402690582316128947936519592373676376266392268865775326388224208443265172414826833873040697639714253732270274381471405486766397788498035786791705779375997711024230294536317392108390815591945108370015549333833371639484564413168103863645948786236646150257615381769105205505781631310410518689530387030853535200840740113502951054743860640664141111007474694341172642798038148778461265355115672487580007490799664312885221152025383011005280279430779832880628190451920475705555480996666646338323144989934226345455827432394102985688426193534066090565066282437855502029176963922694155326940694813538575734478933900730182227082724525091527608813260584771313610671905589608845470773702222510431272961236605980188917121587495256765869653103790794806570499863349359177255553898819429285884873283635823447525182041644942187524208409378989087013011222529359468527909287261355902711741537262598961918910961888083465627753888825701615804386321581310352033240538664844283528623731710341143175566710581245413511590567995476580270752233132179086994620153178336175923665248246398536671864659570274572307930798185913309189048861504166668144295798654016137212881808320627849553897666215669119592439247756410549298078338131650322413988845353082220263174124125718855607839829633812093502195030747665610409915486892428003997693905863091602576085455131171769656743069199843591949703759815192989656037657588527493216345723357194797531528424097094157450596987313026357881021208084966983518890292912270920865030642189928521963957039993604167790649386680067798886349355377384524282652549199145421628556140594420454102478534995270028073302017602284595262344686437771142389953193450568764689231683012796549967831228531869395073232888548503143907706682009561843509406100762809493403161959992974034088331719975516751989114959744607138901510989963555501707687073822264579328411522751546781229540242575845142974288523238150077254151234885848049237258278253130429320601992324267417386210101792168540082415055495999741938081029005590275162226753071800174746486446365369000719904798802748797615559047752438735721470846579263520745277821936888972860054152846638843776683561508419303312906679026492375242586421513399640013619971593348914089542919784701648378928057657013698981294817980125695669170210864924102015359157293789141358221051801774613745282138652150822265733842637384525580700295731485096258363362820673248155408257271121359550176278103679774371166165898499488631818552351364679419110912356028430074838795653680133631887667321394123453114483306747190629792949001380619234981501660382281765945326309211439010742227891433104425644704449516527558971901506595408048811851020416194325088389060365192440236296089078025347689790311528328461050907284289626186718214076639237117581758825868021676707862344335400367263536563846656069628358583415305398442249252665638847647081724621811295802839163121014329759962145973804634669705587131530525508306494718388035586538759789309708185349229886000347423707416732953227072713342552848331540082161355863054373589288135717694112315371769210155212181314914190511593581889091063978328450031326211835074328298077644045338563327762788110334983359832931493755623489051555685649158733708569924963996607243208593114921866576515159377299854261938138855385607442827821493108731510191173039476739533597124218484858365735903580056631306489101767173299387198538179813495594520210102961502407225360466492204591262241962462872056531208743356193264460792521055228316671623690854570679898121580105715270365529998031264004523907648954652586079271657628662407461477583855298878826508014694555266687357198799320213515423018774586119412402008839621756324744646462304765907716766489282021453618836153613713036314841852310437746975222471593516012010209258234116912196532993665673661747497382799791318691918850956424381650900492005468216262325991749737244566243729125479213084499077046493327622956753100514498738471387819724950149353149350897901737464506956777831212365400379535021463759577649490578735853780286109466155899434357554644023935068037321342381115434464568086748328872877983014257803782543287821233056976340473420648877849448861532214065712301333158335578019919718955563574168552306909453951758396956049858839889174648182792432673171016824502795042876248694767861310850497686329948908710580410262122272830959065584759301901536256626285052414687600521169844360418032219672784691532140603192221558688117711921873613064859198344680710131762452967014789870265675846416259980675516771574800459751081900730860515909305362553718204823379834918921201186922608084422775426051713675182909603147186569311928295683492109720590682992073914888111890606191619872673571719939884791487553584053307632058161161538978174060627276829222792951452544393038312288713321340270560070709524875546728812181746808023960605558612754594165760276180848856177104787469945208404077259213253628106645290983151537046993854918434800426819384129990224129720476637732379998492070406974653975308499486598131092803223163323802489113598721312088870244036523369282445865526747184679629112451705599519024507077903964049524322065189404765921396567835984302490188766146169371786212389466979917798033134824783843253281285508146730983621066146683445425945881665682658192672559826843198386748469142819624095655779738568308049627184319315184225627033080201877650520303721865927484905705928992085700857514390180442699442404848863607450637274878613292470393916091981515670378335842784821654212843998139365028465266862596910590163217480062365432651582002235512415064408390712181270354005297203070275221358654055028265308909624539225105619874080392729723743066646070385416615328040120684213994212673591171420052066276119096073183940139741102893555314134238561011038293190166379501721182148401885454303229691294031782632597694479874794424693777536914212355276456001451426705027782347107242826754209842518240329428979730429054982852524956653801717759790414922373274828110931215456145051544900926969073022949975023757551485059671784909628139781284232327124488327178228547886043497832480579129655804448529615792579188547225681194866438422977129011788666032014677213463509221096513954940447567225191975047807117920045957218337166699881831493782550176048533349387760115185299114125879994239405764018985823787986053185936569478579986481202433191617474130166444740783698330870020798752487172351071467531044491853503526278833016072150110496949664954613142454225894523194010508054412501712249504350363760794424534218870842356953049279694546401989886604658391229256132584180192700487427568408842058445410030154730005720694390174824884902013791207319172733351760625081150835363577876013737158658097325155655589545868001884987923261045096624047368092237755433373543591477798515962961542975569117623275030113339531754898397862246378393979914972367157658852890775204022984376860300602157867451585802817192892329279151273016753201736407870873391160955116951996242939755564314034041207149795334736451420871468037377825928181053152203314413584528107523248999935383745492542852853292436591481075190975266089087214027750477602118669564757068029684400795168543100590200247910539888948722671871015025672048380339954859808354919100237418758601501244620430286575154203090595119965674272207602646236844368440765806176693426868921103021301262325178016269939542110760482664827131788072024190286784676162487927425426924731441358077655742003050604811617012813922332547424158275984056174410624707668115329473442879832923146332124778916454238406688306521191096830944192249303830225650239152295619692491018170009926688611709680756438508250199703884576886023256522775057194842167926115655291403661423769165564875849862329217519155057476686054926630131981644848215345365056229143877646552143652587827336953801931948917688558036593276125405352826077534023564425017475588133965846702073133616131535471872996952228701208580432218006931118570522481474165363161309527242162864275750557068520965860269923271178561238326760150045282935819885428751569667957558697519304196310633950189149364315009559742291053772098889711772683712499651941553052895439227639895957256733087541747611854591153050899055187460864081517417767965139626647242632819150969966364118159852689037122014204119175645789068290170752192090484765619471311453979381817012718285702663497161552615577952626855841028901032927517228082561013367115051813609695994648033519198171454380432925030065546149438684200867402194894207199557074051462409115674950077355561270225090049422870714723835778404495873663220973957243241925141867242020477324631042225209090758852811723531224059991754819953503019869471329365066408890657643808704797142239248978820850566248240835327384307350697241283991970651552004466971273121937800019838833867553006762151273199237454427831290094702482169556344537468535868111724731195638866774442798269702433853628503799832521999727434731775865014584861168852848195026112544320589748517094854779817509890512382472545273908375284141182187976622167343239578510378442360976597461873822003455886879206800380562046815623590930440612661239644989800918460655696453665536224999513835275881013507863464040366744428855026644477910174390574185748319138533101702541919137318597470725402463140205570219897021387541577320549808025821867226741910157640973456506647616840043647857067749187532879209615908868733146929081317751268622275245586261470769923248702532852895274091313014424056774496364515297266962799687304516373825417224532152946199103748624493283480811614663743804725172165767716890399940233564064781934117483044001559545883657577656056909695670340808348738433646150131462106412221261213568413646245962165640671518327721883588845930050857351464343379662848448263489960371384349429105823613642644372047320965879787694569268220379315326238862782547631946230912973104090155036629465741527681917392147749363484973686516202116972306088976107607613793114446704431108993778300090744913894878474318301765125904451619463563924674073696049092132085954527163901969816331807719207476310015917116526883218063022577791667513508217080605550606953317915877318688409300132176699565672057461800613653087986426850814412759389788916183671693289601678932121214110866194999150871790384937271290836385891128055451865690227539328858652236122547466334831438504150621733560742571553149844027868582972258190138755763315764978481027140103176115105964308087045235084493407155799577164749997120430406190481418885814079197566723092030357811822676791878701765780378037892813091466363286326084841298762120661121147461907233001881153775384130310844395999571650271209756378056906939328480239806192865474135090051018581377218924851948632141815461365167274795923245652196591810290653548679268477549849722727827936758993647061393955941038019997479420126577003177460079873363008978063448259052693426489580816534281612443995612808092140008006632711512795142872800293940651206381296713648797011947615101263436898910710707484097966982726325605367288199630701563727339271153869817148960737300845810849132402129840798310929381150925001556396721902738263039831915696083566504058040979739692143933779039860501488715480852992983839583288300284901045552869267276813876641984507589479700630561606008898265383715188896101468939210407957653692163489061245386239365712596844560515358209425066711362441248399536231418742588858861589894970374605536488872602659123069734206866795045613121929177370282351281768447813231283965450113579393714124045319063123589337084503198045522812702905200845527981894502346765759506383217994336484354476396520584938414080851097036110489031139510457403278393062881708635784199199642628844400762139951748244249819838498943687253792220320497160920458701053452196109195438985279661234924464301072342221727632664346627519973071632370314368884491965841810217346290283779557538628360871549869895922526933023191104227606448829073878351987632888792669631122658212708552979096395524766628314665612753998421884796830361332787217762616331598293441779056086674926546336579681566409501106112166342498214988141329246253595256997356062472435930991491062008986216561704009428348867814015268820104446084441605627998050717823811754680712697424689656166857830748208560319341942132711426150528499437074924817994917234580812271327986192866028630058447745137839610224163108404578395951036488357665422138311126917475259341464234568399162586531414874781532914053724294273750828377882267757754183064368882442188100377164100769026672080867484386132995356605438575918211598773514417003967752977718343225903121861742920965089456666495416715330168797060457699457515081746617859094938354303040866869849192354997894839774261918722607931953288404894904990421737730159434657312259224829051466975066997636444547340984762713896530862547209269757865473224125736652775769821140237314753825778030143308588250294187993185486903869164343064968900262269181858670391409030244069144698800781182044319394369479945300978703947921624642773819286923267099906209078392398291767038630816932414088514276084532382625563977254369210715024531704918780341200715577057669201851961528682260220740253567746910465419550497906870211345581856561864627186422400423631958964305538565011512861511081218282437588431251823672206939545057408602089669488594910161098506509424969619331435230994561577676695287530609907963347895672179448013218135864867930804781031798657326708761503331457966273129253371412918155135945148977122237871274176414647522572648812800497649908562714312399014766430308783962180372829049123955960697444627696043204522085095080936070507377608521129665575904949144784027151767033336040468492940062832459954100737974037093781207735386090126329145387942988198125132857682985823751579855053411210109105669245002540539405472716508946358755263319627704337328195746729261384771319261407511255452749053731437132075038496398228443922857428580131750876904365641256205148795279103692733405693227266460135479289265231066916946430365197803294869197124166139191022342940121888918812121160176402336090049911335482425280654017720580411487380806752489175948459072350028781225087513684380770430595711756057313967996843751906949251877399304696374103788278703451894160643687341883575788451327587176425515159321031619597089716577535516259978771494426823258664750740652134324724102068849558357047649949914546623680833142199989109219296321369667260666084026675133287362594629966021171492417757195666893988526465209537192397367310417912566505590425888570781332936500549266551548798450586672114744369763052117736043175057181530583050035301028125631314619646560115977173268857908985748950297249754707817083437604261803560900634695098379243169028201540612418320933102924080000184212274397204282826899232147486676070764432159424793083346533645829214493505899841599809218772269803942534639657302845632154198368717357796178898317101902061685962037096699132240672439184849848304242311261755280442865897655126307918272450077079272372336209460467329108412311874007013458118802994418011718103330865881940997032538349142934537120480037358738006989137791659552676945250670739398579073488210371280706338652091490635973687906246746685328538105874501583638194706555855918542089075743922374251980719793356411051887626890709021559143111864830737281190915115193314996053816670884151178805817920922833916793138077178312131385306172161557245027973375953285791874883956897573050091401937557845117173250317325244775448531739481537817907434350445410383687562141857620007713047521187525241987628494982571620540048483554023739339283284316320237236693477016448486286563032834634303576568061068315158773618649388306190392783131190195047406386929132682770327240772459646284755515265254856879630322661117807446018182291697644021670759406252023842884041162817253290152537854078224813775569972272783438651502183007991699488892671941190053703202517967531752603084026027651284767682712112055430221291407493024806466184624962494024994529917529906774569842392011144913242074780876212478057892125510116145104294566614145160180648156591750304565904626088303799661510817828191635947521044276116380699412203095680749395943096271961783301704411014275196389105244573228149327411249551784020293720598151151601173594903064840968585377010676094010433152654219775181110257238403069685937217168667358597667275762322191927105466537910170839935364434614212128099109900824659296832370621594799637672755402428843119378200253700641210693523342701447162229327626404627530169550985025399045099385528155218032944229030752954862014510348561397685246487218469408020720913687079621577454504838975728079393666909352817811994282942010222375371604835680741214357749581387077656884387786994885354018779837842408876304255299473586228518848441135944305057948927285392240749657350162313858175298216114806344701602007646768053046223865817351374945945549409265488767682787790245745605238731454066932425327949571197991015425065026381431906189334202669152824690318397179134872694693756198796065123313337700638506007304225025749165468243616884200897437305546174184977759252825579610075240877725999101647661336874628564942137275298058247374242234095826822455391350527409701247870508842387348451440193497776843384523418195957098225477320236433975343880398358461142002463978253312622027928158362850185651546427800077220495313803509202667590287224214903627259500213641335896279790378924329692143335968678107117502461165279951052124801630885935083268427892549779191666583775857524000492201490111045992659414133491217945267545886578755394919563183031676601232804513252380082610175909335981293531319130732892400538973751505720831912771214804498610221299255915835991033494441860263213613233849794298905856738576205716155200159875415021203166475070489052057391124504068102660393659755208882822511756232040609136598345582049242989528907451835651886673229479228238269707798851169032363585277770267228052696473947688219849325367832556328648349251120995074895472788504687629739124871150675994935246946784657967533155566216547844288343485276415815321812506989774017784324660355148696135470358556302755262684186820905847077096170002070050681633592741319602785048531901390630813889204384120300153202248085365832268062687079893787742914056603613697814217842998708286553648801687535274608449410813826669383794079400883106512937320077618679181131231033124199414381297901668399402876976666897206793091806899980618181624538671451291999936230612015566503908791682374380290565476412663999467456330490457744624826885809470363512200775452225168419019535559959167119964403343561964047955743782860785289170219499859023141943513456733307554327923250463648744453161537691590080256584382971523906944782170000674042733684522386930006086087369911840568241118213989685763580485299011936170170843888904360103292070484777715330636595503119481066000566990942026349288372631094361548190106920988970280352204348306176090705074100222628987164454703955350286413327307287375227813216028347223886191044997837650398779245987986686146012647437410462003017387056325950891388752493609116641686123497830015512930894252265583138677751855961829261652400623319950378359377973798102769421354776570423564065879028238227148828015971733282102585739667243057374420997346984141564551160625548958217155367893147696027178277826698700963126326080045598743255222921719065462645218914341815418840886509682019358243465694575571447103965528696796721793123762310612780479015208007051807844857506781660285506528009607155584506179547983579380460223701947761002533739428578285627996940989014222964220066307084244871719274017946458773868416885836147923805162519515422056108814737540636767695681719253921675468238334887808791386522325584659346648542319413345631772359904232555680040234515385815422825738514004823404217248118495854413792481674894209065146887734568055235551973715130350334324329860255000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 universa.


6 kommentarer:

  1. OK man kanske kan ha roligt utan matematiska begrepp.

    Men jag är väldigt glad att du inte chansar.

    Tack för dagens.

    SvaraRadera
  2. Du ska inte be om förlåtelse för något. Du ska finnas och du ska skriva.

    SvaraRadera
  3. Förbannat bra, som min pappa skulle ha sagt. Imponerad är jag.

    SvaraRadera
  4. Du har lärt mig allt jag kan. Tycker fortf. bättre om 42.

    SvaraRadera
  5. Skulle vara behändigare att skriva detta tal avrundat i grundpotensform.

    SvaraRadera
  6. Du är galen! Begåvat galen.
    (och jag har nu lärt mig pluralformen av universum. Tack!)

    SvaraRadera