Python--多线程、多进程常用概念
一、常用概念
进程
进程就是一个程序在一个数据集上的一次动态执行过程。进程一般由程序、数据集、进程控制块三部分组成。
线程
线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程只能干一样事的缺陷,使到进程内并发成为可能。
线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能。线程没有自己的系统资源。
线程切换的开销远远小于进程切换的开销
切换的操作者:操作系统
- 时间片
- 遇到io操作切换,io操作如input(),socket,sock.recv(),sock.accept()
- 优先级切换
进程与线程的关系
线程:最小的执行单元
进程:最小的资源管理单元
或者说进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,线程则是进程的一个实体。
(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。
并行和并发
并行处理(Parallel Processing)是计算机系统中能同时执行两个或更多个处理的一种计算方法。(并行要求多核cpu)
并发处理(concurrency Processing):指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机(CPU)上运行,但任一个时刻点上只有一个程序在处理机(CPU)上运行
并发的关键是你有处理多个任务的能力,不一定要同时。并行的关键是你有同时处理多个任务的能力。所以说,“并行”概念是“并发”概念的一个子集。
同步与异步
在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
举个例子,打电话时就是同步通信,发短息时就是异步通信。
二 threading模块
线程对象的创建
有两种:Thread类直接创建 和Thread类继承式创建
Thread类直接创建
import threading import time def foo(n):
time.sleep(n)
print("foo....%s" % n) print(threading.activeCount()) def bar(n):
time.sleep(n)
print("bar......%s" % n) s=time.time()
t1=threading.Thread(target=foo,args=(2,))
#t1.setDaemon(True)
t1.start() t2=threading.Thread(target=bar,args=(5,))
#t2.setDaemon(True)
t2.start() t1.join() # 阻塞主线程
t2.join() print("++++++",threading.activeCount())
print("ending!")
print("cost time:",time.time()-s) # foo(4)
# bar(5) 运行效果:
foo....2
3
bar......5
++++++ 1
ending!
cost time: 5.000285863876343
Thread类继承式创建
import threading
import time class MyThread(threading.Thread): def __init__(self,num):
threading.Thread.__init__(self)
self.num=num def run(self):
print("running on number:%s" %self.num)
time.sleep(3) t1=MyThread(56)
t2=MyThread(78) t1.start()
t2.start()
print("ending")
运行效果:
running on number:56
running on number:78
ending
Thread类的实例方法
# join():在子线程完成运行之前,这个子线程的父线程将一直被阻塞。
# setDaemon(True): ''' 将线程声明为守护线程,必须在start() 方法调用之前设置,如果不设置为守护线程程序会被无限挂起。
当我们在程序运行中,执行一个主线程,如果主线程又创建一个子线程,主线程和子线程 就分兵两路,分别运行,那么当主线程完成 想退出时,会检验子线程是否完成。
如果子线程未完成,则主线程会等待子线程完成后再退出。但是有时候我们需要的是只要主线程 完成了,不管子线程是否完成,都要和主线程一起退出,这时就可以 用setDaemon方法啦 '''
Thread实例对象的方法
# isAlive(): 返回线程是否活动的。
# getName(): 返回线程名。
# setName(): 设置线程名。
threading模块提供的一些方法:
# threading.currentThread(): 返回当前的线程变量。
# threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
# threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
GIL(全局解释器锁)
Python支持多线程,而解决多线程之间数据完整性和状态同步的最简单方法自然就是加锁。 于是有了GIL这把超级大锁
无论你启多少个线程,你有多少个cpu, Python在执行一个进程的时候会淡定的在同一时刻只允许一个线程运行。
所以,python是无法利用多核CPU实现多线程的。
这样,python对于计算密集型的任务开多线程的效率甚至不如串行(没有大量切换),但是,对于IO密集型的任务效率还是有显著提升的。
计算密集型任务实例:
串行执行和多线程执行效果对比:
import time def foo(n):
ret=0
for i in range(n):
ret+=i
print(ret) def bar(n):
ret=1
for i in range(1,n):
ret*=i
print(ret) s=time.time() foo(100000000)
bar(100000) print("cost time:",time.time()-s)
运行效果:
4999999950000000
28242294079603478742934215780245355184774949260912248505789180865429779509010630178725517714138311636107136117373619629514749961831239180227260734090938324220055569688667840380377379444961268380147875111966906386044926144538111370090160766866405407170565952261298041958356778909047541512871140836924251535293096260672271038744246088635454363982931747761775532621851126474855864918180381519877161219681514129902304463824068896508357500229649939642364256635271614935207801331202943393059481996043539694202547610187382521727119665242224629786132218975049740195171653153048987483605056695271548017651216213800410981680797345354785175202462194504834501377326310693909350359885988263210528414140015756786096090291650746966135452625307325475302156830715404249700297210424646577137505616581728515517216288676066448180981858456491209123026827681473512252959123566976223847532826157700469481149648484913019536713400018031434012380511368173835296047361782363590900324442979506880200425497075817428109200515871132725419763955449965643205610662338099441079965090239835058688262541015044370484320696146208300581622032445457656923187565655142229321450667889684581664034312175421203842609068583814496145348996192319004679779630870771992965230958496008255678095829679128378996667544726319901350598963786237496380026027212712803720071903325318612085809426691843188133798061723913913711424525415380091954821781271034190574047677909474085485853003394617268058261532865988710695226333046882761562985860251045159006884365497700918591314079336300094266872450185905716172910319364909910982282171113034188814194168741059041047545569219310938636141579837579416940455279389371093841823524834691909773492295125953071398328562544812179152705046595958654656954779020092178370816222399126665698730839796362496210376149233471327600693023992176735118910577741564091153375237377967391642998745016394658581996592998334666059301647826349860479862872111189486311700077299334678795331022087853029064847682202470877226978827225703101293175999754152186080437662400387353762689053755715400425540320217748368675996336131595004238899499641854577857071050256848118475143977630753819681970818093539794067232920368908922783200763693358406584171498415879485891096945905672899713798415851643549629222750438948618153020439345247463008276498877765886574308087875413413076591503572256732064081391402979634937427007828401032999292566908606022083315983752819999156718709016301529164719115947920455896541741086277247149539333302596387664521161931270883282630583794072824775649170677720215796137315566388581174578829571182034171407714529475535797108182669757987365913307838682857595034767823707313759310787385400846883789925536631162479425047512615104634570611952476082258991470889730484997143514677051205872227048811238940155630842423255665822345240232500641846295922034770232544316636788345242347863518408683775566104412353145447124693099240549723842158184312016756039050317199725245656578583775808577538752965876118431967190114283315961863712299043641019251045901748994857351847545389669361365964528208636002427760428785759972672367893509433104811637811370730616577019136151552105444134731885196163472343099052391233625740331701021209610386118438680635978534912772759311376155125835880861436096960784145435311604736555422959099787360857819765485869182663659301669728836183187527585681057756759660676312618449087454840993232472607816610018772424475784827573256346192806768258063000257029675179576879240770103278259500518336875928686092661235311958664064242828565182177224053623701089273009803661477000764868635971370657482420664188059960191520584169375395729405408485720484183119726536375393922926071223294455461140438306088884554722629825219593225795966766830957985713895135876112078806579697894005718819062592107353172925160195775639079994701609725541665133671178168833193218406606365685964328152250783726087365922438775752652007812128338816185867503885840036520166754063927781151118684581993868942625750280220724074702297298073007693053502990307089929329686584999703773570476112415898214127808820715862154976002044679851390033493779015469859028845704540975145584517733848120059699864802623523279944538504600769376087346266590152022061234355767504806162815245731573029663994511968238346437577189030632409594025913809222405979168931762291241017715704007268967324144058953559059337524974596665551463554792017108561044647174469426997350152044813665101131732865864329899368280582245417913586091281699426094875817458791889014549076876264924456126642684197464669448570111352845946647787056693329066831912116795928438917077637564698306077269464461570988272112863181816339634339826222787778809163016740736050993604266186753795498725956200325826823042197619405268213156615258683417756734601405108901145660651317773841522482945928921969250817077089560602963774117873532662766003247873191872937837801381482700151797959870324248701858764713581094553184765308907303732457790284941989867389435170641495648049905940930062776577352827453293648392303770367861260118771995433231423171341924988395329598158971430696823111690637098809805823500097579357097521596915465293095925016082479738289735077387952112287129063299495500386432384240519888302062486812254069645526018535618147051281295752091768276340384493698604605906352768811997566681569277056082605326889293172499439956329666400874341508688535221404681633899139621480723771308435901284853560979632442342585973350024136064096789358728504298340888840958746921848696211391029561651515381700588230134548245065830377204149694087279953207326189844593907231723727735052255558704940483064122335283433887213495400065010574398481729423094997530856483543111830293772490716561605030189313626667623345079741534166322056881156467526472759109811019143837535980537704809834008135152285057337226836595447062332390922930457486275650187757947843498987225280415960097311960814246862547834343755422597555481309235240136558193776017755934088109000963303958397421025694821620783874290357592017254727444715846046140044194510270763419003650887833693092453198047432240952733659042049742240263388251698461152233898583287134122274617153213259078365060587980289232246909606447432078003236986592855113114869903980249349986809279041484159931077295602847322704184895972861206165699980660386610867052016493513136236920788043122210122503121392164109235821614742938417405799017298472792234283682686814909505412428232007967101665121787974405625949389137918393874266577398559763467490477167026983815685843687786098473949936323756411559800527340981262508306864825955004288877791837291736419244496923601201883907298500879188620836783233188507995965072008776683422507013005596294854606393103380069624098467347994164695253161249953997671822050499089468782759814744217858044874097170953207809085504385450956920743756231288831944722940125039488670913575502257332473876738367139483293732289828946524636863121228946557283941347510819589157387007779695176752335119703329265534778421266266570027049766181864953853219909923091259759694811640851077642611434807299268914349346539454857605257106869858918651742580691777422059993086909809468882105338809016578487947599049669022569590454888371034155259277179239774453783037098135665145523581991042339667457655293798555930104916135230335625559526569339967217627097733279298041203759371224719198209333477119409585282663202769268066031157238861299034208621878166325355481321536610268504222875757939553962467497014572239078365847045293289499770507155663740996278742610818027907662826567616018724872654447589537359664248415140004035243355160717246580053995975199121838757793109682847975327136877873619752837837377418393120646250266434416856075984625217095865069478877643809814353661330582339588416431771281346894539558739378744324346871452806711971955132314946095761557842026550577318447492833968898008257555896557488784130645264539316746764278942435227573107265796931059834422995842201424057304679774602212405288734141477424469078017530907020062874213375531089946676600742032300002775087865092307404516509400069529703745076544404168697130721906884588263616612009466410161830362961971865898857212519224060717964930476325482649194184422301989544526477646743939678206829239845003388111071207767522247708732269641210003760079702787783811101893385698963019971159136157976478881685272970087693001980301815249501679757075543841396640715454223072445393611318254306863929503284571973226103638575196330776279925042810042023419427752189158159145459273173242116675995933714186422216930040055885247918419728624048302993473191734035904167524838595112418678782063891624374317602903236514735810409592809765941106632862615727497789423222502761976964220608236827273542466261996368939948035603900529344794199970963067698035718962449405769015354769578508822613584917131324420488220185921988209694777509872818742828274639482457947188435844333911772650430739095603250584481989958329152600842552729469366441280570587269621682904988951191352336790786111060051015209120967039713728182793629111068584246285456235440826504321480610298252029329341677032574181409862651348120167331160512951768964491670323967516963137993828529460257182175949697417875745297109425902469929703040177472511223642008699424290382418840335922275625480814882226291637343021677898623728155413666319496241022534480155788609603895211808544440777335526130070578416120336310987991111771401598320988817854788792813555806952560841547134494691524723263032935880710450704739780814603039400567185010362717081219219754506014276134877305251991471972769753430808184339643089405084030927767064397671888493013217512771808697087295006206238583094933560979112493714147978984064254874356341794357736101964329763213078379678743926641245929191490403842824749978906470526210635555391816581926867364731290488723864146604869174145005223997618134234558381362870279739583878834979099651375681221673541656904510897247707133330415785510729337651458552344703448056997179446106701279032714736891703818383173639520330665367848806887687756385255206264320243600102651260197784851602252315687148991839679622183668179056748135715581964425953575148990064719872876539134458087056419022465430199468277781270618840554172323776475215427823617606597854099539961446446624098885259213822476168390904240211103454908942876581993436932726614674860640675667049054923469835480528203067528312015354170154599857881843973451002464988383128461727487056576959897104475486269552737374629672439829912000917412744488674841427962411751306383417882375932973143205645845613903772271598515421279407768847826823154842471432147039968967685570781395416498209984055028129094089428434013260871527492108865282737109351726183529352707119656523907459912011808497646488240636155744490224711758613210517215657475432125676219887509412497779869243208229037974726064284826760520600984506178050205115627389137643873444086159882229924003423332161184595193320403316540412688291514100511753460448596185505524615341915318257484883713833849760427038106574940005202735338919869016029837975967217647331908276346343924997078449216790479807019366078989782350768449614733088714797071591506740595547959456162064018476114296322567230062293605586365441951258100297827948991004054870723194211712690430259313093796102732692927761680856122386927979781675068951306559187788643526807866548894560832465822020496125164654896039224551686158940391606498343848236145282968177037372804768989417206317725559101860861977154602275463263350178253053380615391771851991506786006306000924008738771828589626804401810973503118533552715078931725969661130602799569646253452757822037749378750019597087121231892405948119894630981175955603723572628929287716326090193182704731340222797385272327729581354235868618178788069955808885843152732196111704527238420688534609702234616257592420723285326161050926970072616101471000683560930360188049520480014442958151635948812561967380492034501962511094532818004803723098082434750417909449748654216925939828601229469369527145838325788007837521030591823206826572220323155255323811768835000492822370377497934737728228369011575159643390727652710364983295337323930033946538839481030228333762228444582577709580492392521946210246984726588362756094501908898824399133011211614926513626572167851694526791347256298381868194345308110398755763599938145212626702002150981963160909784866541742135242129478412920295107256501865790951203912291902471727360810005738392052181975506805668813053910004067576526866906526002561474972094817015167437656542998229826951162508169114832312945412175791519127466328251688126183638991447097138816267132223823129125663941194564136067329385477162917315618512908484430607693245990723763026301116178053747378913891758998757598529633280493463356582956102213740792037424429618197537941936688331380324619498039991963462932161915696110764936196605118894140062851294953772723341136590580862751277520640981314099562636835246598580689579784044772550754811628482811337744317519530575001865188858428964335457044007544253030882024767563619749720312926732218136201164583839668104984144366844411187119534070911503869892468580074413558922468146116289889731272132120606225803732334745103222665669576686341476560231237331160933733487337244821101674643734617096620211604594345513104771382340640159339835092306046143671481038439355446850111949344262802070905013760949082814504956762899233979383672458542900923874316667606236735254213300573569764332498509463656227896944170448292250944090789692595013231964497659678382105260284723103064125160860313520888843364106607556376692152790597814555581378657700443151664023222869501611091078717179483145592723902136258811264595805940273995373752827067868536583901117695978769073036739505567945676162950586171750765098402157186584427056937835216240848199850116414315421720248093677737625755605464046701885548857882242356570915057525502608350183229104667914375239172948764280995042371085889383891241550342379637017211613818220245543887868102083273692532994046055203735305201054445873899425497591261556507651448089829397335774194574837861736157534975223890837227034338949465954406757506419677115075504118400863192319526524424364579768429989809914310081210341621841492267954064698945756187910605258261488056442533203038223081382045168996123792429049291252566121879821683833819998744588014978872442095428418038494459506469078936162089495222652071931971296580855002918413384440210852889244138050888510633854648961554101005976560270028514960119594943420492710207758628900802288232185660433268110805043342038424530077269199901719733876690094541691221925643812081602673305645603856257456261437816627088689945646846933180743773641840839287353287628585971126829058827010270119029209166401170240844953168184638310945630068978384243870970247567681942330648607165394038194026308514689799188657319373293432995086611028524093246324996904595058572253900772247289679814654438364879973729955242336866935409069312651730505085676889225817279882459517366992175723784086461563849447929731734704009727847915808779089901672507421066211020505402302558066478199998547781233264483140453325179140843853348912485828001038262006782827440194040499103049992755215075308443066013198859107045959604743534832124727555946480981018125988322650151813383581242512191923583861082463846547838146266352133346599391702306187275802374521332625652013103021239847348906254372311365691193318491319246654366696275647251236067636089779707386295836450240774017448588368360998115876819992230119448370876514318830234668809485546594993767289511259101204748230874504005220540499497447718314217253556360966847662834685180251235307906066089920801585507216512161061523369469202695292874104446702684056918566635061049767689390115797964903937123531243425999704629797139276910252054437361179106548693539381559908973365834981444573985742413662340967375166561694816209249155527428072812281956900466089747666652568851901401266006365745390991481072949062530978926801887848569851264528599965451667471918501947677104436063163825561815357564159165739700187258211506928078740280024958790611452495594487504373249007878067870574384881150537013323494685920359150222456330715850544129058017466417424415536337745605596576740926585500134391627570442900302964532979909881727250277314653668129075820369457973944461835444565341944002408890957811937834172447656026825419935039750703421183084671148984205218684515103668421143579654258315250182068256158348749156494680912613634181714871729039187286834367461749228701382013054823777254193834477207269066298634685356145084741654431887217832340188122535083794776773294207943438578841179768707145571321223711533497064067797159592253545807142486730061761061569583115935583086240142726040322359720254289282362190443806623243677825397958999321313804262680161766442842643172178224274132679077214078296141614952214760825522219019643702832981941624112324209761935462316021512373698287390777317561349448171463988378830192603789225599747604019808016685343692475353092577774258142207101518282260656736936349392517128388185198158663178709051222387984078727746089012359078552790037864391959179149420432596820122181529996173540508433118305172331539276300125618535790300041954404113575980298101197179912338236544948649667610177208620351310132271465983593977435727419511166604218991252148461701557960110338837129037762480159664819962510653253591131833549922792304263892867141054120386722349573687632897121888973385916522643446166151338705079212996195029830347232330079141249191492885418050264686850167012672455494294304925173740994864282424617033473340335586883754818895119325999623837312642438757707778401034576130323159264413068721497649540765308092970373248754792485838466720282397005555959525394950742661856966793671131798440720514473071297671469256288529100871799135638819225378199739371439613760734837221628250695219588886855237527411955292550564477545848009570077384487991757896273919151547321541944919785598564468924631390332171626165812527651961991670987967027258250054203785178205728322883905548431754835790462358067205220451035971272494801524375710261476736449307772765620205115230292844198253020828620437397524657904178362815619305255058440416076319490683023907595566349694015802351211054424001766379941541553514129699067305039684354896364900802054905841255351636562545205951818078095317159441892067567193544923870790591688137437552487936909235773292188184921247578981253873669857985635760793194337541737849874627050233536630679427148246025784380927052778842452469873943299252006984355244267779939868840267059006738958746911839775789173596957744078484602106776811648961093710979779746734155596926588695485013020416084928763403340070069702787917720888215004086079909345287917816087821624741135824395681388171157991272903806628648956492104803765805785078624829963060307843651198480402253182443644064877440199818870594452852849003238090691452462559471168128297292488013260014375187885032011790488660950726341064429421653475065592335928864210723335541786871745977608047625321448052335790938354067936301401935901910107445628415487558615119625855226959395420496880079511338564234360217370701000711613029886495181480208834903804114316916729993972896168169491882715113861808337427339259744567851171301364578280392029128623751711703959938105174206078059757039851763885357661040206449021125931395578365374001768302450449136105564032977198667648526778495131455519569977138074093653076536783674135546840707551728663518369924133534113664011351032391681787221402449000224667128045675263173684765781680796782722674727775135258028322179381257025872838066169640963553776784601963061889901328423325222374243487040243965969375538317901395743782128714255556870447485344199878343273311858522285881814620543086423863111352577629355400694463366912449967612229572339712792729586015490119616746138452057799052510909618598938516914031687501158840569107485403290854875462744608784695349180421100657413235823938069977492678674157196574493106745592369845300069091615189253790566642448418041183141512012168295474299894882854596549722547072000800302198536706167516550746790584984560658511832076961459720903126406787173071223982256819956246486796060046201137871474433750162843634840848830466352191809002373137201300480167042904607109032675198767949895066381889040835355253766711787416496190931428139064288198551115598402485315896110502898759492101406866893914549008147441377803233596571805132738004344738242370873231224092363290390520495497170025523840887818580171983485689527700497445873023795593543376432581675128036958873894252798960986620743441241911833364688298113997713533853437069067435855486147134319188292587913724328838631257834913424264633003156877912654304254212605712898743327013236109413028093802520579826370093155367961579710653467654620581523949336014944997203208932677406620537901972990177182661360275415563464544286110641514775023858233596275100905904335226896346007820748967923461332202912883821484953944180831559095355251604349224040522060453219725197864337180868200257236079569282562650253994043631591681178838203315628402226341360711479645393441178550478690265009292715738083659567560925860792317180594831279219446174084897587666707180157277592648376488383715845763337845668937637932164400443315448993865167189766370587997531101450856037883690372350524519297152092246474562785688740442847779697667750972921505870190698345995223810083393889019745363331083853426989752085897743666237701662795984496691535923235981197589762618729940982455797256588790070974136064454726194673978739711597253872232318992124743589418464590538091310720346403255814999664295905752917275335929827753454766982560422898776745624726007627938676929228185662572029188738894232603237537230751336620894120313843933566860082254311905772433710746886739565510901205418213589520993610233779112587225034923605069604393958083583477754818818020246373139932162516486156645411576562161652529167256936092041223333514994555483564609398946064978653622088794770175554107004263478130499455437838135544685560896120373110550527099063557433086726448958159353704944377650090112989018674507537728881910121286956175098366309921020301917115412049690128555681624608698664381769202547317705263852565247737042466611164274888624104356639115177024040300952973787520583875613460743433890734433775840732587686015582059594436926035822002084252365390096568500628857219660219995636068909095838770258967243839508807381262565750813667354592290675610693809968455135916770267463818194684031642671346292487679360432364339942913293521807289302075714996598084518322610167504982326445917035301473763974685654983943283313728051519221812434328978072642795625671413961785088597776548339321182910558539309657416721826410228157991374946639972052672898311598918096287401934281223905768565746307292098746562789092425857341014203626423380409709992363533518426182676405564304416912845645837072261438599615548500125105829467922910983229475206637120794888485842329310264893897145691220943151641149278746591440921423234968059256620438826461780817972846661877722883699793002009733440568929124355826020271788810470963138621591941049427819160930357472463956546905704985619114857667487495291111798797561597455666551486482792426732319406294717614286578861295843635363048443297586480740583583258096306546243882036907405186876431426680040489873849412854859163740573966188090131931475228810830596915372950509423851609990220352013657507461939097342871450114792980671903296623816094284977233815734207290246210097572115766834142384132994828830316462340388537686212248314811153611050319872261064341082783993613492419860763137630542120706851640800964790267709136487520736938286123596602226930318298365190645059536185006158938454383389060199016233612488834328546603312359019435497795291388189116409591084357372450912055634538083965053426737786297138556304554194418218710663691688508931167221907218332667124396822925742579489678466530706358358232021805111026822691982878237514051156494320800672061211937000435452904311134193100109175566794430523058084828554393901004932288499006555882683807398777334975821630382842577900930005505449917407996863633638722944552310739616655112056058157343307558608682186783740577030737358195844307131271607432745368465410625185352676186454397746899779374068071347272170872468657870202000959076553979911616689327408246133454848899559491433341329102643979864297624604700486046162916719592024611218840957453380239971226054640586667188571649014159371242612776017729546612263298809395018043549083915831176148728580362043705142524701213280779522967191433683626079639276429041217888657091555906654413050881812618830032959085958969410320172399854621134629324286694236492109672390775643794890404570377239581480966849498387973234186625906764644802417544447352995622745382904179449095148919691923235192121843670565722963682628114719986915734439775385769016230696203135145255962352366687490664574832525906317851957035750591414469203940056083981639558360850178871479398288153194393949535531305657757654686609143921909944396839506035267090205716622448126768747869692389662277410736564612128144073834548765607339878149025778632049402463060918320744679003482851974357505330905349354966959506700691788586401472306155970747564474988969069474058864651710233982112891611811283839857016416310029237214012814795085120113237533579134197657746221748779382378620492961375674165007356692294982651691648607550517446449856835068909092201368741497686265939895384164333223335112944811803902760794841370879253012131474441697576685598348398467667174126321967455577214086246709093525703761672709414486866737836877742635051694434662090322976577494143821276907180302289482859660484716944576323588126577479484987201568992515976118325262784397376292925726093146699987972009620440564222773203906362017626978672278593993985396073328578492661429228064273470617089991570161057604773368662084233997070876472222626499438292346827964490080430603833584427057265397325130803903389072529671668307674940127244151801622758544705393363662577171929127544344379637586380670949704336617430973833592754977424086726749212320021171920719415150399835759465382321610243991980551454489017551316227917878216862124355163052197772424768243626082630552299194762692245937710110306159684991332883965052242783182482974139482481815378000869016750660806867670623019978650418544715064214205994870141886597100059445591618409315938062551207617811272603209358258391232478465485929008635822747034508119045841928639106072013132536988622797457912594583169938359295192446100476347057126536103100618975038592791172227984504758437802610382169798885445760620981655287520872469346108608625792699624727145950560763624765727051789314180024737829521738346882962839577504000240494662804337201413433320400725962286897886510995937365219722579186698164902980772005103644977428416428422735002863573926587551537292647750777869813738481794034091566289403293034429745337380110571470220274097838156461833960100783761579552711081479066060613351833454043038412621239472605599986109135832058560427144342662977971779691451985759980522434062038286571907877129987085365774130533452774612774931304050077452957098269492486499268913910996001291643796634994423732579468837798647805583341342109969865431490594091333107543231082612768296889948018221928892155187798357362463685267604817965859641458466061328956480187158300671798058237165468850598779908013256447239770968848217163330345593579124118536159385036688556322693774486137297972701623883035193763118655236647143475642538664795951153808580538917070305533809286566482993786239821230995721306011005042186028412593921440563023208858086200956735174009430265824049958538477348560112497357076569602669125657370779737370227452943785409026389819609517591929892297575871610059082446201515575446124668371743978766912778667799360672818522659017621272165891760586875370241453373218338265697031774632562326799153946248841952033169207024457537106838143755505711111539842508563376297353476586095258348651119878103825234503898067760134102981398415545807906850298572848207470809733371565507822583674312368976584900727506156357715200811460159176910887324101723319011331015827646061395574055786681771964032126631000987252670712706908749519038246850726777770059810356582400672696429609705302897882525072018225691980503150667549269532152240879386593011472887467121168252693616371912223104229200946891567210892277504242243418312973114815775095545450705307477121500541178909900729763523243624637825496817368088012836520659652091687289088537265420926039082731046374910159395843950907205420136835637483881414559444133583444331121023456876989344166802583763545982999614258096530986337885343892442787357949579705838983395585707240623935837082690192900307998945715508813386554316625554642879604025552408324727528592840452002949175666186939053071896689141974584128329227238306518670089750988954470905587901532981295380390970545823032660791960706687716383068022946507256085269039235327526988586285109372682617678482687627569778994760479135795391198234709309384757981688777415755062066228907845513915676875497210374660352817422858798651025492937689613802578614748749068481752542564291687411225125125419919121345762782135087778554682522679713366728709187498634167064878464036840350957729253234833691391370614003886215521445285433085547690078509131647157945537853569808841740760382730648048961842989326073748438739804790519565221937169789480396051609672861162341126530917796620256727117239427602903176239239685571380647393546861584872108429123634156538571497087723167190137394805502370669086887939497896589026433290539029544964379369864908370168759514344788643722477605276029431987224883945722490129170832089585040325269178499387846978465289770075008161822142632921808752165014276813002069399038092862630620500539955070182393927633985884732319975389129240599960671186579327417151607634555975117579308033549844206888126333827834109007060076641556991500063449185915813866171523762523973584276693343561496390747510991331842142060836449865725799720550757051699631866622892584526658327859928737639707448139052166644163298719255150647931300577991138001984460935035005101965025687069957482486176602224683609301386139733513892325714539034177173885450499868243162420765455053067544334118273103512234714887789122009792116979116991151325189651395567071055751991731257283455050071307169097768265813990045343236581408172596334894391096210018898795199674415699936509759121167455633638950269538937726159123801712555538002866095949772816125888842754474155978376596115169491349799749736634976079259282171200694129803198416931597055908714363204097887405411174921305684779509867058748507556583567654875052929773126174062688855454754762417772535379542318934567189546352400650256160466889140291312024756315515598838797448954980616743831397149767624429218717701706230352836168048742688981032979331819434807403845090782738402422211075333365827410782984625948932125095574321380477431384937248312572885804822528642694820367933940029230638023385547966114136537005465351004531363292424528971293821035585230776972776091810797787143615518382526358684864801314989658342279335933106021196459123860490844925806951037509135934548246225259019968248306264230302148607819466637475081651908121168872536443523857694406495590777477893321101297396993109614304863357221083358316665229729667033885697078138179410043534157252729008535803291824709090288105653470805302019651162136183345714691336687492721841484725201688628819555406060234152950586311841958953048009264126374886620755535016541655225634458159673896087558036955839447441920400415171015509170604853643945107752672053347539031898299415180158158130337094535634401238144724021338567938169067714554060765569665122037047201678999717102929558511136518593587720796157803104379401166072525353163790857501187144193497051266731614149115804855448289683847271842157781800135135871835542222008638620252988603778909793649702160756031887964319621731721178376510630115541364886111521336623918065388997944328818039511549523605238352908295685516934829087542368576172071916627813503130753645903554071038718064257926943746514310165935386538473998409581299273869258392251923016750829621971966100453019657455736624013720134901432466974569644671624915145862388845965871885641881885847254407031003513311707600339827069101910774438270192246020370080932826099353354279243938910765071571399847683725170429897488592782742684587654408006021379895255173763743359935928295872140424852763208931218548035957869354787633388646913105704690456423486673048452040192673391015620845351812559115695808732994213225155012380164322301140140249524554072344575176268650144043977088397464775503893218757486330770814925122075616786751655408741846053610804865343595068085426794742501361574249833726896908375342033497172266905908463123109047699902083237318936113220403273618948454584124208261032024530772393691166866368913603683397024998652546931805032443270534470103940540172177327251122665141008367676751861868458536529726338069314869769234027417911204096078592398944200354694592840020697784897403512492659675864035327297404324980261466835842402151640527388837317129876306842424152916264233079673911127957543452082862184959331275913214020647714808318879078109080192146258960428031232723931087116050000173958325887301661154447215059550175777349217335278831632857803228971865695231965620907391839463331814884487714433071906824545225997304070740054179583835152559820669029607885815046278876674407567283585394350170717840106443699302047801726041822580994597488458730676101112794720452610173914768726665137807448866360733831065239610502027692476064790639844717273485801371607097524622848418313105772881750913070663186081891841351151587260298081746247829170537043406854925189911347917910303349768937754558783737861792677385183216905823976117706807322950627042065234932814772903959060410606840615175396094377990592614712152714225427312791353716361779854836860325214192918169462192288699453200443738728878379632076475655872771333197954639831427919470229748168197756028601839538962527715255687124893074759543019775989706542500077001459976851874462945696692895470099942633452393606253697452428966603354254853291931566720863057678000311977630528371584611219276691285896626971882172816137820554464109318658299432514907530901817228136831089034542590227627934686453235409781266330759934469042427321420384179612476377169974533759511979864803907909463711669945723677583821663241040238353432622680383726019990868714519249232111766583580494071998222605335803219021698511869029845970903080981690117996245042000331026300131416548001965337328977933343372383879288099867950381932788183405592513266859473058758018146608110098559795782288704790786261259570365380393499243285481983195574419822093951248800169916127759079770619180739507283867664412763807961291905723087465509120400376822767551920855258725431172716931034074138450860748488075754182797235216114456056421305612837945347061450813382298629112523964174562747973549316225058498770270307670677907054727284985470124083682365792101699609181584776456496399908295438090228264876979044126773736634631431182629563947591921923173965006836460772996400233933511052617200682602372731288626896366345407967669906488387297311034572889828952499496478357036507068486763408230630377612741365810408249068778434411423232053619765859836016057962182114698735783791521735190828832443804208653468820197980510796135392252865267009830015520033400945159746780106036851630554024365379063059267206536648368188728225980911136035749067945105356057896854588514779817589851692322791285782474277047741830335984662775978548273674716168943318918504543406054481679982348389342315356281695548001366260815897667802612147483531360112892151970577910521014949010290430624724853110721850364816190258647013912864516639346783419285802905840974820497441681452389856179738894253068402192402797254219326893605698613044353281804915043363479798742704184605538208851610864228756305442659916900258241682003286930489297822579664561221339953122561752542037910281761765737235526792874286742826658252365004785366828487780601058362786468389290935877731627853456501899909196566004398638906176168299359330150286766759089477999027146919675984266662954686093728376368010786459146186826668333954826217220530931019540436044611904860677943665746014914172862006591296290231271009397566057868529406371766402973477446306590963681069713857120476737331537135598430792412165681174637912719013015298314673966502938224473770473494488141808236009970264501280071781523312771880990111824196138570551278833427456020834651611768419321713024579507121787248181404098582026944989990541059730631708596808106919427202339053069363061421232793715766736580590765856732538677941106877669177361044416528333900448541875510195698920675364389014949691323442017438622133570912447048245819390116157854048447015499159862646562314654268199788964086411276465416994921138896795602901593181123244217270697171426408751254823619294828819539526011917364882196948980067309769456697203977178429958157059508151334880161672726575295513829953892930219900113760514185938132510150221333275381037600994262579504563735169134399385395783924886987048802649873368365092850629852546631794255453875065671738615857475808125550933780000327982858870974317541158061224476323188906992301204462029823228050449367566926851263693999167402286696449078337438608281226843283282769478231135324681232068818358077890676154174076974261675816939004641874183808857320299320305701720688909314030216687120582364846292980619432056848334243070771155347734449346149864354383036176335092035761379233529162448230786947312080370995316438921843612571076394257825880568058234960310938152917224591862404100731718811355110516562213117907314748958110727086933209910865983351889078035632812577506427673201958584546488331303654313418174961082155045222314637596487955725193189540161050949075547677164036503851199180717537142666158236752717508716948062688520832867559185728067404555109194815075655167537443636110039684399602408976218692604623129363486466790012518748581055068358747529768979448452893151872653120958213398105163733502228875803088001371571119037759892087523603790399366173952642120668087968084414637186287359745748446966590344339036646611055317182651844682611007465543728321805966651342028724302167061381185170210603880347816759488966581385173266511530147145714439580799706863718164137862974708841224570576034934862352118518562433649257530329510608646280797489118864391167202405219522838091540090347847456565689668616735091663564095899250171846007219832130568031280457334706683946311020870920740055818959104157696864834599247251276347873277861742817450992254627706001976565395587576695480009164236307400385912974537532828830109713952015109824866076411563252883172382388922068966458016870938349245914691271111948926013002837659383744243340452362915287062090081074417982760333702929564878576858157592401490035395236004491055444850896372350668459815028767437859989765142031759474503632873294570607725176699327362357365591225186257251644603583896606823493701401193878334314233387289992095547667643373361546050847117566869711389418014337187487900854882933005848640058873575662775283602413321409330758360014175371129833396731509361446403812766928408607312980049518291230740430315247071705980737563556222374670323902938528500022263524839740355284425456720166791072252471436448315356094138674762830146473169993700700998882863492593235465614063877623396515655873295307339167351479734633362852342647228520097566142686857944587821627870532946772620603742455504239622391973521072488939393436692600004377068922896791482024852042238835986790084211067037115117655334743188465951962172351090099860795481313742920700006951217170934570726874364316852189183484393503168256122503091591245991135534645178873208815177429765196044006285235220629738331322863961486386771729047588598336123413419367459336190637221087359901124397306233357952691515327130907844710591039059731778864339789435279096609759147228248209123007467219161439033664567101457181878623569550258029117878234202944225654077791595387561887222759919566248784771302187133895482639773287149837288620300492268603432621428919382193866582647982156127023432118422684690973412836359971901591804235050300274479784073576579651454496204453754111454360259374980932332738943097136563482760437707417055237285055724979130765864153733514354687904455778511652968028613319039565194936522211440444770472610622238951208312966216411917103413524176147128227095726771862736578475863419016286664329218667564088362673135164246363309548839892613618784991746299061209618324212512489554837812546342712111225686907684908129361721267999293393329909819066523296759904694466756598367023528152564613740311322654472060422486549908016140749504052301067372382474857956593543936196502179518084021523084670181184929389045386870671520235999722438777873291480845606898893731536014049195889502439818058264458601165933888962274861188490007177288505577198108234780307076097345482283925972619698309969420298472604181713476150781782322139624366788066009377479101797974505238477126609657250674666775273665090768277988239697378702486769080131653527812744262204443430929520406384861247833643008180896207601445427192098086913708512073359720514951878980403416863144103328863848238798948277315616881446880726448505179340018140769146613976803351332957533111122214476278978140032389047161643558938437168763942890974195161006954195057514843917287558649357767013250379612649862547474118422252773878961832099619828386432414652388281248586052748891583878806233556517822238033039772031413072348042868041457163088333399837887154835909953481397622027555315304778824148420784875889274390111603744686367809124066576099863108264227102121417416438489705897957404583944279705408937459027750206771880713334434410007929602380118203688890421413392030492144170547916386904790945703682607100479499482347505208466501347448776597280017410770381204098317075635911875269394719996137973209118263803202642617426124088535862029742762886758051249669471282625025560863777897332230912815711066607081958292468091529704627799375921296378234263498054998766760388521567754699841399222711401819834401233262442080456181320379768657813604578830100282932368327568896743904062493367616522562709944556294756794225481437452353153997456724302297444257490591335933187268829009624090659402357652937558022711908427123014658304120827189934259796193603503427638254582621539224193697813531600572152889721346573584818567106014310073616695331529600939860291112487791883200044300040281200217947085735006590119425900412042064617286459620669069334662197900575367713501117420501500654112638533101604419046229158086829348219090436292675330461445242378859222703070415311208267937349841955392027994250083394686972953786919729753898990103158346049481597912084994705081923328281919331913928569731437378544198849386156027053678019465907220251587710510244539280404604837265851975834379512307720926899640942914253680242693086548327601701813712671579529591724125785458653362245996456240966031102828403949140590601834879816744330747854671968466124853200413070778883567984186299341858412216138579908788661629789323451340162733899358722748447905096516245135226687951422924018348464438828987560497499744295677837494228828236305427696941360089901473920293723199025586252726906900926933338670538311816832052558930568788750212608716444723269099892754395684025125807904163952119459785628143379939798425978530562088808409145431065548295028040210386472728881323460071737111282841597246910839667840822178056251787402164452368752967426680889118073631502289125139743906335218816610092106672154528622678067217946935408839994959289185729050078591363928398240428417869536804866154191802592984918533848154890867018470931908518258814588655921260997668549516392754075054936944875103680724206409226951142190788392584387193118035360199034713214129627050146261992738748190813503569123079669408365452675181933359856499843134822150721337446110016468111246458381251643968805045010895017725374723106114378918346443093186808292018035990013659810158650267085243001746307487420194868422023293230037754899475768641391119301449654811769431492105832396214458515891441791990236689565861888040201970330051156136791068635531247373533014926765290419764926472482911608290543086289518142969665341415312209110269640514281920631475284428220728188540836966686232388997326733934942205607780508168774172357933282778473030427152497710972276692809779716961342997206086581813657242471136929151323878834474653293562167767358800571345457357998022433738624338919816538228261540078846503297464399813395510704601922458682317364208844481991645198749278345917401875115091775502013411293471100250595926452248576869147487630639162030972720799008910593421278467999955468262354917576672395570471906661933803297887805050473088375074689389142353428162915456898876237004787823691325095251742408382860693061831751430090688040323072027795791309855104318048119651062735221864017507495282318538708727093720063245973765929067492073825548467453079201627874971952849580091057102916858227358124377043313351078216959574708416103188339955588320130475499274634846131866402886429149005082485193904444825816512749926738343615844228381454700384560098240586844362914936633224979676443735941686160295306228390633606897822866653740568841859537099339486474393041066173819105902792641138962944465524163646682745721408623074792588622293837528499163277957350196037920747181062225345004049795420737006567096516719234241727480838553595909983835097487530615129852766302506996808849652139852861785583313522061452042641888632257985273412185877339816168902146855385662102651605920191835453747188602584391645729966103620004058099403900277057165229141432162301648438635575496237062017662934353474873512121425173214031798532577869577962461382973177162851587032044608491933664144969293225167563972702381838633071291107491805414569438577174750571134698581016286241921599177243793186332659048255655852153538652234592237539209174454858380607840216858834416107637116259747832959539440602493892643222648600033610571556625213987279415798424682001224969498086672816158916832274681484576425963681437016349495181033130603584488918780260921735327398814825517873614448937315042327287212352485605181064221345487054333214083479598389988827972409471982030429091744067343667594657871315130198939063948371230297408569582588443075610009322392029741478160546071426092999181988743597394790637210594178360612517966439069020456356668633518369724680861526527314232945397909943738114865789541902559581943263185224271440000178925710076481867195612891052277324872019358966897628401443791424291880426564672468579141104341208571390661596707564924987203376488250527428355095285022025775820184827521981362813662514923161002407271484323480005271820600475616455679605775671503364319207131519135691968825523361814418363540539403721496377591560026667951097808553524754802596436624104567408157453074299437089941871047735483810894254701062630675862644459198841043230255621518319937532696832577774929839921122740485352374019501681811237333143216949556578980415912203315247516188638944017848104304147989592922037911849802993355042330660447592656239184534132800478712784696529289367083149132163915087088994583148172503506604660271078732629506256778645357658815580243851178906734273463210120863414839926539702994199983669454167813843059172867042347039878016039932742562471766477120712964989993380327812065601881323867608149120026266208967049811029481297071832546648279101082945648687390471493131527815888249495911881223457759512520901205606442409068241288589621748944868283677538858111538250699707795468205388630976455204676353557078260372268706071049730730105267273636779870796514964030572867353753233965487777435290511729350959837820540228459359138532780267912842147739853903400244121831724486999661004109571220348930107486545579203009128264909077869329785971803514491588602323398007090980304084224840735488629397509636912732232149297914191463319662741320624123947697884819225282736649115785998521954375264400977770270456831194245149414395741374396397898622140750321186794337008197774514818399390273374342810355007315032394184662664483952343245291066952976661183572075540497555660872051390791377259379982862868425307231775760982437252829937999315195148276341691171273100555687116130891916047775254829986929284824445864813797381218960594799367227935117775758799274844139996135178340642881815089748682702910872325700439610414385754993829626153122560807910256225048874984908466350218255452325976758116008542360249584153537069511960874939971993920817800321187286670701669942034059629385215344549520124815156625350959828442777450548560390211416875541813731538892238133897131030542917758519944515505386148845682087697804117256987226356945581825165037844009554599054436990467697939284393628155178808043589761787238233734443358129046638065439568645599507305898959250132436347481480846288331040324785321708321226785650309634628866469825949008184933853162983431002345499049904450650773118677770851393569848137311162656415502513269579452023159007475493341177034991842805677625963838405418061537555483537071855423777388583005297515978556678350956773143186833702184231616463600639097807452577741524295122971231857081328328157134247302259685710743137671197468425413368459511896153407720877821233516992596690020303639626020678247911124175478078457555277712449963804280494463154994238472835578409426765434232889105623960547994271605956163643899739340134271873074612754478696379660351500974113058537221543894810507435476331510879167339830830717121249986381082540080675645369337714977024008534142919796560323814044361152156960893733058572378709140882964076747356541486981987971456516996048328365211467259365538289971254386808473544529733337460127950622786988168119193852578218413549067819102401218066647681616826461071361031802857364418210467184275957380232724227402060896497458253454748882020549530385856509716604533430670746527891914440585314701155310835238597222436440373350701933469681275302166715092573564702324200964212030617736089066180054223461534912599711259067673508274053480676443061724245412727335253254600051477106618667466425776612383881190657961737234873958443819138147109219210618948458296538178525438850961382599666374769618833459524223384971792413781497906423480030545755048044429611472625359871827454469516571053302806399171788169517173019181840167635595882038924517301399997105423013975091900630300102440793086683805591627921592278023552525135159095063654222425052153702371688528579602937187738860966486870245119411151389119281515152313577801312535921876106399990978776528865342257222118670468308129556105084709612013291828552303294610782462320472379620392165704670229171416069775935834393391940287316041695224268685775851831934336295750671368793431229106585481862690982713869616100707042384949175777782474795809797326880899636873449356481824086158080338925690155003587625836157462232635621797226870116144051882171865354926194051604881332364292604437808939718022502981648000976488017323438872470613877198649310273164646420282408520858842805472014225700066377011605903585038767587037380176732612145368456110794765569166544488049371554732147461786487590377779634459692969285135809467771269802822571978870511873532368590584434052834348710612725537794353828387388692136158632733971404254091612158840843151533661970577293076332751686392806790480564714744298443821772770418925894125569565174789203733621415330232023530174921221376570129381882123268708250782830542532110476627505715666398472327815975328834065442405185281546773328742175988412544648589769062252470404680225297702559662006161846365201713931675228540679261685480722680044886241407368744741364323055675656165261776030392187979398855523967376051718881288085173857674770844677110574102424763572765769796146980681273035990721221642664675168720824675142535794699286676923916617288410349408962364288927825607535374962724328308887505281265796600857697641426063995911790646331096018402297457132149567979655859904800124764538086173971878910482237824389824049829906995393959323330250766630699330463490044112252029532662242921922692888603155336566176759350271791257973704951219491071900298072034130239111345821097078245542914328704171802323304912749060636347359855813447313785087748694183592919401356518250150253702709676623614829963179522582786114364210044745853115887133590633065330598349927877666576130173323552700022183391401988606625336382898811469728510437675798576626198090082784024166058060376326576973882435660067084458959237150916229385564747240102207663858386001680629188126039424138085961423682868310003366132946906179199153911913381930892883115304106086311339655169068990853670351376048388044975635265056672526282019779548427425577578563811667744200506638344413974793844388042388878921086773415271522240997962759348618170559115375538155791611981865654738717085024164841033261760684125909853642847965197554952534443254396611811868443765470382387600036423825076476257975744167483858040015714720588076017677554985775338077610739693722836455697714496285900007273404990822506191368153794743213391455314674316589876104582708640694965841950126655186745712530304337022693214229008080474955413149389751967962354722387758839732128086236212921843901744004803477870538888699102386967745039128203781898930740137981957737560158325367149776498356186679157419795072137832689070806487662825516734628496392445957059016052088680466075292125345529250741709361975972472628922160160884191643104395608986925065759479589966156654540865784463731993694422208009078420449755706497958324936048494546409399170173659921325024789959048088337661198140513290485788520486669939727677496194374064101165750028965644315532495446996167988297323108028968590608702849617336322912914415940817267288061032240639827901664927798667280560067232470659350536213166708989489571123834133630276809219821459323678477361449395976222185783243988016622132984735540415787412324028068519663464321951903890645699572243550166899703113946645661107382401476571578327426884905488058065833532082813315129392204637583399385709551467435635106946308996347720103971875602337735523572205543659065526240564847311457792185540437207632255151583713604917647565891368569376366043027998324102069581430314016061027534363529840614005720442981548005638902228617750555251316717686128183009893074986962347232003821060829811673290230847506205960649155878964097031956735716668404778126675888284035257617787605061404854022554360279268074690074518978529349218747554135339490238095170037433137014635261601083411261623923160140082669254184723517209018144845023299715006769717178895630672859822327416102557952571888364597573376659867084138467576579084213148081863386344586603833016199016305294997115540692065169640745436080002661275452687398454880203604173817715859740277112874154170896485156235557557746425976284056492915575524624202478077047650949868500197645472273002809795070395643477052450259786761007584870211141129734943998276786377514572929598916975291064151589761079850112841096160250270488279470508325227024816755911576037208535929301442893704426758879933073788358280956389854000861736811706401133428353169298160912811314907352303750321900569700588531699578222976223982249872541254740296551681342326116432136445357594759244252741047726370623665443112002661368875295312500013775283046485815603080442894880924161535155691804531994033934664227067351971432516091449084662901480421768703000457606861968343181959651136473208492637656589022294491758462344699474396956517607651201851073039500126117620998891806907106842990389662759607834065493513532718192184631667776059319754291977496329867806328878407393498095581435315235077341845374479292718351136463999609534767457949779378093641980404359839543716935846676338607437050645379084112711296392751687595689069144173842614654080946724140987900070307820420781915587972666034845393469629674774811648610123125430805199914134739545873881897488843937873866953501565841281941283735214889660830095623721728036527532750084122620109173280271476693790199784615874234670557041200362038550523908182541120396824956031616879596507927529523782615818923911988801299354685138984810211910431971591371220918123692160475439353941311327821655410605834671866183743943892777386471398646066620147830873938504571003827506429586435742981870759585609789772691781323942700123373726367621347402884172741512540784785340623807716130111492023081142967007947527886421625835178885110991552829349329379886965263359373580805357382258055927303436005185255676383993115895330640002785726141417874185973686766667288625214947760289440353853266203947732404638159250951468291414893770413595692810133707011524250199870862025820715725323438396840328453470385365248339956695662590054901045837127210858695122850438898803941878949942351618374537264659800848705758382977323810824089614189713143374290120087338768676596951924452267220617350618717154932725917150479649381529977682127571430172937134815734134125562981825748205533810355298657271726234136552986969659505843526351726533093712408130262323962003028096169293877179890477885565142974497053503178036497762632955816933792383545785092213896261072386263195095688256185546564140187534800101694429722027878820360904686053123019195360858553884335290492621298026245362426995465414427889176817688071390808770664195513125907652860205576571031890466941147423138874029820662681969417689010393612356046426153637904170320141359520987543475931010028719833509913048567273164328742269254062126844576006722251578643274977059294084131900797596591291583671861108893118325294039600311435774507899192122039006960517139689493751059396863365551995349861342015462859033543078516005980659099937247626728524721807452618441426655891162596609880832320878061175105504318731909043514386231919550527338588847778444420169237949984139045423384628472045139852826274027951108564383585077369789396262743396673559726478638726734776934191864955115001457719116060634120972890394730056854787685111214390804162690793186362891413729202152599163340675544991640775364451080160137801820250526152854531684459514640235974059123657869852044787099333263181066621472289700854186498317631109159771492263697944135150794959052499441885279225729969106299343447553558487591677769422517884410546193417156958442183959322010841787249151346625094733005404185005697141053873869056135425550330909063682765069643613167395084430900063175835009733895628711290584564125003247375254117507215506587362274181036957624007301010734692505614941862420398628340206182687756635887635670188636287612703876547993642057193876396974838473215513761569403613764189518988745377090620428939986865445589299759920520276952444094455500607745586200795234834968657106176138536709586644835127744783268643225562991857973524440766012327856808636069601126171523373461986151839802033022136697619120162876580251776691425649734152641893368197675731582320768361352518410203887469160571538686634482297209763002667917452930666508120098776943566901949249886138958944637562105890976553282168577796960476555985442474077691032163961611404384862627587935344637653129279929175879240835295030930743280634726668108207458175319865546046859264177809768878309456126142746807520607952950721008136087551633521542463887641232051968930405009125603556531561768716678785508484759789931683246808962140101475945126616623770352773487010553535960892195255988580370413728281990851021890621533934550655629508305631837222926684424889433972550433969247722602970135026031826144460324420718933753348270926656049954692383013686571040411617906322996808987580394725563688253218774080371421103510236976360285340277166834243148066409321287154140771594496991225723055787446243030174111544410492911435210476458145938676444072752679202175906694412028422359036405998286569428493753093384297681617360804921397622027967985610176287019474331332811213396235954073630800593751537630960999351956928881790972869633096964698429471982171617224145120655414793217857835045153824375981860552725572983230953063892286184253256006260591069505585606292849812870811876828934339898086129369195364948098259479714209919471950458486084777149085630627370114017769889338379110162957675810794175831716650727701329900012768853599030286638034493037309211117271502029580346572852201033393357399971852504753425213608804680250341201469794648305701773290734749329131382629859985307468371939746969124569276667201030164766501262930675186667249894896815518490316106711669696648698603252410553429852290998629521406308625529997946030278954097406532610667136269030813051133777392554897779219803183008561013911723048102030437180656052150163194116371151116688165595961760455966847677231479993184344569472637484063817421016985865478197926465881121547950227816770334553573978346036707757788483302051434596276252867895431382645463591104734000309585733165178470236739127663207306098270068931917456461761585130749046319766809202467839994033442071230093964500848856548244851128366227189558098311380262321282188097579427046726596810867219260873995096563113634106337360684472977066251910773914484162919238832358304113563352630293225046034891467211050546320403673601750082424220800748728084284710606853326813468360727430099349614880509414141696226896085004478401249707635065246394336045664717842713525455998323949358630181869901932823181314728075536370712577876620399596681137870116471988819815177652512986802841670865750847799361244681335621775162283943417027880886911319576759691987290622259359588662465819403957927640213594037120830895237746418662734025425233320248154866134002053421393932120510072137697998484716185634928019425897496779192047805426820131769053970886517620148102409720230467918199848608360550502708549434078173238843502541305638671315682393478894386246340429096977100791174477902245195129114663513279851272320379880956947036175512716849545938129125177918480431022082168169132099107298823741761822641432744430796046631047632156332593599622355671938506734169761078191124244121961734325255643446282243626954712606631786387986085032444583031089835903828341735851602051057491792373884033174625569723657752576015147865429268739161122890574776749517277909997572162900346269598271461076535761471408336343713158230497731277263499080137098913953500930132569512603772164172546855978328565122625973425139497353727057840420143339686012925241935363989977082440998130354898670425966608126958935654186507362261392285896207890254905948281076275979863337477520818294406737739498541629954218594363602417039190371853730546495241008105303293705857786119952112056229711656677761787245723487319046972153513255476757244078254537246711972270648026317844295245039900687851440387258538285398761390291832193948346921601379431714855479811188260639115501169752147458440687603634001564554514849397884797823372672786819558891047006022251684351496543387211830335207161114317030233916929767368779561249369096217519183141046074016242776155651871476740139585003609783938629916378446123722678204416878057196317946223256440924369205642310906268376356601855357873024264161402766155250732078239141094650315068804082510764906023579360977091462589269145365450735372714371129593192146264627121918689662163475225794476158552471542085319788929790406057515474889514812856291769623795094680461322103258285776237642829048158704528231441794779297292322882079662514478309224178130523335990473230090401925546816157171735188032112143908509845393903118915070821426811440345201776009150258228482386206961953076367657935580000706773184255563251724673698615519785612846350535766859844985706278039497899261994679611400394036980127730856657549297442356608023012902278072323179905222475067906408818600121320828654371693509921939902879523466853105608257558288961949758197099733211298304338133679403174250735904099932806434069130512163930813575734320401830492983195298846024683484858297504038787799293656685867274415679989566826835998180721030992190250135726687744237439694748919192597890106598122528893849970207078561012333412273952361475150254460564376929809441692600510092200293767105437759725746111141550208227250647487134539428811891824129881574473883510316088199992742578830580914470204421338628957846095327953554213054889937503160805982998544975688969784315511284931468811090316310049370171703135998912511795795304922112093159973031684684921140535371326038931650739697407905386842306064032760375551095723844723620403435729854174125725452895965485850998880955335886749254978368567614073039403206366292915592961817231118408900864922256220126438675739946946072286104904460150601587185261648179344375022621703070923484066157192108646021603916765037165561793762369928597656482011509921598685609077979341345401337759429676641518605584390105486016584085748198322257163206588840293101492305105915464420632189714177733981002283694836776215701175881483915205149023074579822484889460550166832986175046334990947829477096591490919310528384220685448524863645315245252681639982510065719494699016422780921621180939734256715084316443137993896352019787825370324763160012546245203550186526711587353072192777559823050407401284527725643773392267266073074749574396486761877371064979829989187284554694368316901661709189003338768219805561470887469896867764030980434548053233622200973204258164288609604144787984226856573473789007650847494674532518367401536101379458707017786677170258817902341110411666131916694771807501172866233799062338999868420139969506866014956290321361537218942658758387654022439672406622245504523623687627500152904633645792442889544964058081542772095135747242548750298984059473664295413443405922353776232454922156715037362133138384178077533056640294932894826482911680005126829100595998948884732322404587470221235091245651813433056102709715160986786069886552160414025231985505148254647560181973429684582483958051748183059973314340994930656094260332357285483496521977441939859484757089904865242184276516010705480981216263176467725012577994947111064801679747302855160077030884089467407874620452761279957494486399397715496474965923792041080121208525176989855905932335004412205057109875782084722721587139205941794138713672954393628264888972566411479640643546641084922841072889509573407098192385971610692136803345384913297147955411676430445631624139795242654545556874797400133826035605490439226160585514528238549463704017097894565019736615133803631309003868515624391004332820951142983891545316856933216396706495212983294328921168501563105030306786671035558928953004042784443651307445037711783720934390971171840173143528856533599101134430699632706634767384847551381689677487753614118979256803123544115500936440488003514146877084378755411237227556210946735709030001620924658191103756043138433537159834473733235155625370668305991513326210627045394152950071346940187865007466831343795036954188622605878262952266975232361354012032112121210493753601109531846438344234951896350679913630145005499338301852567552797586851162359952947018529442428297879874589855972505366637042507823245160180602819086819223886236522895773021694817656254497626049357756411304046448620818611134133630260086349340982665681860067545032718449984539250615504623777645017431404911966575925704070552780522753054674903399260117720178253254224710249645493159881814947048454952336797518275264347830487235611632435706959890802618064747062062119284227922778521914565559618939606713926784005275260277808919256339076327202010726227016912673284994217937352330529322203298265226704479817790824404838330784355665136125855747160191132464407396788983961872412899617664161487069476492908791807475633880571780819163375636669903803331486279007204565677392735879445796466237014129088450895806245712294130241823005629533141040309235422966862819362253997304212796048656666903456697719067481224590983745950801573459837408727451482902651234609811226987006566500447803770465814573733629663223225117468812202064684914516083712347357826717533425274029524716256613231917433039410786529133469557407953791369495526047462472996443324203648027634777275427344560851893368175530193680591138749667384915079292302756927068539345725064681444890823219812357296014983464123659937238054743238242466119792198620334704777361578360229091091801348317166545700236054972232501874792509722027189690338293667554622898539678512579851677135718228517433509678061836530182953012004644328842519733997714636881916652537340352958942682245268836670673632109092912041932692552640367535479702098887751763632902129113186390869499227747479229744290288010780493451638497210097145993510743353752942396883738377940239233019976417799278380523776598373452442032514645263701580284746858841267470761158692121133469716815802101570920050845578980635831396071293646256305413723439519932502077732146536762032369113193788995829602713368094443062727059249924800298013785323764278031689326822335365207321420171124601129701023901618581711703833050236111823902864224512451853449119499501845074436509762848953879242754607666720756627353106244506339343153226672850805281043297865323400202924915893168792314282441194118336801994693088813445305972413596532201352156485343233943641671698171306775872192963902204467323311594577138028053488491350580905288434368481690990733655745784403101148838965575173022918624721456507812340030849299000721265755400745564209254815822051397978439163197035557608029380272616223714806687396312768185882066125131784761027441636239396507714809571746822679571186161794894240572579266389837576828542506726267177164680952578359414342744973564594233324713710082047241116798382278573894797312218795241503703959221906864206397956924125173409635809592697938072917797395431367767416882407178051092123252260799008960807916246753939847059107463684999963764209246615189421786517803832032021673937158601793172071450235581700955045899603191447487750847061573144182520522620132731514171772691361550253844368462328215463121106640940096139554586798457902830211358947800460196133757200370338430667449570336651310144135538076995857107029006999392111759407208494136509430373012429189362224313943633629774183880219202745761829749659960827624000466650298294441531871336356014848333278761616380494098662346240565424005653329686816659811245336732486381860304140026342688474952979032874917567789676397666502107560357075186781258967048844883130055696588129322164185165348014908846131677392935001296770811979804702951227963470206344116315766414880108873563190979404594600765898572041676638201751703639215860657500080219179299713529081044182574762000945371578435837893788528675046055399905334370733004437031220681364765759133398170711744557347448796194823541289603975604375906605422301506593406163827015459597323129866330865072450287275391934157970309540457729952080150262140297112214258730680898808491916242040474466801843349923142534250330287021974247213837305255119314815119902363431850969066058923540646854922806130007410894861546932411774593368611373954622442943060853471503529478393992436946554414894543794904842409823824038011191644909890138328776064858165350281054055525070008715754570192630479347690222024224168955813195067001596782061374664746104147878635944451594838848784480040211518968475190034569222976607941036761476421944794126034471146561066294935125957470082553419273177076270622857388407544295360127458096418572029449719528704938681412456145806478459694697820390468143074916301392383036247268698401134804943987041915752854110769757112204314176619363618606902216556246059505086335720390176866964209915075411172864413917274021744288181420886687148129407371061084495605976331843088250760115793526023795649812916680250814344940357034091862918359621494037203639997063002005888957118588955757444636747001831939901412504616028312073116805510200307312327139078982891756420968195898319286354350181289103329735173447808814445269746259377017064222619854395223025427541440405442353206117774945223352175553227782394801626273478040038026396572123668809120411947366218559170218764324038815805552685586872409032318205450474816952283713164140531870795282554265189149098962878915867622769427499706557922449489861933910101117701026772274068686680599750318780094383379994758809101696367485690207438603488309554112982549798766507442227412697201977953733241733379701463184295999181214629370452214354866530215777239339070924489652994131552941792828611406267345787257997973729666200141638276253875806052734944965369863117364696527383397719693011905953016910750876463157190204687604223375564778109230440356978043178814085780059756067847101055491946869958235129473069653570392804598394492523059359948404480650050344515196475719093269048134202270884123482500713216136600549949540495267624996221619905923879307330567679180940295451882712486472601248771691436547697344335257388489158910255742397969126272102428859509608268083624223812070684256549039927286729974663178706107811270509206339480415412065278065910901401239798437618653231383373739979196813855877737490465011462066219065965730107570514876670249751985525772553734103838876728856868157472600990792129518618889041205291028370282985154291624136002696165652647437179196392027878995490469987246950862337858797388896206043312900371743072441982277225473860530693238147551097842574108019139932989792943860796873340385730202990416146587137427660455406022837210540084634981027596278408641639764065575033200985331502693612280711167283119071921872756794000353005535151822601940825857640786843529315428983385547335677081284502919547432835187026644178230522086164810438823547117590374448637548090511608984452033266299975564862561314869903607312814101055849560165377274771110770533559605349436629926126172055234166709615048506645415771103451602953669407403999733772448931535399588831409114580741116833405969399434206772318709006809934366571485556624410147226656046257111805146781888526111140985726134087119435423300441200669524347245923159708557028058445195207331089197142906064000857261709261600181473216229481474531923450260198225263412407464388197479872736827455369498489593320437105419339154068401494926822196858130316582805021703607387575565277340604024684343992779122792491148558041789676291671546134145513404835692493539619713175019278496767019941003905761016555553906497914746365737461478718275099342376658175168513455864346654409467232096912094971501087073424172293257426733448686738758877399543566590442912350549907576760875078942618855138082808357765258520880653447745767616848402452643316250474576420172657893490909293127974667660388889222221782280885286005503604842919998007071976830924722434065453731288381548297585118943071905036915512094760816115975133023398221147670758447856878547229006103273725600619596805638402008324385013928151197210454719060162227755072443359641382521338926393426510918404531947216189152267328613476647752092395280563547929106019707085353582224544026857735101365015088287200037450206405695047258282189807685453773079049669181460836841049619656535730165970944534568417438967192888745468950120548854928099657355404526976337900141765646419089863242070013636609724946094378238404829821925877105422054140801974671769677072439215656335951762169228623540818062529781121843765203309926592290987807158834566614038615633845453909975226391224207563585963035321177319850834488129197306506907279864864962943387719315512227564774658301959715080336634893053536895105453193369032200573096559459457301168259322637361335203808362724384397765195268480048383023063992553145161274367692649800160891494642702845145794870640449060411035417515774487669774137723095414504678281908669934707485514465292968887143986428264923083779966597286061199893091267676382381308845788799644325684785495993741497035072936519792469618583345912487147610154413587863881611681012777275192513058746408543597624369279539161047499958436364601196706286780944138424748374867056178288371193491970085568632081134301528854261825991843182537370607301674379660753945480985733858884081765359376313098459071848123050005141063595540193078396016314935803627136400424209309410045088708928781447428551154463953018487085404237097418376315078088769057208825307905832386874606928235307261688878496006019705783411170463809735311834520259450716843935814131074154604623487020618654053081708444391719747691843846569346535857742976515604600239291840912867367591147249989018127457060157997918600016123216469652141550736249782506864383014903763870302656676906966034165917164372714714809070903637715156027548312526627304690547247244652795011068576969933088365528249758884273064628215231483882038917490914305621809395493836082730930445455933655613478402019713994963901564289255262061974152119501924692451261552926156998597455298172077536923703272944564671130784423015875218563176929833679372026631059601702693957498999779546460790748411677593054587965580241671891783001917746564901616690807820444073313328984910166090096666336576902124710494166705444520861703507857261499868763455570508513310109198709306963391219217930852336970610991176030156145754377040682072277468566901454409441221413006934802267402233474776520277671966806562326845892362182558857196287394574826031548943666128240599770573873433431250309134196224875613071585229077840747960986579167794875957115114390609993963278642842435231801802165090643518735068916330558547442638431120154959901775409069507917347004699140775852501658572637299690874096181724277492636718316172688249149117764040512161077785410570301802326217237585459227752486128151514590558835205135340116386083403642457922269990593138522902801238780194283773313088242458358393029817508512969794224424564944469324778247247509983982383607768557746228791684186305222300786886730772077330158922538852655311407625598014061852238739701092679926846378156047933896080242002489449579319958374782347112171055322484968845518866199811493182253835843303929783016841940891276151736361818963299345760775531866745236631284505314223242632852867279960480505513375849683665799711206187984713722162666353038897545450220923867264552001311657516946739273099240624118521772384154724928092689912810612930442473055402770680927412990255488787167034831954804913287056854667642073346455064499442831779360321390426351006202459934247368827232573310611933600714863145184500867153872030647674270045224226112540791900914779220683367397646103911075169412900864745690689061947728665379127062111144108664771469711150195370475786372036757782478241239775892290838919992170837908535919985610812330462479842948323179533860151471872396359364603631016609250706311819357687094017950694465214638369548519979853484432730344158170789840910373152283737742165852276997421365629450401584207731314564559436990810056920480096098113292303985244413319986937433602387157173673707959007631914467154182356607185612278681364450581024588193887100572530944168511887472604446798689701749708874021048043851014376041100415684409288470586280976802963905373287306119780993333831295337759443003823186376504407785608401463893321633953032165499790518229950041611587971314379266846681748585076516435409780457825975747913258567240147204776606724279652907354981404893533509918732970076227648064662954502108254952386097996645217637179214480997067883541463322514199497949124295806652181977854654826909319664362202091116764668428218082617583243413152310361638238973681427931198327635799976210417214401676116877262633739310261971531582887818396109719048620023180960402325824529618940615537621126843441858876916879595587861337110995524615117748366453886982058356700109832712955400555090848650609626518194175401159369122737686362417808886180484305262817760603996980530583312798385817686036808405221623094589437646814314136057663338372826015331185768355467018908132566417550215282637188078281321080850447998338566145333707393685244340170140031517160489896821455531229977060546276022699965483137601202460321634126427390084102728296781857370069539989203250125841728620813336983476901294974145069705637092117938147776071466209769384148141088526284418324218010717485854699681226116559116036293168028762334100819879794493300057783672047316534416705408582421441099076245899601757549255579175662385998056461098555674061888646537786981631218306272447744326421750287228867998727724730056573077419478536312195515957802499920650963280598065324159181080121243755274515213033440756515508669547325695810503294696029489192218552575435071692409996247399318973874353033851613790611154735288461685176185941461034823465900667543861873467246040989399898759397935572129654501086914280718834547903203734562516049028419402553489269938611426267206018470273484140160305060913136541600712467397374968867703136392855619319397265088920240003269406969527167691571068012857557392159581080310513524502819465786357499834843693665227526409044518871861214494483927828436849183628408795713421569383384198803753099720354556438148942819237434521983874498189137800059226169450712673059625775125187738607750016738736631634686382498096973378031306766909998881422212962245613681837850825754351495684437452661217470721190536224790027104910594381420173214204853547084730647230804984425705589393330916195014005381219024062326685799347106786275318715601751441360349487480516888818223884486634468185881907167177039447309428326015036271482534098713243494684994437748718466049033916696969096162873184361376757632155298816810907869579899685749613908391950526025949698101921848719903197413324521750404251409441445852043608175030034758001971681408712449025390421819579368303078630721339426897191221641936226247677799652697545129303989030130709808491278263703812192097799604644510651082192992648505895735724043450945043724295723389481540090739430762094841550190311519008501529748367215417926629946659821247115798332147334687965391161960414949173118702457733256756832486517869727785230799292281229662509632944382357585996064325772965884213839371651040705490644443217392133222324339795574963434088554892001095699802426092577899206210065946382391531659085706393326125889960836203960211346842300539805257721725452627214089470142910044390962364647576853047163959815300212739251422800719365574275133803486705596153335816353891429272871263550438120634944837778664236556335400030256910949900546441330487322009717463994515452800909236291142775841007511792293613991563863922484308680663078069629986804098759567372231466059521995601692283259564454236821085335536960420137889007865088617136810373333579493944207747831587115400115133205731792805080011235656999885249645520644070726446721351496279416315255554753746954151584664537562768896215091649056267150840991109320331704196528483945069243131137684229928943881604223833756523180355954384358157308420090352821871504763382864880630630782452398063880407757214561444993962422783213792378546071301537947641628261655326933190957080731927526786157860150639281649951898094798651514672038592155557419647094885941120955806458746243873418673230227017917568239686815933789614672829796030054841832869367713657992050968064567829132627478648138341151668572566543597541310811408956136003463789219579754588279285787204595200346022856261415845847108489697663836195348344626485051322697848626331144515718935110873417578723704825173902476525485588922317529979890366462400837700100358502969579911279355056263647705403221945296416841487134921881734869572852590152310360311918570738695608519828579422983815898894362197091439024195371070527082860025382191956790591587963227477590676599581843454105127606441391901859142380991752433156044612738038189628675223656135858413425879601221292522066359872987567988103830511716972273127065203480683247354423290058193496537139701326651988427717319859207069328965512672010727990018421523771861670134431937301672077584212826091544281412806208777772639713868508819168445783708271396487793236519601798517326206823474206781146370197679705633944747377365623679225665450344275361788777819889586273366217251148305447872741654483423965948584642734777007784885415708299049360693644801367837412922495148402281233947142344669837169653391257477652948052453708872996861487308065055488829544964945469501275659530316256095759574246370288785552035985920163074015484890051086922561732121001335248851290965051623659452325145088274915550241558132199425569542482052500447001818208701234807726918440156876192126650116037151355749514268054351050672919720009951828735933947958684793946172975426737109175160647737173331476473769692491856545833179993717480265269021011344844647772017778430449765923313674455377700566407272628472757449060849605691940449953616472092907480142596425537773429346027560723038185011662306158415220037802217018560090903125349124234271733360558220082198263266323387639783838472755103795648826087792875288414787343754005316489144661676999101923143974515189710140770597050090708905565506983619779623505734370839441719084982561365725594559226449628733716924447423997728257979368293402346763246005609471368473715238900506564395564859679492871595832447213337774320764845285831900270217809907576552429197146907467252925029441709805938053757533977816191820180236736968839921285148433283179514997927118863314565317515711231192964560302662511724403875852656075009752988719655004319222363273105480532613186549340759639007642795706774965019907967565084965308601591001635891385616640751793770278204113199159786099988049898954456368820487364354130525298132857947987295690576943872490382527079305044362665720094075031359919488316218177162194662144570728753232265105603963763745578556612880767068779994819852001687846336041742011396790097781897634997536594424247755715697916948399866980353085691508752317662495065703478089711025925578827505085185187521315573065698422505823429108569827281467718364304732488403668505147133923926565452885180432466232325476285194471977970422142100193209898845522705391934243397078449497593942785730601342338372894342760060535814947813580674444075505004090514506939713346747389633685833842647121651920783006647728154653903003104007107442141222661737082529905154736057580904919643216836106027008221605217617880167302380243190778811215064537430041417811891688639099449253285275918417413457040801625915468085010949145296500397133147993830286232122754934967322440187470071816472261337572914123318003929726563010942918280325642502688902698735863884184704381907255658924034922145894593659439452423636923047106129620114772854304343653039056479229396593484380800746470366441564739266596738237830631233440473680439055541594304045576145496911737281650573207187911205217902103618780807671494897978438009666454453623945511199979017193043535381904834116927412001953744448561918545289769080099694833209756195973984453673063630049990160920903902894855666176761719664049621159480986161829631866468707686181525580153819546675377382104214747002844198820864413158175316493678188936832484720969471868024959796742504991924021235293746625422132982981612401739157373775790432113439123290256596481099421043042638850051700701233584097800213023153130041489797740904806444848207855448364843001280850904195028587286236943142928974795080376195319478303094218679082819500853523091692998416517007771495366600661316780503765730196154032785468269739147221962538843513582208913122451702854339523089480414039158594874600888047478986284614159322055413947921549089653437574354526203880035308611531740193136837143961360558426013434361567080173623791063216305860095645284160634960771923188908459454257426971189700520535988307476459855639411508848206389598678785753020262265997813321402208032432896949276977746151473654063582239896829159629715109743238006959082747922605584955853598557764809960233370569759657521237564914064613174547574085829985708746112876311492710958334371255896585426804903463417543890410118582126710393497308147737813195009418433112113354478720072523726998964747202788894696134010924823399767216852563367217604376354954583659582766506227412932985972736553973003273209577717873609746862342652629669816961915361571669816874874206441709492004160612546494951278087517238056630666311303177241456837135524315096696166864582139293396691453704191391453293287888976552840624075270208426993999922962138842673280727769111572447469497309213834871125707458404299188499433277874190713203543575117768950903827456494946577369992257473488819349785139524684335343197599898282139049819696657197113567586107535567856568942887749784776451697248216961916464701608549768362646716014738709620648269190516195994798817831030791183683996073488572843788032632077071210433978839172050269706255575140838244246172645614341584342269882850173744947618060664793340506744898947303534542497281676152569936697096946143592119143062346182846760324125353323517563902384289297165973022740351641088446579761273166528706808426502452700276418639685245657536035483034546096803667907416648004522393564273320326844650379592896114478625888850167324922410037937320744781435184050167157842724319320171866837463578688397883399174468342405920059484918167896768958419333840599662863202651059152937835069088739805792075404224461922769294901917878500798336947168260738052997643641502034474413063789137498007481836823576096164314800745062566310176003446603335059528437057258771815112838924479167585499970631358219294763750531532526943151234331368046850972836973557926842089983374154575058802047940795292311938689029155558153374291034751536685615698756167218513294983496010703502746178429895571070576245722485079307429297455531727055475857531788830013806054746718780381626422286563376985105285708271787730672896563941921360033218217522750044188776385250232883816867127414345535393918575506393290102602034711040851068634622134737501332529028296096008446439454360413580665951560026062565082803962792249705146357521954608943142630914559405576717598279355752931890163942935784865028574270833444088618254481406914864884184635064325449012582989132199544581265681584025243883735817042802150407659986960450104678042363654332319135612918523095918484268018971584184288970097001169352509172998412539113073545084356422900330685193835171513101008836788525556356151596273323211915713937564681180551115603617894797583968436111576746884663805324630185960205903256167617553690126036650007210255559230125226441055530222486648198262923029328870852080247038488379182288964480119851941757493260863228731308865689799182128808849728755075826051127851156692332232966696847313017419201323443686771088155313417893464482328431770431541150344124055461555692520007761882608637943259953938300494429547751880518437354577687758516954287188743346964552099707422552914610226107838117381737711887803333128856120552826640942520762147845936032804078081815672923330351286914910344686235060397171031038376365562949611239284620749543742930087603811138231481569399451288438717514796636806041208798334283279300490040232809792805047547585387485148103615887894823292657487280718492561702686847873577259519289061099002536707844531600883847552154876089631613475959224123091734765040910753046430384838017280010277450778141623448101343845088913880799443278357501707200698305211464379928697291421949980246504951548562264561401288025967517191082256812564882925575108060915208589644820037921816434444128307504052676827279808367181633263302714021217209916470830459520711898946904912552586087106720549052506029946381025423676959482211089736205339002588267848965294213116907679690973651674918884084584828105739832638849231819468921672303049294002133126112980253176114144601222391168680743375886696668158682045590067671981107745502265225184926848099076082201464142276064812792851172634200805175330549782922587657012746596543728831791811784550162728644654451218355081852091426862173734538311831632647883562105955602152460777201107144884756450525627444290679810850300257666989975755766516535166057364370571658847768365904093379274726386232680931285610125736440078566941483205808361476242390772765749850293299307590914280641031393914387144706506620340800054896136350547223454498895653188641597427241193364983901148326125795075356674723469379910473279421194792172453428078706432775481492631775439873324770446354400084302752540099179123536548620273033703529087607348185239494669661793365369077091629896331400943579841461097738763352570967398913123822326569292234510529228496283013477770773865818308930879744214649147462970228518848315256463463450264312365092840559992486567491142764504759059438392754109100818853538538047472164713273814008910987584366851768147131733412861835710807940102208814988795030262415850995295925191148079529209556201824061141601272015508112674359714109561554552487764749967924684564014616140697104601145909987678050531203696415090983423364039398139870682007477040638778045179873729740248034648325747234806406475322946887748146025364709451235029246143979077646144849391929982673985736423084162116480087799827136703919900553191359590029131450669952017681360100231795370271636988765223611046854593805904273323051054280040178062799197831936586890685543176637041746178270992715358087470421305850214623477481923026161862298702770848123370619911077399685921146299552913151555239320556096422775181497594307871566574520607883514481873438240179472891319794954088268967605150677920208524892807961939597961457449455180966329958823593562801974773815915071647332882364326726170655419055004680260775357065793542739852792424984522597645565217819485358918255126035078048190935311801378894528022544706827514778033696795479096384106504175385293518761203452745309573543712745802562962673902642181671570412399403825464383484636211158256688565719884646447840079713444867915487542625671623311887303447336010174981410861668143370567543939808098498287325068340227057721127992484133812936237160481141088901811778637092145783878749575601334548535678608905139501106643760303555659744344639318614359156861635803347257739459282414225080279591368839261194833448658534267568636072829106989794131629005275556061878386252481681178868502344265136320792425926955419973529361469791238859238991878507957804684089274028302869419266710858656026449770430334425867770380000324729603870630545117379717368290725054828942517115929815805399493083309738366386773030811321908374378609284062056839244907626953408093639509675315014044377483306195640579493047617070945616807269778594983099883155511303043624281236690560796236388201187370259855535496179870747288114327720162868129964182702753127108708692832731751600925400259306430572038148208339609451059245516205657618810507923125354509931111054647635820997350738211043461582026360436251775757790077249071057690618386580722328446037246122785368018746222346920884855524675962163282905047102147318129296298206572375150556709155490077260884188427767685477845385110813312861617247186255856954715225734689930957106254266577679286976663266814335977009132497163378510733215633350192229447161967643177772791806863199638368920435519229519583493931289557996800014406619821837764658094040577601506157503595601453121201459168455378959315728339463822429868646740778873233443497585232255889105490642902043441542414130224665100313352266417773777175095637789804078804230797252641096596351504627364426631483414332032858549333855299665540976614543860931150172059369246342732754977819377319217215371919128625486132888740684670237051743545168274742273802614920805259607740725002308112323726294942516408365842246989293018719379947813174405095797955750570824014874207519784793870178585779750028794450863807173028436603630740109609574148645715168792424584400817951744386710381156048889194819754585015203468110367930756663319129018884951588463375402731865716244835838468379610115847477506256903923759445745418500592030945573844267981094727807161795908480612375140692144427429231223577876581829265133414665912167618952138002914369994640112048731427633032422790830140572531311116715625387532242498159799052604215944146913109276065042003971831274024051879107432416674565582968004375207175235900763408180806285983623032290020072752771945706148212164019927672412108879678795087574301005079438256728800573971664674466898315433080110981801050209286326321782656463205565974856580759342841357842359336657365493758650197690219651568012208186107235395925752015926385950739128517078264102185333372250792854182788862480557405204663330189925757321045607762342165958433447240618229666193484409375751923746554306517171637104653103091305192027775772913692719310472532308577036805894249809160992315204466943703632432902185468117616056488757594355255297168823541514350725978248817208432775883856548398823384236235170627172456060531452957876569190282558840615508040508023558551741759633683506582217937138156944796901564835681365890478962009875282557349506986026215366169866127763506813259986252178840297260367844824812037164326694843499405776560143004727069824205304023414407740431025967480774515554373714263263923949064293538600877421761486545804341738211226480496137874777113892219149195859107095756449441809935101401015176385124787943068737142672967180848860989660929394536792630702160824910996823162218911493208906576921459293652476003274401112365789636134442038364531288297244203577441154486252450854961445149177796699223536513406706465977773942688340116630720967438681124667248221854660169783110660043005360214489159403401988683729528251164504904477001487615648502429161870188220351271169731874155658292541405956561753454712760620814959344154405257871307186450492200540309333709051800845914624592754202012537175869965579945384361812493394749073524586379246029279331165821705184177962822683609796853861866709584832057267907877237952804502736432787880269107322788275039542572169909398231102528574711698121392583497842166504432693699950800825873130687885943217554042762199674578150564123947082359648438217999928152237517986960446446432630950024958896864436840177930780173456874222326500673759422996958161750769294706699396141147015874883518123285650065375047547270606603704053936470587179753236461001587510818924565630241178248072689895960479202282852245349336508907786841681013783363703975933893028458472559746981600095093671374093695965638589801318900907847302440227765509121192529087561722802647523687434105162792955317701601668871643911352206234324982943418716086284304169523123470678201528908446117176971489562273907227503960296183797953435502645600477402708210731745563976395308644186276836435896014928592736412001188991274704768383963857147046823775316025243941034137302060503226288250266017714550229450912783731309480944984903990974688821716156312119310575021477311556459304151363174845960606213013446423896534841081607954631093376679550517194333116259505548325230716299398606585443615950498640047671869085769275029827429408259291863036897890906291084103650098314303003909049828573027224112495081840042844158616024601311001895219432303261529755885212604311591603638315335237993883406515252016540563364200138909708178087178507007145828870121582977242076211753215237471131725897685001487030188721367894071961039641715002090915248356885135295335565632040965937228193206166377551434385261174104305135824780566738195315430054035086273949978127859709942475814963671779634086987446482103827781208810007326968148706352088680925887155642341101856984934942655739702920153653754952968934767382928318535433585282583794060022875833192747485817872447700098681283369342271755887071539283186434734643552259679828998086732314765770016192591344000416349219123958733552146920209114883367360865828343446348138078275072497475102711284748390278472598596806672968780837984800794459443599080607060332686451939513020915603814034612704471187075070036769480713456019206551192472131470431002887583427666933714174315162283939195243365550868042562089175819281828551867828475883468147754931167194801468059636818279023175673125142559794563433620446493229281874652652310289288989838830935013404392621443390405846707309122061222282847076707421887492352743600558365479235248391726479015518882913329524460013994283310360225088337799987499140749018382332977010648696252954645862921256830339470062929688218732650634972534037362282993661933222371331238435440258168305296806608391947829532324838812560622448111218241599567906281107309570144760510451621563097060208610382039349603761972178018333554643633390979082681858596552008101582308558886797071342280273088267589794281153627470907846803356629405017906758912940349176335971652400557258713927322926216281111532478290860489993495614642289456847139536320873640589576885400386142179009234481334430290749751432462909025942280171267148296801117095237403336726574038755231507563484309614002837631240086335031604035321470010681967275821913283294825681021555607341584437023515890063173200456957623507887007341030439734177822729464636120168581970129158359917899862313702788875231801435178686755324430195094881818807274356775543624108366619941731557026186071883565798945678963300363952825010329401673555812285724832404516093292749000153712229535465810650967557676505742804287929424115202516266266050918268560932989024691668197206345430346387063972335377709854984364272052435238539907947642352176177654807842405351325880380208953847299047844191224878762345007311034674607463105279091990237277715134232619576463110449692222188905925767142081673869876933242048357245534184047628136962351244333733479806778047362708713916439445037882481186634436422466727661620160871082155012842412200244819074726988094493462737118066234242738745721275264001171494916119688551380334420711428261397517648233058562750027541189522622372793978627266826219139319807526647511790357943948798399323382417472996048915287704579346740790826035063797246852391233523185267610949091130911048452321924771460142357077243404307265178327643434534465843495237684471772375568887350073324398421988626463134518363237839727140134522945948037223277434709609893787873031047456145138504910904751406005979405486112273863355954017378912570004449775121809421270388486018427381845291246491824555133994321979986936408878286152271773197930318058080037511289536549097434477841073551132083571459047577486797832008952001672036814417741511183229493756626349471221762151248895334338436636140915460306810849104378621863624572104864149279828173722913269374301582733558557176256437638079188132383814165027901098851150679987308444777901129660953938704171078300520864151410867845643692607461913151605254186015256654301454199534667114256723195888922478554624855763441290623290089322794178472809728394207609854524661834696071684187629265627501600202082500743454900680772378721295258880747866025316197085097627617260403255351370221785639174618597456179187668106221007492131178217330695174632085616831903134711518402366407608709473866167336672379768059707292208863213793169665534036781629742605241124666690392067955599710555845136551245559183722193599743723292815846397119339273989064132926296294711450629831654075363755367510525437864281494178798023650112532854193261851695317506016337271994576850322799621194669049352856823197143444637105150278574112206570593629833916027522146953347527206026392274225000107741551881219016649110482780080247906966454432250732774289482218820400461368893432277029361677840206953931884986083079562019746958739898210816673862106348063763757706641236282058962333974075563268760486796270740333673582504791036806460161098548461472871408951957758915422038961798033970594606974951954948066056305042916202994891079169814556053959469136772585369421644648075889037216856527753544470999455868804302270737847863118330307848441629207164370021096937850379799264249996741902427206559849366758464939418708282436246579702734318536782494453091335610152001266290280952295777348659158405536852930339826446691468615244973130012183925518913673114247160108728628609073810012517855666063261200310262158800901999512745294699899243439589233928953665422707517698027577787466067027416790077707005507220554526458524188449442447972031006648794201526068390715538301108007660100741103127214935538948047869622719621024044138872460824380083109563301971697337632404812077238198421581623760208779899886327297832748642417175636852897017197433764550288643567696393449214113987797232628346205421395899525068853772926734752029361057529657479891105743722811359594070704966583028714127848741475935140779406803327711875767012325349734479690501063428314196005195871804713942088273908050152101177488429974849147367647954114379300166264478446889900801417969785753093758127204180983922896180338941257030158330447477441446029086806798453654885598641709616444144958325839401616355152611169724133895440575085452389977665177173959240055516347358583276058244838041426661122732577576413108101187309756167352891200717834159225153116741933719434931244188995027358872237369028016049420387864092785053962659817054656800654797170039316762919363109960902263147864991211141884697564635686888096191772053863874373423236412474983097765897402407472148410357478845586799412606760539248356584879676503928034345469155613395546013767455933117806927365567962235996709616037908458083874301083595208965994038486478249588409372872821813932580982705065666737305710309954563628409651236410139826232590309553754587320850370853655549958804510114707065580892215915500745201736662885645700846511989808534259238817005554776637075992159620200908205831842355385865116095588368045582393193243060950357054347423748453193328659572554504003432421583134045075682451118555014369670350139432839949182259167394468646585053272578422773057558110007497296702819886029184943226517454163960513646013734425968169486772010245873810620789923330901523397859887621582868246311666566379534917381227223618782251144143258743591972685403039181324570651601915995558993076057127988802291123072107907818868612030059329085271446808049251507050331789533168564287449782867535585381894729901127768058055048204547428167996921595322527430337381971367042121857446875166966523540916671972460462427126728850647570487271342983143230268729673956006702338484905882646626077728926908319483454085388128638383031787496031729696705195077103962952830073012421150104015010993393566505721523228837955567593313354807578967204604363705018245819743377763049019965566008174708936908919016246491381188264963051720197773528673158147605504174975782740317528589821929534362957458040533268223632685737246939858226125439003924278162810131157217626917719824721239614736512016354557752647026625391359329114982849721083022777044118331335329514500010748429171963248413742153975066803110664352128685499703485349716922248262116538403914300560024676332396708377704917916411002347817257548742211911227772556834880708077865481470153290708276052605334424911538049550426442244252960015591829569222172290333425742864206715400426954928456603550088386471434981414008009665791454593086123484333108744599956316592980757262632380223641900405540474030854682719394701851800324146532462710981591479432576254560615130307850842839661649026100627779569082443078293193771053396987909629487051563852490620403433805705427024855044420221795455716430338147527151457829529723119135868509081770740596037153219727664308869424976773758928830852025495707861123197018677741010972830770149581259864760206852307747050425189672164835457262825105058927927840458895020590503408252704451748294115690150296523802737317285915519350108506300391941761789527035523727856485047242228881030578904647295774844586399158614908718006826291192299243435455228494406149142082714615275781593182060458009935363891735948598501438114748640723385655282406728410134431401625333375161393543885662882012176967424692724867331920880071841740094151179631292130098366180111892588109570939527382680603225293625756158621565541825614682323628879782906769203160302792909331197548446873939189074191355427913777397106852737978685510407647626804764426057908354961261514663398216024800953440315851435896205710549796653552813527805604592549737872286945716756967160554259913650784026936820660934637798990155934198072066331276393829489914441366237867646468948511752994040037226796717682717531844119408104417870112026115555045350984192168764495739692507407719340593971030730743150970572047285251088658229852803119540871848059915419062332750043890790711732589071701018586097072931825484337698560658384081202851985005565331598815060632749496688406929604354240978741523145020054806169311118871013261439798189720521993515302637545109123270163910605420030601162848832117759273906693584227022858151669282060428610022587814681682615961853840081635731096741697335340693013557394390984496328590743981833838282205613750157150752881988787742706807714706015591819735739732747143651319720319771707250358658500481435030366268545503274391711222848440118953455124786215693594316080171467727276644852855305724971584064114053391961171310507199460336230711083580074755128729349417930480831196778567037819123908284657993743490740655351552693954401491133327052541539352946334265186230247949200737545150935503434065647894124556823190965925490309865952454664791642729531309748815620599170932086190744504654278222918363142653860194644984781783798006687399597879358391053962853467161533351246943606191775130763248170044215790508004463278247918064567408471524320409428945359567601881861862574511875273684542388631684323659724291271114628541077582321096141333211778160346446347965838985875046299158800987597110969426815620083420671714996473295397422356342515861879642566978100462910133402749493807946419452052140643598642390428169556903393352184627174980462609467041687397587103038488902426198846045130418748243164485963845388342307754147026414812095992730033101142510960440987441433118057266235271257754855396062149430819705493515912180084284708428051171696683672401452303245120297804200456186555350957240897809360069299329772021273989433963206883412997448079442495112261454231156730699178603749758070540832712066734098137087339775211776210822566722808612879460574300612059871843983105310031102635185332902434522779108486514706868384115081822337177877738432561121519472379714334784509717676079878101529191589480141848558521066872040088986619484458804956426730469812397468448013511697253904335925327313310567121256512897194152753556293777917174721840168717001111199662081946946623914148268304561706417109352834922690467882214207111018932219798452157687035816565953612199140131514220895798058098306049009920763108370946617632271761684690698594042971654801327344711277753635472777505428709325442518356759120768954886724255749819901439348060134188187106335220443864953777517494728914507367806903016081972675620168490467220114826810513283941060382739026904226508568509348854893475086603566228364905263586171817688357517518417879268034283893642147062794624262917470429949206808306620878019145220158249910199662611389349317801736551429449301525992511099505263775915701348825586177018697576891284212324635659752578921025773055325494787795379634075926595599677162440739433643477340092835380350078342352374225357148645748878659008249437082108384083392162951705811054536784455398906471538372300784086421706927762457376207588173035441944983006067035812459964951533424913010558790537172180837796427616775770672990494565451334224731824990673510599958493947105410126808912905253308707242636525646307177856796762652222227829120502391677306353919376966697519956993698381470502946045307803843882595635842229580672239888684308953202525208274294860464954215845745348043915126060836637544711447687411428576400660159758894435013099788039872956134310142384720314948597548096732887462614390962703467245266343423668156843380687985643313048426281148522051595789776311213350709483109570464695960380677910274515864313037717428527967651249711857998776956152091556301609710244852031816947149491444952045103541348996927412192211426799851032498495836564122660809843185122847092463003850864343515039449521822994346255982825952255484850555437451174226237429023608013116954068387840413379468313526340076223302422021358304380932092074488072972244354033670967889359641110893884809736949862594797754359768508069716734196341962359009407986788232007494273244211427390873550738536694657694184013602208608468637169177045248066428203453432026772422821843434645044397961090629037376939252503023688847559531238046847697180101356559233393176046062262336858262383473768614145211747929899720983274946856357927558714487794231389501259546339370722817213214709887431089496250147757294993056104930277378480022706915966975267080378394811670547184381784281756140373530820591273543102247104429715697202594369692272157144494324010064562015749283902243993180797953764525667518397598211607683946432121427897362008207121830673534846912204761106659714923254664703176071743075748204314632475990337749984317574302443713868727872901679273726528329237186108052237181511432185615660141564688641424279885126928202829658607775465423087964049444492598238284813851962331793396045680644215314991833275886353587989050747515689395615707808566029916573679307799483151526613651659346923684337021897700423992495263103895047556079328645343353481677822510243739375839674698982654968150175693388471072597036040397829367522668089642822603046845393905676014452487604798115588245829312999973960946418700325052520095271769593250073182997655585226016298921576233966819810409029282878111882310590318115644933996602568647833898839319647991326012278195294104769218128005735018319032039569404244327930573650255432325638714251854998490569460902726276231811111021125671753396632062326033021208872991369815858645415680860931084313182252096301809023168209831603862409549083074077534880399557150904799617701601604297348285337452068622252810706547993206132528942421456483832237965366322462382868536001170220476176915046120958186558435766271642283545941946858213203554809526730862281361166370002399342582583625288099097871283012708142155188267002245191796480581453073515933373734097190746781650946529831621173661056156263925774493646218127384096112992189506221506275649703178701106429366300589486629584520077002770712105616617540670504812584567028003793301561483293619558049590939332081592069549103581730787610393110827380000667617406837851532519796227643853955843269046661524841248197686863537213541804891683063898532925786555716292288495308841330692737411676329647174281195846314207065908300294314144113324339198058804647362811072167380169359744782268294960834246630733062385542697264595944691331911270479038013646562311933386167661213742623864318178524548521882374959694097187783501001349925747075634725866471131994842349284050545486720520681243800984514611633456624381622317310923269353466651242102499832095854961658671807959414141129065455831576192907183412577543713942034650862717736434824341044038601270482085494643414682564467246593496656272316552271001546884987127966587187725023244699293356008166677565722669661006865967529779427821933272905086147280659626108767957069794324919002861757748454649709933067728851989477196799395542955375979015826792527696966501824754312177161123152070022016489243024875452655876083317694593371915330850441243607949318781241156092836015135961890559095545159319863072383777330853268264015304950178082494984108593765795463161047191132431196434232589174554284159865874449613288592496375879135917302080391984197877776377104223415223202536817862548145155712867281895029373160308443860183257474120332584636654973384494850996518556574134013993728765687464014520271323417804457504176955765305238000418885813799792123096994586662271103685021056940844512554766640440633723521119789165034970547962398318671758842368324394783203988828452444857500665531272618633468859672462704985955106457280309228827088079576664395887559290052197781380478797141338917742802962750257344870424547072064375679578048345898976904015013301214136324932647168499015813041432680946415552366502834845602957234176276716220071732153886205936469130098307279016000563889443682302733085596369391302590323593176723118993380532691264699634889436024817558748346948228656630931363684638106554685007260441213354333915824860920368545345200368402699020895771628491820934201326134836471112059441970765880753587943623677184498921311770246099076056192601839604362600587370584689789977134392046232595047235860937574880477056440486164908602654372588521976118315279316926366823910300980596110962541725489715179105262092697052887676425682560218240235179167000377288465011161797930334683606132657064709796378192907353285134466693866701317736242682472544766736368218797249588499966073367793580173335928623979486057397056062251764027432155005030363793968668243275309557905854525113952648601760437311219539653032963083869177157317691000506253584698676238943948424647100552530801717849060388213416061067723077826805606955087591010224035893923935631140556162873082953759473196428038126659580198089019528476187730503687825934801546366644909875640216045871561255924054134516128730927051835028007542739436375567279317075855516378969744975083760213733812910020367729359989736673520674268104310339179727891039043849598619053152436141016036682514397807079277993968152937039118362808403881075004441298108493602874882580011949284319800689530458494935677146367057114378094838143685802706617876127593968283222417445027064789392954209026231310289504770279414979566227972532772713349754634581745460874840054843431796222405278071159626979394139216541386549806282255367272588244988615130956038775336344741520319918819086641570385600063079823948140181762974023577827701164107283063413977681904723782627549035012224185863361249448408971414640621393392328119333874799582972151577361046454168014783824739515243788409083577346564717774513350796109532212943210815467811823605163271758022294745778079253685906647515845655108566515152603716744498263641444798806046190053099324369222622444126623080294647218125382642255246113466794546963694441074490211685045327486500952217380192926025595373584375589810381213006834359368623913875209754755508523567551033144922870794053864182551839527137120758917479674086305783192180610651578905136908059168177466812827220714582436659266326703445228375234456506093440793296047799376940413658264063441726727247735039547460082545198821075604794055728646431923635635162916955835643672372240790365148450009001636542654463908666677946882632971937931296485441373557293413351024883340817195175105173546953075826384554001983003655315048418231132093941236594283951347535575986646821783289829126363200172214968849572186091409296047648514207633338135005116520041890980126967515261633108757746924085953378440257143406963525238466763092454987127698504314162053139256896054169474876467985041055621542782075900240369157458562495572313200582427025940748894379490085207217754887581338293559999048147139979275918107085920600819431605658368997486825510134784510188989504879262597122322906122633465319061403699817453686727301734714039323445629166868550729677847235259919702963355022427894184717701245371431318923693486899582157524920339619900990977090503539862142440471829780219434664877266827623310604984595599017999389669952686207890919035096661052747251701574075684935763960270936231238261557199419612851311598806430491592104592937520894461690837294491544182343129776613744262926327724554844942642812762045842038210713784599599670503242908710947887266141051464240164979941528412772506645385258365332900027110983766243139935116296182092483410589551071056781868040398191918346300799365381654788879618769575964684228436657203592175955803112529909612515921041697974672187645951246163089271062469438025622968154869569420781066880164003357974868575996089437792160659908928270350493024821393751230043750503575537297067693690499559840941197129118837610254024624225392951240842969607811216512617380090790384697224027457757676421621485147499949725591149953344688501170897647182611199382626322494044747596635865214961272554410116012377480662595843548800739737999442693645497569453691325789150622131237635565110892399882223618350693753826813511699039413572008237553904470239101194266547453863657460532673365958553497686145088875042411528005838729183177135884449401062400229519767360021971931242765203953950547990278980256017299590450209865008190216305828070362266396955153859137492907448539136011182457741481891052001230066613274873572447230200402441644214670439892473508355679276508283981239589299586452117122393910209410903486512954128233557507894887112539139835248047823027366603631432953173859083184206919157641712019680338734253142101794200366345874384244763766755111711253601436677173340200006403442187903150698014569679657204602611692585466434897162727313287305571907275348369057426440870536756511763019000029794859486821876097056290107575178162346305185518470347596219067413022284972744890920076874860929925744513416972253760310344822329710770468886755614790036951720228689095197244803156415295659184624602772089448602006097816186898944990371163864645511899911334389263008233606021556858603688235346357377609866183598888769594232075874591319584327800941848926847599941112365003856526784054193764468531105870701885216601971753295482451929020606949002533304929947679599707979494533797561289235563746060618251088513258728938791753094654151152088305116618006163046599768297291421582769795867429722707738465180657350226138302648914527836446961223586799410927439523180469251147945799870647754578751808920617178401749703229207860454460282453811859602169260350637117897536934640450568947255789734442726385734787039931268270019200731404890630908698568481528584530951349852678582174091111646387404459110082836748413528509283844136194188908782290927838925261283157557838783555815003013061936531691039747026474390134318145474179614981927203280410341761994899777212167029295761458372574968640958581801330243891451264942887340065461181594947090709952879813799884147216588313444935625725332034469061686679916926339182811145612431991258919493347292793549349370191068332416122668407286100423943311549982328793389757276160643165506928264428033618166153058725601765932932641496748970845096648824453148841285048788890313930862924425574224840205746763079251566227878278301250736358545626443169402535812900177522906714327924616725195209919458322557386169008332279634819671039359804498939350719594321902566288275606746053701684489165607831413588418129562441724960115638632130129124093227986586937419370866663378777767451555869595776848971894444983059424294290575626199394589887921535199127563044856352124260322660354914918333629850371922516091233835925613837815785137031798178715416075430274419869100021496650841589322729522117130962891744424886022063054558199109193222258967706470211699957790102943667067305930557352772379244083381286534875774774372093391932309451504347448677087766048847470318172997510428360783649441401698154412301629449480728959806574163799525833548401579034733016123046299030572671322386520474348609954193384285811315070815541744239671164616299541772081460599190568648347697722572618506905185636686597849954132464548788478975314575684827551007985769099079126116238396539824958992452026621241933021933885563434559425180824465499901682881024715217264591057422887478740720833463499502728967946227933924229808679633936182363683426231944204745787885713577042941107423619187842869362889767284850772237930424209436258869018510576003901857623023739159815800228320868595105793273802586676680615749092632366604337246205043476821331234061532625380366940328322214757698534235563830527654603846251121729428857844621676739604753363408324253675534588074690713612311079481695023095936430974946776483769810483521556890215307200497939534945193702910622393184947989848480732248062228821911574992606540971890792128321631017178646970030040712455491667395676342197211203467170141101886227411720229573795288322012660990286257932415819518089620205970154856908274268586476814752828017241250007930477655440717904581595375793619644853557343750063018488818418845349082668513295319611531185250265960481252151399974602760529141995904664147614471654576788759269703440898967495817398065121978745576673872535207885765200512047123288949117926255902141552250967520715710177557104483785848362236657121478119013580433784682055671829029865010524536249179508467188745572270341292848866896816484654537583977207144031074779208145830474555555141010486249351401541766971491883954110780601277827144497882379358995526059726362607134523082326463155976860413776400557852184597670925984516866755523754913149679078094597411901970456045833047528960821811639021820326829173913559067574243799366918284314585741165359409977022581916500470336698739974560521629593895131851477772863361707142510376320426218570811871578701333611512664488866902176900330733641330161909208464614778126820965041811934398727049197153435624495005755773246837779311475844481950504293780696754210344783591088646423687057816610954301992280055289611192151424056797536051104254850612803182618612325335453935379559082388627915937109419227497044590283256611747732955295635579824222250648365173886684828713550698658257706379048464107017964744747764599400745158912582882940220292991918500444976899449832092356297726233995431420510511787056655236421037840789677110813544131988296812960143830450443593570903667899378077401150055748619624692777280749450261537403086793162310498065220811227939065512087002739648348111842906709340273135596338612376432990796651772108098684884008714231430122581298084634739197264086757327811592927804481068876161654379017647472733229482769371796322056421862395272450704940696494071155493171694387054675950744218687644402843686447971211742148637237691539478544857717210223430614047202053999419538690057277871024450778729261034911659823694900574044235143642149903010690980287233470987511759715191100421664499726447783841104752550516554169115648841484868852858398272043194152241479887039549214298950002420765922907409478506842334295631480099176857226678550295305035724243554769401624010572018379057730036029563795103727806840434541222742340399452539405333909927419603748002507367640803242442161263350616425519227181794737038321330151814895268334751329114975800910354328393526483793643473986902023593647549836871081581670196959620515856000213474728955955729987974787953647656577322484359662379074682939984779290470406758355708711985344906545909691139945570916414622768177722663485697274856305729862453085609439316212603230348216720141270561404868061037857258915207631755345572881822693270899850640432224055696042698658340439788479577857280142354166564120933948007204956328887936810091190194855460996839226185616393322602597086855249169450761923862357050003233829096857503067437672411205328609916710807165728806547122729918591464785889627968860016750402088929571840904336447958324472560928088766955845937280739035463612509850906804290475648166388546194810319449705545145998006395768221070526363028285377987731658376781030971948076600579926648784314064038881906733468497543123735639426259758477323124112512585407289262006578045991706059250734434045472034760714117696364543242062277049745597763852291062598892332582889388851898497930156699650543702024931537950471163626600485850689336779328809403412951173079174249793460719792518886897542632145786733017209601820365238086878056602327698540609905242178827505465293953706339295857146182583060144147003326490196776617505906446814462203524182358991525657090899847630925778075194278426886910852570714040785705952591133649436530227405260369244204247694349218967324421523539098014104981962627901208513516315116768582880403290800408961018408399879268338858036853295979187427554880311379640061517342731983782464955669434007875547466522214660789239143346213055898409819924391078801303581043096315341479452879618657542434296037424078252074909674131363649965203410077220352949429900378004441404265065127963235231441406583478295872775224062915954720481612178690223610512924485146159956637970095106660980803295092889317722835469376770442601151857829383784967795117898567485385412573076690302532311620883292355355807830943087423430587110547399950948518585843423584155955332689332619823121855299025948703092788485771715976826412942439648687498450924788320116777817111174799860467855685546205394979127676336436368254276508941505740479625292140985806481540275684768825289552747557434357734523089950091234669081979051528477910349793980688568045261083371330702393652364009735364610763817325062462051720949981674345428554463599827120100554322858804478015819320641200481469648789563450222174629755131848031524851241720850336160228081869410193829938006108749315006586567603664263110798942753828299949504326659294181024854553743204203761259120630989243181213867432408902750305732393420795974701403258579095710574898701135969842135555695881564857048202848386261378001154426616679702193063937672364074162740295609829840446578436906695605677612188516218457134406276009863620028206366764491412263940550994762714504708484815818845741585827535676795210273639852463263233098831650892390289214194052952040281280901047401184135703796022182028679119897038631701219324690274080184048486978992692410229610668678579715689256740679451130193158969249909636192941223529366836957397394383954272884409982633059398522529381560784624669753417263402082838901304592534739071745934103961400286838014478569566521303272259990934387165494285475701788603152272586891374747801266153154036606208820142131378088119902374768164588033164181857796616143516940831924601901017267930718210979458497841307749234349235941337566130290365403613455783698134649501950351270874599045022132574683788906211650509802476792955587818304368813591532338004068209558314424968404656102124752333353877414698928424058009359118236623933391404430417905728653748600049393552867976828331199879578144951844171325067413303465275506815558210971944122297032651400631971450441440517768414659196037634808947425330043369509948090030770228915943622419465261687750664990012704251852564135056986628081135099004820372529239446709939897857889742716867520665714703346551067880672244643936005316867940102059446256338090180697275258995635594603246802436842681277267889262936806316983911271926646051285775966562155654793789964310205737776834148892358715760999784308300160632954050639517199290498545102089550409573446727072150725488959874517132533378071025229219101235205612786683533637163278300972123172655156720006743650824339380192019958030411281329012838860525387151613306571199434672664155226053669479215123848342041053153823716844931871414452170059001551841286803286488576856494426749824430054048786416792910815718732283206451102938439827159278347881257958386578798190861959961965191452846285866232027616843012634572533859691887136624933199127891903355492404405068173167400581563757447066345072828150439140759445507079312996364796607412739214433339868527300263373118498362478655236436499882121227680038640190968208838229795073713084478168384622025160283015651569811835482164620197652026260871259914604916059607721156710514682320367378868115756174730274864546377105013756450108121213473700877927611278014850798399113686575039610463693347208571527327710870904135428113067320816013588025638854174118764006041722394508471801192640979768989918220373119288932780559683210937378070252993080101230365273795224062995547148776407301396710017279311409311333972894713678267657850472492027327993398037730041600459229233006068725622997068271088789435767288580420603938529044074078329435145749722563740472700017549867576493480727235656378769986725418359371143621398094658169834135552359660276361322293950053012462280370069632044175109206163172421466966860542436926531167957302563433421979666711606220608135843786430036147065474013225083736546495826343285652988983665779855428204332165957151729824628815056370828867041081933258017807229399250600663840508421017496131504751373983111739172289992316754975146583072807277087346235961579899566391971807878058567663192656546421092074246809237920872719870111944160650321816683366514223654591264799155868890919732726794422469276478108462146749572250526853341234790774989113330431955078549287973986469678215269238515197930000326672911737011768507851839710914228334596424913482455665838870451358590218445614301375572297313787758749536575173536503715266117952247107040421805030857466976196252463122285358726229454352983643647390419361788565873392763035651562389618719715252781319594028599528870302640771571725077687222313453210008094175761300846292569454262770413904617392329861659505494878062830167860937777603029697099890755885830957874184110487018049977726490306026861211372469761366246470676965597412256126077899560906348350217716522341866729418593503736667416840371344562745307379476706360277125981758878168596962663056793226480698654647531573696217920962635992943102347948538350287249603429618019710271216135087868520959122886508940967964756434719274985960155153163911650343135942857359562463452857317597092316143023215347553515374336506838696203435974700255526535825451994065090402148758201863988311182456215207040995120255594200546842883227647583214004602094807332833517669165431501094762213159104096258996780328473297480519581399975289185703354617089645115264373575049221279758613888383314834328376468079256499197612633316662207961211850833930144916449940664355887603030315768056380788111290292656858036615696306876795699087488179201729465910343632549039371058083359507849141699087174327172237695517000381389626677766009949766376042276327409360366158002986788701842994378203782148479355002151347605604581410406097373079464904309999206479246602919990788512582558029003581132518478383883644523572794589636824912029454122015542720104076001245493252667898913879994857635473850578329795878787275602004045114967658762423678649852844314378006121337462663777552645102867639650874773881165850923409337241153757038292163890344078207200610239065689655305057341353392577176452492871656692760420769460247964512495017519061497826097135637897508856921919990697742796501772417934754376933040315971698217957611098061057773566444570419295646696992767245207778624828594002354052384496037210758341269631128752904399918365207371960275187054906998391493739297617260190420646256666353430491701004489711922528709460637917298388218805658882901855369681662958787350584347462007525341322722757587879512362101906759432088910470519681691996924594848582317677983299223125414040399730296867723625549025048703078809989350500551359596618273843718110609625926238681474932943445551605541179104132123214105216207241379514713143256360402652838403245305565615731972419331659777186577215958182200406307713781194958546329364123314967434417543117796774412590017317880621122385274625661690586443015794650272148710141925397158799958075115441622182623423909931626469021504755936843505567330896785596515007131928496252663600712723249534237099140722999053387923918807542517717688076584872457836762334510410360255855290723398629378061718577783235273946833766281841360123743155312790987184300153849635479965444501256528032232478246994694010931652302619894605167399992121215064694671192271072773263767739527386698973760137422948101457797985536110497267000807243818161552967658407193098479147330006296038621838898284107766788539880991559101360122218875500722311236553092439232040000825021360099554575084116006408312813410712909583300293167126323020325868024233860099470737400362899685380642488182314377753941247630962519561992766263635477964142697770818897156960427529157292427218697289476808070549698301710373726674936082821363164390821954199877641036067414348056674409083954941154865813467479193842022883550618690075964924929491033417107953661856335311662259209620721804720100568920898065769350524102409698484413151985975208657013167423026850200593356711179209694875657961031715248174934928768454233108716316710367575640923842459120472443855296268811188634437663946762117292346368167103277620310869603773237293169887542112071904349465460464725986024708655221709813077574123841388635401328880049375954031717988239211807557188204409813065069680935064231330317400306886049623384403539885838457397202236581216668486696222807302132096576200593585783848783415177952836797581131413202179690645264626067894776639742336757444363473942098749180143368630912472995224256981817716262957422095337743555005610966299791971933114574146280898089627887080185359885079871127390582235893505267099475009996498393115625271103940378648293676637881388540930713119391885373159326737669340189589702293007675052171725117076985040378374476622448105078857636690481875218744725696013319982899901418927341261098607556514044955096025628139128885097796534942594936620679607265033564469274899510361034397930974416097930620562300383976809772700905332287979048891626146238573307790587069781327550045548736162167092513080544903249668923404882408515880747329830470893387645907780634258941483458812292796375190645116136942846887477959161324480832749918040919239545904252998291700071833994971500447523709857390597280957781779238226814506644986289095599017841272808412901002825514559167230126236942647781071052401236147961462885785994311274791890120104233805449244656894334631353445693204165568893601995962802923659150000797174993860041338293017878892625128799344365095466653516477689038419400438111944655869305715526847465459173391550549963678186273465833438814797230211114837624514317381506096846005095449708776452407323995060404484606522111895808127642467171214669089736021061938767271683994175504934925818227249892233846651593617367548956195461185618106438831337807248156124450189275199323618148319589898049833584674523329555237171908483258651156282588245842401117382938195755479432886758850230448029860273726416429375766093040049347193410220928514787389757690108715345055393946989846411805020082497816864992525141382592299542192677267032370951937003484882879086720559708438633642289841483633555758927440888947382694741955412888453175404340882844503234350613597609613639817138338006008363437655765845592734687648667394405198643363655888083340698075765301773780447096453992645658227890455990801807332905247997798540028333317047936638803249030036109714018791716055608682392479488739904714016066248509434480468294414066204765265734985649026136690020614433965986633970120117325893537980261168900353887406730919755596795828660992795784029166316420058675499681970123386644073406067370265097961761370994843026962911591847399971245021168986225231021212324377032029530755495733645346784187690597579229222609448908790583746659496561917584266222909928493879568349553626489940199268133401533354349610696130464355006751423227284201665702829418612483805769283103545646744252640224565331921820618749452044375728603230799111784393108075199125326382124159930236747071046785775425982030343385970995748718500481031382577519462352772255016441583506515820537908198265324686406228086164191627618497262930590789896513230211132979732263068551341984382368203657598250338249545859253291492229106103144688743578773327547325502476421994719624744514643070929564731047092298108379230147900115851244161621147897407568647834938752078860342376715084004299658384476253746446565180866952298951680780330343140488680273023090345682574481147033803938501702830613705848972178930288541198368172735800279396225045299901369695800617926908073348368058361319680240449379640519022182044220039905967873980894526103888983311571953344958713578435277719644012897493734971851402491661702214730105006404340204835273743239534298501377424894814959317313441148962692282872101479560787979550448891991430867526777933665780099778775914381938557816443485860040656756998931840472328384718816719203268921112679974221416737922754922817664675552754471111861167790652289534920355504466182567993644107607671731339813418291035825462874876664687186225005106550310745530183656200354320887483774218460346055535283541793229550147223113970781925389398612143105769456247825914058097062808598353752142571417856444860993923251515331578776496669371157865454992988288978615218679089625134596454375080705931770128390116645419389934329020260231568008642272162115122706330568039594773143460489364855483044965402515933259448651264047123949596159092398576686804582755519614820383777030456906869059002691660446604424281296868368317812288312265962456704993548849923758491332792576564526404156213967421247878775318684037846328137643965930411096677986818927601265531998534092260546233671497872430147376676044294182761738794488146692663915643196581100807857578337126242786746247033513883821589742977377866903464302676490556813179666284303147052027265063891363220691952894949225220623335723618521186974033288794907093936800300015327790642232773360454860542930893391949150311200458990630069746486446476975340240451468978445369220225657996854464101350229564181500392399828451651519958463203922304942545771078663513236460507437758524145301929339476193849763207725094748135332106687327504201644190368854832966529055937053607584881351483021402449342169987526844230659691404042405307560637765491218636687708308317791460206361062862530920157531596914623312035664496740614925521979103101624307206207699985603820022733679455151012581941135171920045267727540246416502982940140196773124315252592875368244294863537309981824142585122693295006699392775718355181181347006050020700135312821015417867461618451208907796803171689352684988951082877900628812988406572470798819418409680136861167019661855677904898701239479097143336350621562805551983795605850661696466484249357373945933957751581703385156947307225197570433881591405677002150478891562534830270154638372167607340484776354967238664150263868250572849690157555295072793955361574112153964738892393510714598782411797605263909698203971836034992845059828785663986010869920981918704181985266923059968786476497677327816696637794416602905739995837172652018260243628021879012887131752006766940865596327792318317157490067035092774642822570239820124095848721573555710845619716176130095567832511080300959837761083726102616953848114003400097094669018422202807072980625261653361738331835863703602484322611013516152046682925794851586393946246599588688782707644812406037428797020801391337133024947939000703688024958895260376019902469364120426178707905590135720272165820641281024711404595222351666881445429393570277529709233793538562245318927683004976985540103314743188101890579763431452150285325113324243870443705459908970520357199302421083041581407505307873869274282943479661801524179316648378469432114332757710942688428398987343514732793674003497150896549048106136843365583849005917265699030200338083645996417848315623425748640604498632504749481674487829124496068294464987312225560395176357670024526575890073078773746041358585994840397293887299682873459851591289901163506999684130674680695035928405398561472753673335355797683771631071834806659211189488378020310151503146247655369684071403175516155540832029708063675147551765476452538606330459124498600431329599062426583589349911008407614257313102485521405470781793442370816873977765720378989768494938509984613737046397540327063345203937342427314369259343303527296063283233592795562756655263482017367696005320091789665001889655368625287449068905354701327190491855792954630219719633082676434601670779590429224200422346901633197099091866104552097808703043575500574364396410196588102967016514770939249648428643958075457046287051135754415050354755139074523959580196288619338218434312682079624546071598324478455065993277374951179647770731352160326593611542075274331089007534964323682000888178816803428624977715188115764613733716623488226413899108365677225911653563384213705647420929561237307665173222411093451807539306322095441810062828567981138841228589673363426120446309182004654166380550314165897731662504268933348545080420504595895304095494719701811300652493440656602999521057885783021097128576560845140781732418944210662668959739768419536987727949418260271308381593558102528526739617666903673605206259710279372759000199998277811591120853172012081527218212151489067525341191884942748677292857891186908427026555561041771268083834220808869889491757182651808536568431397182592027280263356100576212140623605495002954208088876812027577479469634684498284353276167021871735164331259532286074672728790724124527713311200196282056522834704663679915841188088115377402553300745835637887475530900759435273062019420699519112128920586415132898477742391273140101939625459535180570026986886830536046413558996610974335221120242807759554850699157669487336804439397002026787109707978418199537190872998966011318553935455228720343617710056252285556778644024529049379726951091099378752440648975669628379123806641351883290565470272157094903061873695438642673663750127293901613940200947417972042077487736930766395213912923738517075667320830866572445515506106569755760337795428105047163041943165822312695557801715235441195760188875780963213711593556452960017649376572632560800685890449277386564281278156753769511185376924661267358171412238813647893793512709903653328746133145984899402472878192643673232414847393353863159721858487200397737438469601935765988506694170770063227995379177891740317802151409522033750759209319879908613346351272946056302854740719615623752139808632215600924693162183422839242871316768336692671888647459691337861188063913709210845622326135898977875008977875559500242479772186814041373241468095271872807848368597846772033182338807784313012126207528260143191704290702412798522517988807453505945955247192284284522065094046392250366561086872652794775291250350247602356586376477841992992198457856001203486878342234446246565546336130576808723039607654926776466035555896885972056922294940344910621507241185317785620953487628399327553615910149633010832171419840424709398953510811200729096852396318856265052307733194735413895460417220881206231594753992321027450664033145825548178433673658777515108665404984758570850632750183466078524403260882121551946640685601355597136472887605516846423514508171330577354766171239639360499244918874089747450972045886354145503149569447407526636369962124121876717057565386239312570123626349078831809071210992759403605963710885118082187715007088432915310507148764080863880428578074121013923340975117585973386733291473228705123044183605595118033070171131599049542982640521019080501157437265573640583356265452305601666761150755075774954200931077108959592063379226730285416705842178733122415719046343736173493950689465592040614312694811722354005913146656448211148444363714671751690619466883304409204406734358833917403890824820579647189781508724349010144460238064987609559846012365604120368421384921570208362629607455725194003931210636687420056322471438187263807369373162215797182192155299623229860997911674794588541446418855902127421787065690597098174233109411887838619636931930906042655412532442973133764531776510797672540752195255535575765146111646161223203458397328009802292368387616796795161852014349104659257624027817830289533403286852566841623362773910598072481567528263782549607892831085016632830403831169337761073411226497630257205115921732661792086932477939575361172837188546799782841720232436904650548374774412092746672770845244677162675201836557713520934997494782419957333195605886055683893164053429656387552228160222019265827357822210720709248302681731869669774983233161857395861370427846813152906819032313262449484881413554200133548181724922973839665508916855477217729726277832752794693598666257132929390051816298378788761696785019472483823057936273932516469261369192392649495221984679634345535558267670193288252175919868222623519483426583793165618041861688494896511809865654859993468190275210761440579554135005989862570097164774296825499284888298968596387792456363964408134909065991519869334583551108685878164510862805056560333766457369243614034103838183559163848606923224516381930334160085666562000504229280774193469955070372764409823039434461622091289668495513912111488834498060225601357776710096366742655992247337976184908870482669840044465473688733414683960931709574381262918644549988100836954830567173223187532611698813706091414841574233609352566551633142044819873243042961949425124085549055744864612164155669391885806430032376645368148244877292088721108614974232431909007816587190311549990306780873673415892377208738771036332554784614493574162125458278513873686075151524066032296021889349751351029190048966553803567540414364146025152713458940923174647053313991474921859855194545698081452618490928257441774231324487265643180390739707975336467420855504034914774853055847980849082654382746592335253990762478335891785987264285605322389903041985475321891330568265384268691224171153377111312419493446365131453105719747825506360506373067677782970689732244208479500896222501192850367667777928401363047025123597907054888214155970976429651199737040657451625102144354776480426734665541196339404074782212217364247679493931649765391977062249466121189488043465186926460285092560450963068549882240914849742270177357442561165340276522760634694014355988846617133415355903121460090923382200821898522568980869694973319598755848632622706634330659288941951737552285052572287828371638133682072857995169384913976377434953124993257290045547234397178709119043985143195796211840035952516427482970051386672336813803992093811155113318383575859314257259779263960042987066053362977092358101866972991358713768714321211495379514463442561055526614479003683656754691276491477060461113312427788762853799397712263724441922992486699587105047789119779971435520657481313129374647131623166478200815735724761535327821029628042668148354510274185514678043205037371942934681115863071267121241991453261925798978655358815177240196035186967875578269950923550424640152224699023297785117242338386092085327037875756524827562179529150338949384973476072778436612685612602507903248847232658551023760251697741735647768990569627731568003053729542421349720617433310519386870810649897597568948355369602739202154669622487500212005516673194453296597839850928328443171056055005898534753755847369229783934860007441592716895558756469422043006439513155609885393965785912681202340291267048441893699086149293352246910054284825518529493845804224956874237710301778812238925453967919094506809142553911164352887880323383952619521500166374366449274834066972306878711333341649834320380689278803506433098844542636252036805778687865745521004359303313061214325874482917089753256738013621813195467440998595456007412139847621774144157236890672596464654886117725451115608732114629575398072468187719539965897939918058204852269227151499415828957558594787208180359583173491518839763131076785269287557298926284360288947203754773254641395956978962969308011076797127909362317906055587832873328767072010695722857555659501424647195503378656953286142094483925119284212886488010317361865689945873394279772166302250029717072452752226832210809942231373420885456374322110408352534609177921143272849595284654737722489525098933037241896130098628028143005877591491882264382480247182256402658259743536755072622989518609512898356187602060164423801326869395976802188662191190625258605046412972350358712093859403714267150439031629175552617538836530402904069689118993379907620548911276023393421523483813704841173306183774233903781355449432363174659554459184141997804796259784695619216688236320735433074414919710963331188424270156018410708162862458879858256123289887763887241225529633361136169447773450497433513469799026157870644359293381409400628955604261127992846504485666808134821281575991062370301310312406043517662323963459265829296724720379367243478736746447675410677224592411300174542921492050088467684608123826096568968024275322067496427099855474699005874549832696249604363656868263482958513239932774708834884668823121762341056497869006712426207435728134134840333226915650068528060706724708665564346124441504553361124341841985763515697185724858490404638911832396959029160695361124947328680033060239457870080376825425724188283164952002246382088722839494343955600063928758244557166654060164123052190759953168867982670583410981165822990205921753331975722887567814082346360547314850095177317072855228769936361695886313173516751431597964742778145335948778779119232199814642531053153231798307262094449310137490421582950430914401551659410235629271066361326979484513571623229626599231216624002747876554129416971638477705971724808758778835042436067934795084340364723946609109278172688165714587282545848681869676221583223119589245580243549655767137255667042472482462684458007689055204963120447557091569018288973294558302207498381840441175070755205763960585349360226103790159021908835750465156732244204347261834365147832720021704974904382898422276747655930929349416890090572255206343657603892075881622322430061891066261660983704533350621133643144121548777727317434186765597410766180746404004761932745826063805421770928001439153413892701550045990216839223266418108949514932364675806417924577262763206716283404644740243142226170363812553223234377389819857680876552422811114307128016625745828263758556672669283823959376445425747349651401355796921398195821635301568624138305306358079362585098917360014787689127469666052285974605499672625573993485369111974925824118711549517117584831978803686940032148349699535673088840056478115891710394488191603032590271070959407950886680951337744551311312665851522027675362116340854456398362195253426675024627691818461485665775229227142539629926027160438622683611057785256701305938838492537531070668326029915259399893676342923737978932001463889152812591039629076375531275605960455885132503001749552527322336764424713804351953263298623743629329389829827249763785688987031960931427616835153463904208552995215299017760391838871959894628568992098359210486730265012976638161059729686380872999798175185276767919214976634288097070038702191200633224213919466424935263082718729316536050231286434244445873130720945212209368169756834591879765614772205426767410009106175226989679258860632883251756261184746584990968518203232506156358891133828437851063364455149143056755227364451880342632648477725837790043350680454405444081513992904776663630813263346823187469638042493829337897347168224564772834056482887462956887450046207990505243717153856750419949397424329789601258498330879579333919843298771817945754601158239226413066065061730597073878720194396980029272541381782081213158456021526661213023053447926351194452197702379785512646263220632623999014653863226681779267454681647956038631472423476216727724091906568571354288858226247307690889617118458690922017973684419769452295216339642797545804846048720438252251962849909104860791773218556234799102931052137521938222973830269868771681892917509384885021498729623055931230551400212983032591446010907925034198984396218389848719470319085284792020827978924462494223142060774946142365246262241119036826456505270612620785243474505318494396474416851325513577727108552975618925275112587611429143222881943706888585491094110283217537346086807644909128082257577608561188912984740983904153544782264445577800130850201319379009370097109466905280049038102853967501420930633363658186089120598182513919534396746201708617241055663622271048350491893566993991042288660998754167336538921061087287878455394083292195428100402588890463531977197162251470401697255399892808600962957311637992594316736885981788353460122882373656478798116213086355012837992231441688359393658951590464995338715391301860712792232508642990314713732587111839157467503971562656381282224878862848485763732318557519609283554264405884189178984895943958573067479080994321375477556066215187799401449419267996703810224617901813466670147826449909450994055051641455883602299962683323320009316721231354916082092343798260043286244526312111517943954697497456227930205278359911995343392746715882789844370464850653911197184521063781964332935122749450084401911620885732995605735403977935564947149260489876836538385514930472348076766623937868077460704665290150360612683522946055467410193700478480512588635725028504301858812644855400773237289969121745775031174347648668512296663006926845840268542906670550753172065558081290088922816057551038147270320792446684407343268905334197158291926655143240440568041395358958116302930585901230036468174279278882027204021132155394015665758764138983236735647891588997371266347215255999931817673763999820602751539625390115732199712267036178999106390592361427100057337046097971050501260687532366559964644855214159769603535816249283234614684880100374984963712456441036115121395469436499173265682849050761494163719011575692048691882258315794128425918473304227903073708763317641374623562248585494973016029333173661854694470208684969850165183584757830584950581734617001677629621637132734130981730145820016728105987501747349418567018768963404422738976715325095881526820984401041735705632934046557172035729185449749844301118447389079823204458561515069711247868146175022899041389851749200381965457033267808735192069556846247874338110029236751855914448106351798823203791475865873022241201603153459664462728520211904801560019661498868088372114980870257634584948968354033621639510147439929943243947189075961731497212502820672923510201565116890675481175124235543601950518809075794296944256126313707658007165963607377949247672225194792148106825541769750858115200187098034978803730804110636850946837314232919839664972709479883084079368303769979230751598524365541038319130149749360018042613945947112748784538524743778916035592216030187124500028291723360007271323624570876279661491039925868291793253959082521380254516116912602942703199789799304441601305928244272614381764506824914140154206707811538560810968270941807694101507150659507764158666728030855126327089744157035532616049035698872881453366754255664497818033931237097908049978844817582866660956637963728698445409771118778653785143837388947062372764755733801795048988078050362994198959959187733090776693797413912019720264065817742278828200120619860251131401860566124228656697685388442839544957552534838923205312886878983666668711569823181178722362503623340895838442475861553574007737907484458977868182966022424357520112715686502213667911612040704715451707224945948920972081797906610683020282483738262481279243314907752512913757531729865890206908450190917323891568875097465868285019067128675548603959321523351917021169837719258737960477779789908424682464437332080505689021191816426532563987134076859334376125000570529282688780495708265451932406286662404797147931775001559002117520786345065405399310906347511363665565190035517939126326394920576844580025564544953256182005888107886752715978820749743652446147228941328094210047623359257891990300415003285695353730606930107837445430942865461039954276652068745868118918830698809882411478983834756032683497584128274562821991262807787086160208270078984872600858863050014285881487366780083380064297267470092912541638460400188034697325401068051886073743831217467703794662123641194949886169041960898249141735320562423999541350810451021316010245849505095313514479081047939173647515970238277385447784147204432192704019875502251426802335191817471109316306319183105963089352646793623154016803476200323152796419729117390008828890650191297095953041196926335093878410800132826789764620862220533830733906748920926945000060414321558300310648295674053798027399036428754566504200403953956663407642709482849296767395574497524752910017954721582612578877815875289405188087679559900594833958104677148662283725910950384822771503277238740939673174091794435117666222898501070734855869934913605933498598427568667717703313402532938962901916491800623445132609207718157897884414746184882444753377312025817505550119985700178527538843705814914032591588799213100913320389280558754718941966173364638708862549991736242376458548972950053636417353190369847584674792795891739848498166700026282808819663222256025354603032501005754806711149977609414114106512023883341398731447074656103860819898368188117487510482475937370209246619470358535169198209352525005718724280195825867689312194036402083558695788628676582637351960505855040114153220545568070404676656856206539240298845291537007651805860955797057146934139845547927205986247088533953589298740205864868307541460286449243005452100533462935132766343310896176275727640183019174367325730728417102749108825487555906515638405293147147787336018642854770054843959942947721830410716020921993606173862338643894541552543296580328749076450288662239423664758204896852423032988475068849250629849063296271445261393170278170180721159518824471567394110544312788701651684055969039455693952910287482461939415871486287951700669776576534280301682722672249275321845600176620108094075528193930772514446466987284084611808816077751801032353533822684770076051758264530497623661494221902770333358143077835867184573991165577764305597622040043296872603138063599082427144534362167299418014006722005557771325478496426048267511213021121569091316161593380983579718310411946854834072103860458297998531802220683646511114643696682848808656309874471263335497923002800716127695540170161913705499736281638672221310020950270758184752638532338301432159444917717499021978717156051246271279792180382687504363192739825095943084214212789572950932484910348617241222260707521733789065493765456150259654326677338216148297572691262726600545978076153918896427964588640554619450213726042905032408498079879611616819526240244064276770260843985229924559900822343150002598748410266891805998190751092086896677124353915668108976534246824976095634033539668574576573729480282804289904917351674408893264972340300920101107846074394364993845205991265249190349078590094512609616499196892689810051404032918107430601831691908720244443884894037709224399604949768756729467043651249348726519437838320000315591666361134230610703742646235063114323521541058683346737370121618189165723011655541443280521009083288282242383673915382931247547908747726495374570609478284450443422902083460810075729221666220988111393078806606000719962158338858744151194948318804731564796994334773138497566172234983517358458229894171356548786833571708824822950315900873162185593646193011957372184461090009582107034443657327981872961008656228471784195077166188791693278292696104963235530294765060211626541916472810395177826201333800866220414795227096076109545318686778883264054957665392534561552913334089447220736445588810307029610265520420571916919839780401572286975012523148919994937443253002911669588663864354607067667861776897390906458989611897604556323050610302273895131902340751396313403990889006168950530028273400825331891553618279308691146116399276159221994445916181625785313949783484188906109578111756398473609369317935015096403034511757981663759170470459444767052611346510751319966094373324429301879197621363022447518751930427535642765965490555754341698638484737778141840996908803473600196336301477339677102467530714873572315925114786343336639412022133920021340301924265258494616185950915958548607777725329155214894757063045900128360177265851130751287643531876176762913865040521131238766716969961643409306353041882923127878313035775317246022480340610092566785778814010034861558248588503514822910742422817468316587196547110814928861819780888142314409656989745654930596711245795791835561825902913566281636917612129300973250206162537311666569411872516885032608943184741388632667613069860948917632597406202245595755982909746106861204861897772351591331207307752451330472594726901624242628962487650056363652212401522233230954034619479243602017405635925906272634619007380217144567762603440114205533617411933583382359688176596818186542416706698133846209892605319990716586902316859025344954424695575361315721052977111307526238506985817640948197766455664718119729057327318503478458836822761043287437816190177976925277551723802483746179013958879793603798989736616049808329645121282425394643825664980069792831955197802433163544578414391067642756711961760301785341293227313652648120653316661056415172758642425882424471630456247824535833243137991675482304308574762384200740171516491420197069418157620311532264654346987118522156593795944683142423615054213353178152328345640429861100092170205086752846316058474196825156966738684791394952899618022306831745029143737021037514215276957903910602386486264183538057787426348017762916699259212860064914930101029739834097485939378654778310986090540618222962139019083394771075307561223919507442411296876374149353660987368159352275829659729976725945182719613802131579365277770328587936847126936283094132172572127171671014607583888916630236538570731004335217191596750316433130431054512696391486658630489265962062143167245945096141216164088113939076704404994536509929251590498126766479520165924222237741459524609956752522508167943613425411506368053227668004629716531328617073401249614229703775908395888404833759940803121794869547185321479643989616663464266224957645464676963182614110010385892313958258337339648245714856724313425960260251276845939001373129798975704446712285688713032398213835718091335163244183497756114820172081150098207683737056323925336699712192231277914267459114603437685787573049278968355083409201753480094918977291490912128251761210692505411530859469411437688387569453501950424402228645875388988263256395476900035352784831512595286165193556162807935129072732293214024146033895939804316696367463537801214582728171061121988549082321409954327111461333418484342308990688145553143131104222714994649376577076663816084527331449974823792545779163420970235243506162665506197202395765231971079225411293134523958649818039700085146305221732213699070124457459655149093759833538568198764252052072927725113934866933046073135251590038178535526067180698452435216635363353774521536631419614532211271435662060211135364758345736159801535017405722167866324574021271278715821764883608868804420162459967874508444557778367441231260749514044103837930928811371249266507364126231583303014114225617706138278343193272188591947533989521957726558594096719301372660113201306502806397188831129361644227375532564731827857419732600876991643643403122290797340084685165653621605556203389588096945737808754901046979829539337553846352245349256293448725544752032731654826280524681075181744704339198401986383264029750336131873587219675538966657044285415949424470474886403504968086991884614378832813978901694229939845814054405338733340558619928019080922736457413164827212428223363935804618314043689282346719025372748729755407260613796251983917906061705366512094136397241730866966183099528469187933160165727379235569149810788833539276177958723168497724857082256006150491690150713453124629137150490699038577970066679147121865962704444483110322333504308440756102745964963758085039290590955619100575035127381044896216506418904013463236581749070998525403444017001852418993522935013162691294873014106551751253778659952783700585032841417414119059863347958146314939052862678010477903437193982037744339052892433041641068668162500316138530478426123567272494880534937748278419144188444702800829353963628711754425491333803855611788431608193341170380304066938879997999212465832965564229226058942359988938767771290496168278608833123319652987681732889911603770786498824874096386622464146653092695673738973979757813407709959205360115795786384837117188644320402727917276910252825624174491415429668979214799833413237558696424358880410538841011491756349191349087066327052654337467093762035695349815821621954048428227717294091586381038870834205206436976526191200232222778849062898008877627572208990249855025895216550158795531690752502830965390396450626981615998676599619990774417645785200509741280277606668703841258175420005796930379967474948270712745108826660960207398347130884750509620761721490535888106053115474971347849731184709549639173783748048938207711548012539538470878927612060804632958104141550557354514899366261647371218942920689407835240120150108681722938513599368707536676084155974574170094595109092928546966915325778450785591330871506731587121576226593195580925426532269707356354018044727499053144980367761467431883261909380796131563137974690750285045030411676057035835259193261800510395656414264726658316546124430881995369695689387682153171957278856152566823995272448663371485503681181931938488181925757024329519096868776128152955461790683954218377611014024299869097353419288765709218296778208984544588328019788011548941065055059785810921446822249581968023143922849268818154317975195298777810004670589093291908293498869607505008523645497529715776671107350101764819325606476119635098868352325974365153488718283426363756688272072898385578146348091765321190583811482823145177744733669211623696922355275072713251878285942109899890945419412375753378579905598729554366490989725142672979648924325463921002335251548973210965149772061058551114639784655673338637591945911776725507575707267223953005511178058388765166658692891516322277166158820299693117088258399215913982577826429989274838113417994367535008883217714072279224758877109119461025124206196315914336375592589393505956381031135376717417631461711243140145822860274160119587458476529130966276166060086057452373730393533703170739335933116392466687656377489056415727897776809565113617849413963765292306996833714292593651087593090961062482077713119329111053596738899845972081923110514175834662671206451300354449092565850010931758344996985920487666608985445428987741125899480517160424011642172139381623485684866928756905587668287157127789918590625074083101832600573693841225553176030378314906617299263964149662572549216579585200492970157006734263915764622468454093843511386296235490943667072419090271875343351590265525139728358727292623908550464104564032982944290783666482092435359251746501865151457675580550242041855671376315346960828792087221622095599497634214978595266434740000391377301556417593890694153427061745804402754092567883060266039096284583762848296650377283692802515773195260049470863242645157320068583208057567025212493580039770817279920546860552238217763865235778659289473321014870248032740353061953589354869771104293322402996200826672892574762737724509064647308876298002102314557503698676563262284345832595243277309100032619545348426591344484535256280246910973061238682265983633175632192919324770671915306872198563270450906361288899256037237648603121075550446337098441694991958926065673008415522911214935884275430056568755267460355910321421260888507091366950999270785069924389589182681449583073319958177423480865197000492536424363969549666877797096573446073219903275619800005250922008749966301525243360964764526236428192644086696381087945268261098409302454913467415401143038034891090900851304100655011755227148647791021268786377858403148840378324774378863196799287272011217844898592544743321505050133654384471866653271057436976203029359655127584629368974663883054904637342793074308930293340292043381293523245279355409199409039758664474276237857554121392206226165294379526544464775133567089017588739964624861357653598621424024010972639453860099889472961320293028442318497437767775159197161394381675096142144995047945637852360410558369999572232736812154155952350617610954514845860840186015670666190211841230127988069278994827650472582533347180094222046122660013651052695238004020955866378202700758445296352631586077451833290272474223510254424841416945235036777434035355993892399174830689410656723521230052645380271857372219952228333821710354743297760877475625886805790481018086117713079840678820654972452239663528917964539619954068206793607401669630802195293580268260523354291073418564291364288670943379561883496741088178646899158831400021751890397315728211350301884841139400618970321944795431875352450288336399857896695407511941350735951373112479989423005069350004824227503966824896946612994841154373366532560848448192177048310613003718964322184039949934414370553720212721382114519254765007631469072796309174372700497889826953180263301100939363031183150291327777314509085539558130936643628976878719951503145415016001071682703962064294188536056785322636343512893897634891927560565864599187601090198280206832673779871086137056152709029790612893968805584419527924977520914625211421744345061910152913760178211691282673346177658849430481928619512206800299591203026743888281306872087590115713990050143963456879358250795803590289191532446584742984176612465107731385908623484915431044827663735743375187108417321822159294038620643986076125390422554933092448249736649506674605465659867175281369400788715570927625759622817519639231239253318599030865264506619891157513030126963579885701977128156881780983445089367810181597608408666878082037772811891064431340318274051172265658596259875658309080909871298378402285269945269176706791583736068507633010927916817648575731909814062615582451713602163407002897905555484661163773032750703526443045288362560524567637796442761898317729901985364736126537772997502627096999317734125637781268789343960062184114136267747932895054885969337880655725137024575336674902983708868504517502233324798146664530760490846023396238770980849417558981620328001297449699275228939530523782759137757826993774397206070376153717538576255515503380822094378929907135966723863730569203814296848027957681396041107538021582536941267740466940082566400799816970826006505542973446850671486730283666733740160194030356370451724563282795145504322529211494576408638000408073849151669768600196680751762991760825925072932839543607575136094107061167811080408438566879551627795865497783740115954988631279704231643781370737901523942094959306922453766797588167148254295071365977009678478523252734144612808270671864658578316435389730103951071629794141733702643572267424183488119321974654105280169910320366538432920832789324071204814485512645859708858716123593440632171141437227757935865228081994225376606215011777318037279697497721282819049926924451538074034739198949778123220529132300672123622849111241597565646999236133898858214594016861163996825821011632153371832300638863186566519283036685629264952069364070507958353029371989840527139018921694858360890413280227094201271094325739969457480382533484154678979319125678363990519657380378887025430198668289692687448462141223419555358125642491956877238876767206081627805240158248001244968829080845604563340021770775210343329183397814639587410588692086164358361315508258527854187226243050671671255958682973398293431376685325815955456089250011619785433120308463736225012271291411943555686417457870124725629195699235594412826204225292607238485320512425902750720806332440340155793851120416081351289699930759004236383478592205256848455661992117749099452164387177596738032879561025614938830860396432259883863828600992813136460574056047836363342129849473908541842685482569187497847559439801172667108503144549746185612110504090744587496193935782752852484229309099655185754465651582520056861273333209781567680643731894033058730705857427325471444480594203162626659818836424350380285495583290116498272572606760316512122809969056189210127825199425563998386586787495765205138089844828993401046182800680946318620634719086625425816810940480453179774483326121894645471111914538300204365728572159826008079807001625233519824017274820473850926711685238888043566082008371474001914234634784696554258449717387459210671484796458168993819121909395386370453149141170269301155008499625232547509533497149186459976202177545023727926625198617980456685376163096508691713597927692795789913143738006922265764559317090087963456641386635222704312727227813494426932752059562375223814044785061606781842881866419290005274735878239645818658791990877946842974437322528731186207007367652731629330491238171374024745339528440945216304475667372975209972029085014723581277476968570285578472302883852265244747192140989457658840230359525795331271479012404857296208940879985004890262614320495352751806820943217992759884536555562623360886562875990818807180469636728973723419961236891972338062687133492737446138801440467294384347674410506679246478648074379155967656652819106561399885816913476024944571959908215297629893768952953180486838586508718823886659402177519108919668347572729087169070443779852014878400120732737308228472064046100849782719875262636405309445386454802067657913870505978400580505988788541835270638969327827427760545545493592821624201395694354537359993970638242746786801140704112300286469643261118966116171011334779007390948959933116499472149442301477887466599967484336206004599005403526141306652267177482447944416383770019878089229634161702749299529758968818526246396044705469982297073961386413694404027445548136548482392290273144298154861520401340973881309398356447188282499788947761274731618058333059878278910711889868434601276594229675049839986642737711471081048007431186252012041456418587622038317878802153860707881907685327184763417419904551316164795575011647364665938868319391698993386440035135278486430722821782288518419477636583070893449570593762023584475013634725250569030114413431094214582296993912414774434548798860650830886449443931616067261310509234940106679863541178150863024201568986107656406818074106907088958492439947064904565455526112527996912790956226833039669190470210118767212768422461653271564138961408280053183961458245830801818958232340591210101543611608052373027177813676105904117275691087403378214899051358401781019153794782096349984747958608167925706536381495560914384638569751518121726867401984390775101765423694407508499879069849994206744985575038324495329553239295437099017941271786944871376087118762619997242307775896548811209041429540766069455821378215006294072295493368320030723131199025562675616072991405408760556153297667043221531142975452414609674015899769895740662191608839952864460644633100283259404327645800695511863669730148116697291237711857515690718203140216267936199004271134441144476599644472823789307217500768525855632704846048354247188740293824492618265730663988312229378651394288106852858550114696239478258530936556394537717841304407481026581188750773808112776068895448438251054321642002199771177846022062078879788703409885622973669685029457149700264036980247087141325260433411597781471553613835857018622447755120472591890717622401424692521774142396458508663948412925952186927620138564596414992462536148296439819165520330897001471394683462249589701459131547364544011120404589477992581741188940842655586945576928658607074422656326393982393479982693236765831489615868125391752437385281614418952483500357773734774650510209876907592298621856120915603191693012373002241183518174206053926914760592747424214924650904216840301595527420782718115523630270167411432192329596626219147161741048230322139671799188426741275416974920282595107584096905961378912557976799303097359416557393359167137128598232273901063204785489071458198097994958919841155323846665237364527499513540222608828507286483390149545893186330647000407451063421852497280885552397423421951222982099933266548623140692513706980058099797183488117486609745089391243510640629729305341677114971876572882590756117582610393556184239254048041388927413550912469904823946040519230014649046618474086714665012367544168998736531829725517283214934192708782159410981875937833451029170566878400117889798002300701189752748124263548765495329823577229534527127634118370251878695282881788880013338180243854010686018162095788866987516616284625350656336855242035975298878080552397430871977680408017192218288662984359516968581613077219989610691294865800577403570493769544085261558635990059494970392560702402823234252929875973900714088297302473193406616316609258833234831153918768673140724689616066444684205909046082450748229240238861126254258787617950472272494404529192948859120330650721736778836723565115366622085511596285115971099018758913126223047373639078775702574068724910578982175951839948004184716937786750652730728713362816013504077030852135921297764766840024504628258788856986625576595281812919385786200063414524889411237406758094784662320362505820877914219890210182960355668433559006762037209544537151775361535709870848444251411742281091265512261166210480774575604516366177021328801865731893757093237000190356723956183325471985124750683453934097655552937776188186199657193692754920007352609755382644647959487707929136347010389535041042970341232941291917456958991917020133555197945715970661983434963635638783195707955576571500560432845448289643884641991762508474357032597621614032906764719583487168576665008158742928956465692556831490814857366785395237472339033566113132372290717401750457780231991643903209706891935922359564302201839036632348421439149307968519973595713422800176205509316028503007223227974793662738708767842628909696903483429165941115307123921241376052396731922357449085594252149954882394971528389078697253636286576905503443258825069481334334795103158095028348048010966336636144330125423758606687696332908378252153411801685447306377431623154315513967689381987978654186248946513133765258074715553315197164703559073578972866140910334227088993306360038671013929023235648737979556610811123209205683453723974748771225536379696633794477886481993923202263492660629224758130747580758932209806361539521959647890468753327227210216744497362300202932303355789006014337511384198383311764563780363315760706245990327890196319395542735244854580294101931592932877845124657734972227364555064397389362351576502278421404820020864599200105754484870573977081104964495143492765778547806211857791417706862075284734942072326549837743319434070040390485123739149044711344589707430893703049272578741316366254155857652335756991701079911608784207316391399806077379153697629395179017703566064808259778105756194986815067748289473087899546253235467856800905481620131168447287632473235110308393550160521281402603391479742168887134636173440867679548025725800225396097582523751371983602947213509722257666868565886943338602938023337170592078788224289959835974967474058444713052380790395391723443564806510479960317333942542053924981295265513270817411034555602841650078931672529736221446088126805329456544734100476012868430545189228045730611839749459633139142759255783955948836218520691989381670022271291107419354045378114443249082935043567608416896263183886900823842298622210284073711166975098920341080120617088857511339404839434567608415600374603201000119842409419190086871979563886185071577691977825515370765259370924185648654325006194296450638348683919827827046952965593180909746103236585827086447287452707196061429242266660161980731077983265707459350493872398304629799397057392502817233538699483021047709181079769916775124889492737453772092669537192650609884918327486575982495921193538284140001454187896050682809452793786520930017787428202895286762031179802573744635821307766286088340803486014702090864541909598471313159592457936566137840988102213300129729925376339890226312783852255178550714478246609103114065468686577059637475208999861872969155664140333036836214065616320599341550762533417400459697420398215874122145744912247454291467574960532289294096628972091666412929413404907218548513625421553406260449394150354779548208461643329738501929681868719717537996444346858259701741603939500486117458779710199559483302695179654754613548429433443393479582134421597858672151969529211331159041942173517123340032061834652810403859190761968762075289563416043295171672953239948519540694840978591068278447430728758164121372100841481186776420796019554865026530466034293597431700638569812675156033641835021742142459255930048285666444944507377101415109089063278278227029951580632159211803573183913195880913892701793318319314977054822306906759814239461978215899159012464765135088088861785545258098780302262714191259025847529497923264341941463043370396025366128471204154701758310832194809300456345409859156141740922786359096674292487241911372165713793670628462998651223423901616295337639727467907264328677680032018530062562928007506080829536491054428290596095900944572734493826430512010646803033749939198806965903699446214470217513173352466137574264523565943062534649177978080364624804670662846044227869084573760420931117699043971416718301384491248573495796913135820938412183246170007322048412558331761350420888279434353591716031401117806620063219961862047136936351096410887899690115066346680554171571256623374974863489215228053830719784174027247805046113271762046678480883097653295495238908594314159815338566680669088547759949674989912253606673955260585885307412339760567646260018453512149591221497535002460432542296203758327975413073027189237201996715484968289874161083418113657410825696609368861758512270550596532910603315968348798319836399515291819649048652677864421068446195387699907559150014504025964831307071444977658392789314212560297804660605075279874448788489845017100658903418078234894472769465955390167509148973188683878707358597395184739771394779962556218729334190586686534639757826313870777227213998312105911558892167887253029635783034536087524752568727276358299040894221073843732161263321736421967027013115205096729379825631390935343422014698236297616350493232672183376811135379575861778649512979628865381746106027365903226602873571183187785720566098604033568741314909029719448654362187445602920588211416625880142894968981791895719786494143083314029239353528665905707763727783762076600364378070772350817071595076031425056475483006373169681218048926930108078385117767387509011761334163390213538977332679901021711172057189287398603419309124828340616097540574871887259344500815351928279483019500387402767029915271612928733519215133989774346016464511876254714943460304489731109025326588375153688619653892548356440954630727594098578775156355655383920631470583370887393767039830491690767068538709145128344848023828993399977335793248306403866200249443979474619498087822582988855451804365117002518574400990210514741751640854088976128172167349047786214071721494777646456946506589227393881595331254521205897227429333245849681816090483569632463245950693286181002863292093798042323183479686267852138932957541447360331305953377347603269716859572654978922782077880862955392761061306305780800081593243980275864684825128632994552333803907000050267366974940902653169688358500835082294010681543435822764073912532715037756638393480470921920169282436083608587396307048394600109699823545559446453707510619246524749758902536513678159682589087430828331778220004153142786634069593512118796345443929724039874656240777666143603914570828151753984565851234550345973564310594291110707928399067338209474175232901491817372068601582054373545239470223881858697513866189919871050343019095155305147159542881056712814826299278475212022914836730333915205102949070803337682550408285333881771879136742703033949221639126067572584261312741913930959434119593803557078508510482642599731005570724337356683883903844397619930373974240304258166022582044707559379895810537682700625636587006204768699810970824345311783772646670239176259738238800676314142857658530015713053688891635646750659610046677924893909765353152493286475255108716551376553426162648284665267409406541272219222348895848289893549454052461319970924129380970897452269983640195576800013808212106742788818160579477319310992253939476402254914899510119439833206640094242574819663827142694682866439950839130735760427502732847149172887036758469810323413854377227875526135554680772752805193738337676617354484723789922067220600338580912916246108825547832751481077797261769828540134308477867501528016822602033322768330190165811809280460622079278794527884136047835575732122602029141102361441261369029686978569274574850880702532588251803598569943492361992180407781282279210715796941434610155140278525820995680191029150827568157315257874111562161722432866840283860945061064868077903197853812692226733887724790329753177506161412955140080301715072627271296618914245474913162313911220873276159665905320782235483917492332276064207978174686401824977215624511192508868171258998938469986790736339075798059311444543464034232623468330861824270142150873754113108191477481865442575879711359463300203458400899206032228374053043376386788958391848091353160462190213625829598295237373931439584304428462413222083141130125928337770157295021924244941529831078096279860907975318549253316284989681394451877649706270831690180039860960273162562176194806694476709549350781685300864792857910212893521480958605058105041242228507436123990703563006443142254773509290207914528683871779045226830107272088654445028320285421632574573770246744011255859424368090927535373534250302928840752873083197075592190139099827414000398879479162429123392780303143944175939594600112268802034719255017547874224377644439697536829334377541293514423587451735228974835361434659543838519602605502999095226508854849929630765996966197928232306948139764723933911243960674316920741131514505895548704484860492274413674767841370382371262250473979726168464358624122535961490681901671597513755042935634466026301602390208913318928479149033546895761523512612562372722263698283317275290797147089662713564842722654871744871413492548007560318079171952106924154770439572947348516514622788698660235659349481261523266031880373312561125431446206344393960508967175520922165984461857574042018683388868378040354607201791898973274641667206736653187971592095439132604707721254831939268347020234001674515795129002811677124845962764010239747018756076362472719138102363294425514264850759314063613026681399474654757207526141587031872912940719836410757842915678647401756537242322268000591446266181564126107382246110844489461506232200293244731431409449367380077123344549687985193949595151920964804907917896988707655901657868559170332036816149445789091830279115479994814572010482905658812971738549196226164060114101692547329174552483960268842996445611264434295785633743585149673868505622232516013847934207319207856718111026134329023430575154929181805331009816673182281046943799538816200046442509756854268020388749115765459887533978693792366199357636721598809514021855678778246650660968456973711723168431475908315424461893996403270567530034694009754228206592126175141661376995558305322994502708792754444642943107251918376500619255669366102474137275327266739848427891897329479515107552935212892283113212391968934528188007531985843799698194414446611891835500566665892453340493164008109671135347145706911814030218082595512308856299501122919319382415428725577396773605131660191032138444693408593072979970078615399645784024266341047920248374373577846701924185930246853958751705963851636194093524805674749609728922769581956343949546300211098330563851786254579202863412165040830818968848093255425698541960282598206260226186816821810527055066150924157364245979936206803097169763882269845034501273588432369152260988807324587257317982633284720311641330866898666103245769563788673705185360858698136121639222131644389409640851515188451209279902427359388385805939980956996207073684983605769900855341643370785151682382964704730084887480372271564058570372831540140205660478863425686802728536167868731199245772662256737373895984307272006664152581108337890473911171098470559517630824520822268585283129808141775163015587760355338023195184461932499761549121386635817004551198222801638534378541899752491410151088829964325146700401859567945634728676384001374130423273746700403526562215941862480475683003382096002278996815642810001355222489856258734638165891428748811314571721045517767808350107714747982952855531566536151230153440665601738918791912341952428897608402770241238582371541395109309001117337987384809611877087345213554715643699143472458125226685500311394491285051836382884433970112016443751952917211866486034885214305263213772502420352104990775606420859871444986051660298091244541295029342392972456484392867456331679264314558168183399102563715023519310446873132650504011280784081204490068442510768330565494587661678376978092377143392727834778810443780793004263572644110037274946599776336086063037416950322766414882218740561416826101927655138074935462162301701073989718659133110095721411389589498477402566326025300338067636035999237437185280002689975933996468815133519223560660760443072577548981405239556362436661955426469038049890291508567625608458165155667479898096982907173015538408641330797598987853899783447180164982014388715340533150441377986977694344576955289712897358994439761859203042877389976226408035516129568110464990175984106571228489632640010100215677045717465944058018032137765729881825660753463655174135976369117733491900480412000268363583384836833643364501334529496376966258296808001227338968610533338282377757680003315425125743685531505467147644828124072730288091361848848640808431270982749120693657433016967273971652403793449206204072597623058640499635848861036367483380188906939221616982527011168764944724883282132912661286880883239835259684818582680135166634633438237218843363112441102318029084734444308946330079878020506371015085222847855814483175950087002506364596210069847916130212850300590824157346062408285530001328766333820472136885468163777389849068810077772706201693412901447043041532013015079929669045096317442721636689713423770375138256297632350926310866350176935046774964345324652509170788601342927916653271425528683325306736331609773810882063360593720508102005767604292899163930822098947745871411130079005454414621176301029753228187110802773510690987712682247038839724167823643305156855072293192847280616285277616598451252340850804833919949929758112689303233369093869266835068663708695424499978089645693481678928889627638988316645490032138678167781302685013213238517666658583115649030022985708517404352464687841778001944193044363259735523536985954513658190452574203419373901338090641915537633588689870693435735342146723060930295760867438081557921256242105639755658616934819471160776172229847455456664455368081799761455328246618074482437990358073099493881697819209059455746173301558647819991905216611806609193323697567584103469554342468829945707247296378058013337724751345035993642026268499668121076242208084942762958636409167423455301595993447771985147826705584266718335821008717018355313625215485794597844244002261990623361786469608981784381969867573190581166214117187463511300585648990968192982986846476195291525720177757990557546604248429947138407680908480902354801376311657551500993996010023600484472730819709676051977026387953134602748367718772853691055604575874680181206062013261469522356906184779035945108144500803313024337294361995951616086716168533604130985443782104021309583642599658604754294125611231375436322221516363217774043968853901076392953419466744841698017814055699229532110147988081949569819795359211751059836004982316570006857800938150185669467134436576624075495138278068387787780203960877519090556622320387654434790222477808101764216768799733953499066605048695813067881302633523902182220913701446124815462550101112568825404828401864322361355269439929945068114313482213636751132573623254516609250669315975124457784718899440248671040876807552761263116359593035177098510872384072514275738878138655817982232037080577796025387576363301274402970833709870106114850425999703790908450612318601054814473764737370346442626779296884727728570349561260381244241945583060827454503686217983465478230725482470065306803297098373231607928352463350417804805513570250169974367683491174628182069281121541382582187594338203835484785055177989638429562134995341501096249270191635113244714652961252718399949362524678493924492282233399152699946417897166924490982540129649472911611006698506654170204209401543502123331552846174375165636042086192426374771144818559717347778489968252293716423703009997390375662659103461593109406659344784069787420677613342040044561345899389745640318253021638099518076587457615709672673474787478332721235072497203959434889172935848009553206737961302761867052352988444915801661906380551331326748522020198440782041522272359385101548143518061428702068364231042043134209679138202910246440890561488491965844906355742959882717799951682090005954832998952845285768880872855103205760636251224580375489507247007561328573621347293608451820899484444228885855085355988715877501386363599873590945871149785399165119686706452896139318576045843529835215447738737366977801085706796386794846255492102438660873562516076502728332181646576629666983707255894916884633220625893347946493026223283005401744435205239771020462927446800298195853614760006951433610976228774085618498994469616972811458025230323466223673867612963066100708748886702659254672882056350125040975834374433097760951031883955282266392008917830908030854374747117757798729505232389923907224226296109678540303175739235466846521261370735359793617541193480869846417483177514865120545492887596856038179741924712135846408790041630613582337587309571554766395731789010710454349108746653916629702890972901736583736148928292991698452562433185224064783184057245551520899715909150946345740696081133598859606600348984263608139575943605194261863700311993244673664974981876337340379059508723140784087655878510457752229173057363151811168045054986236025678014263712874632244480762386325667936694009624236567768667371361384861181702347443789670216293480603189730125840309867968962002753965884104999013741655013196649295613279665681852106668604091136400324837907892959720962846720572897540803812122764984579787320524187894383802991043266508970930991166698037935409008385679924294218292245190180346459020475260380691145969719216637388201029860271839451275083406099979041209263020227640986561116739188729975707570304275662216293000961336092487158577387039554004418108576820859118860518505417575576939397051213691910479657163569879966378304679659468696915783304352343044303256464989713192803364547919311744881256705368482093095565396094315884956216541561629001270552432030022027109577653687551170679036621127092942863677080118414783783829511159368930247297231907371721625250888142016925738405835633479494990553728465566711640760503028777834786462378148989029664638845342306703825254283506777661946580329805728410433465554345108871313623361209488458029557025852017661728980013286397403039442321595103188280836411499110037793837001065425055363737296088960246325735830613007268498064603706642839990520109996994874318260407324540180305278915695392711926015930409604237489997392228642056504054201345087692997382769203365287547937606718456982544680990669643784846800280062225525858738666235976591782867677843356062261486367781428340637492825122010956321057457489194330695274672810643690922040889693932335919957649253031135037123814736277875059048166641004058009436743605490331523809989147752883978156319022631752275995848759869886774732710674634683457842482607086619601434561635586920432464515898268201635331992734727615530486183733426429853347993936086926126646371917406578936918521550248530319368591376956066984414726953072228265718470935702818657656061813238388188940976935602332651240304154546881404028279560770483320697387891050241622929903765215606199297213318415190962983078361567256876271718630670794052732435980687441416065823486072838777918646197361261115233765158549609796042098658650664182871914307609307583633349613981008538356676501853609564701989175503597678839566727473123372075191607005099283869002446287459037077181977181458613264273134635899622022472912846944610165321778973310125689666193263813763888429444082698346511719990647185283410271251691347960721143898149847822493545108340048068755948366390515987417170574663672480589771400163120174572160514529032161929218235337042316523915712950288504634566764701744414945409143018422254897784363948478063580527435571406939632337644955603593168893733522592703049964354663060530358927937071738804475392982562023967521001168180586474463998081984643590729484435283918630624885095867735361442906904886284252836415223385366464034847144019644638194188725590812715012904815819690864285217326970989260736406170090037002963177627679810610047409323145112021996813627846209617731115898043788829802068404366872037609342314212609127543259088486322759140009661981276531579941042753798538793250626792303348747902829994252478916976287100655449403676084322984263073807157507013649902248078810277275738360665527782635871249379333587003397810080313409017251107878219198183355614777128685709675628250417540853574868610989362242863130139923971527869964962196044393404718327408247554729967622216845059793168614758338896601646906866115227398438717268825971128485625361308522961019768175664677328396180337685170221298854247346932600420248304805983662683664660064498112960905070555752950961767103961236788713564262261798002374661415852495164845101263560780387363258631581284442737402584450870464222955637346699360973540931469431710690447474074278617198298957058333508934757798379312918418188516016256176615148278065533807078740845796138194776783666076182520920889550899188156235207183096794702657954202251102441056590193671582404128674859846283511846564522198983694474417427621683353316522898984356219064659724157718552304119881262743661253549611785258755707199888190135641001707830643913928156244713328840313065517347804504949042196674658693472856795523820276331387966006449338833739952445032838074355805360586577010223912093083500434784222184940045060787667154249183251998529731991734921897226451035489072579595665879359039085333247426376537986713275858591908902233785322624296737591995729582141226515630315652345845646145289046119282393544299927142211893829200693880800323479576429795807824448703581371700833306629755685715212126663352332633130573340816778808307942335633743744402093662298012143775307164858519675152933011068784066781148928386649707210685091909815229618385341896508739734421775256376447406574143193414360127385396282311970861296747946015724687899842221051644902849740192318176847072911766735491967299783149620888339599129713511561672944083285869997744114803155864762562470626790455639971034540501876759257869288031180345091080027626770490440012675987249844307458797281697780693966922376572578781130213687714983611972568155789244692804679186811448499616326976064338910884336963611932729748845643738295222997835081678174251558913338589828241302488750296642219973926158909012271720016263846684963883456397444238413275245966371218222613445438093991649206627490175875787400578049252007341446947560758935316928740899166600286652123552476800484076909247867346935593358848137199778136710567330577320427356451089282304437909236318017632776625106186267896137688092617004856641564113019374341862421131866002256679780642011282800791394211315632789859351091345988309308407328636072693417301539551827092877456534616346624520780104205131222619116214866500527875139621330539006151529075425299382974001982919017980575369739664647504309968840112884002444189801576925999676795971822891174888279137102331032800988709975876413635848209729350702679333536790103576593606622451001366503890241762692796791743108214108585752949823175301226961367386269284335100901829559841519958669140127790722530785542475353858383890641277728138397311958010358610587180030657459770118917698470073107786622187770682845963033753914069285776355516989723870261825368519999908888476501568681732410115482588961148913538635591831895666436667222729317888907922407932054298756776992074193665325992815129667810565339876245396721602123894324967109372176746200334131697181276722690839212828805851290540450358473451676275799932154669396546729786595161120292558309634716712899667806944994628307398819347115667658599816704734941858644072100446910616009505155389701338675186444275168168802847933789454158675162713707532772800203285708826034570106829258579716001712871681565826894747691303147805829326849641259134139139210035004828812884034170940700078270999422082201248568050389003321846182482463232821766155802786482575383675979060419892496110003536151397079815926285023809144023713196538243054304415838610130208482879649446535440216713560441728068699957248993899297210083503783828378864396901225560354654758882332600255027041492798062872472123826347934762728541108612813474244734571301612144101959898683718445859018965758193325029258218775483501585779706373170770080856754518320672490349491764887489801909962223836045655793119733961491646139527849049364184868458652551284553011676100356679840016160500037201797427891454473205261991216429902392305449812943483341279817350925973936712251376426231071236262171464182980914059729956356691789842874052004589701584816298478728296545459954244350167349713004650795801848376531919913144284292422360288338884276967175485571351589509888941833912038794587841972198141510864425755551943337420531259882160236968511036912263792295645975740846281336379231608557990455346453159958767698531943942673791989326440125057551440562917947207108389165525185864730165651896992182749719241846059659249002163640390628415364747841270246728101326801346536064878275671420656456041592499647212454194202095522724112079897813144903182859837552919907473037876011643331977111536500485540849454124820308162241591255752717270689057822195922204606458841559075803820375951493057495227687161726450230728326229308070808030276536223359769204023824203222776675699594310138513054153788442818257612690036401723092733347740669844881102864531755747054662785710383881656643100687152581593966854601587400919226611894926948940661137421102025730522485496787484790774636182698365781738531268491666126452445866396592699036591095415577158621060643014671989509947435952370571268842674024388271603808607728199492227233886832532648105495703138473214735844487564621263134339935465987204773051925401229592478872098739159120218144385961410527803244403634993917601521844483364864359221138581513124934151553060694346466537027916334160402147382545021830345782583599978014748938543709493823972598790188662020755860833977599307918413448812197574549876804385349170181180054589230748496172698472395354723375368817256681154270195923148991968804288515775821288256198457581097541026127433692730250071013365058377289009212087618962002885052683668341042431806538911726209859288693914077329961996702189641588582602026207986526474180618754767020897685367857668515226604850918172199134810419233737092556066096847281266078480134523465364958482060501002748486933625595146119025520351080533434375243307318522621432393558703518408100434585275459702393004331439019624644931989662817205963896432521923731198822723089106286050609438038269175815403733695865243080248150401078221505368010133958511319417383184351115930678282983510522932922538903474226116671953076008987854643584067771945053646966465099418050461129553212028005843707481094426784856127650599105591919873404389012217688270748969969186492044956105615762324170203860232001183240206901215770361802319223307236520199153200047487647796723520798343457148937223736051686758922515241904098270054018389504117912987462030876405519531396115694425450636823917676020274464020050666092734393486268055335167359398238643135200641614478826010274325761091181345309730383924507990965388513598751547207152286951138532619157759504176848774763846026410393625185032419315582940262724589482653356478944656055533640824778937780692526443224345241229373832330358878547070888101293655918851440377835990123541939464460590243155586225380365135111094645961003643117951378793204955898769182077964111239415513045991892976603838751794540396834748412909651234911583548057109390481905025263605658920928124560920228506046356662058287205139852321230367003010343900454173735924549340208070395364412113561621844596964905144062414369357513432426311370184141522487886070464963613250444190976295328002818911613173544123109634295517143792878688093613011790205630755185811656607658065324772672402997573341491584319400713496285804753086651354312559353726781257469283301445415044267641368144809207631681234210835943924213597114686859798001707058488833168365078955743903736536669391509838707559799103801613083938720370922015757775105657670607487093073894259564456745477061324776323646657017856769335805842987432187162594956603034358653333176579193768190949708159167442162852272960321597445276724958134317065473045614230992519032556574402041729753188926483777742593489810999148957588351636693582688530418009558926293900000275789179975934809820199689362294497730229656964273716727713157756208339541096304510898522307689022606858990462159739441290305654746933601763467026754343080404714052803973662998232772963979236897609125039163768538469474672935089406118064287442554157358116031022603370164938840621206259339434065869554686306551592504412961798632922645535504526154430378300904455908044370252231252677102957001130880088090964759677121595815481958638099167554056743988974604783241540210397924628853583240298415569904347570753733093635163758599378296241370068762816008920624614983618875900213715349444236629159439049410026654337334710599847813808362636715772432324437474751667989158188950183686290799715812587822570008360346517075791932914896320892815903388926318054209455531503237290464564597023588574014246895102298639558229515599361257025150458294087845719623222805516326272524692227415350534879967559541139635561417066478696228851611715055040591541752822389143672830569820813143025270122846280786815089440527904292443516859831882821548581197726265354971266105592805588411927242412614450557715055794896567794631454670705557700637085157624381660875372247727375831926204197658508077105944810260569927784033552568883543053071515226759105041134763755496688610553676604660492982826549685174251258785864101636983938721456862902793296735167669709164932340649652189339262119789122071687997115660426304262425301705419348149725151098070094627050366816868731977570012876467391773304303669782211761796301308096139406405770865052349011033028456106921437394206314253677818688785289756820065127764081508208216501191688531683623845544789242030243612094503511874221230610595100305051963147505619422662529096308286296160049315433361707606394719675567052854254969435905813501050176197231673392831837205908681899446175761150026361614228422060405626140125234945362485157785629869720086575180225158845507470710795129862031192685352477785487615251607114448732411302711438465691539122869400372706021539495318791570618036619429366225311769384666743653942785448687929270090501234993800884511062898570762710575425835886689284898094084764266721041808967340576218953529374279070730682716396508130785971774378092132775396826990684801023864718773323679082280122962131065048041039953369365037840420310819873297664263847494083504481579374172947620380400968482343231601644761954700239551337287982830438612580756798840938804923563132595148869129463708885347552602700454025042614838809459025780895948600730431160630568463406769093514276991810494165773676654267423943615268272224370153549631677507624426532919688904157477961236967516108278681833502023086430961163556670745968271051557675748889779364806819389271484004924875625214242422826050213108708603725956696813079869441300411482802712614170738445315958164670610367813819494252871911047519445788005674460169639321286128506335228883735518730380671616122467605801997592909633301030870536603688991411181802479204876448000653977457695649810897683805094499577316259858525342944136476749643404942009767315187353284289270173380935922607805753874161614268918350124931509548179939112235845215238338762709638213211414646379062523109523661402323244222812797227458093054443669033439034105748086162526597856370245892328207201459629544843907276454425039522612686273033287409189873680703852419715918977389560268244442361754779086889951751449674064939350096506407013039030830527211489845315465442027427114436314783066720815487575806718453070481658986223859212190459963175963551947686538334575369126530217506924062002811139366973645805261094319544689498632355916367393338972118439535322956306951774177598596433344575880104781403713296005453330299200400167486288505224966901388047088739549324155302882866348635968931384573528312466634511480783975924338956312973881425769856827434407682773711963096659302489923738799980174796002760878822505953003783792508112517886565743230913029104313446846699822056933196397073905857854107740376642856968526689507029439963785961238685845488690524022617967290309222871392016385130343574640988563534362977504367596835707001825030053350057376230327795559338395999473631773304845135182710056487387033028257125291062292973656881809627173212707444624712697342263264571131575530953822979331322137561030185795675541433333950807924603196964940615761629593268081017302291502040760728800618111488940476201029731705451046543192649940164039165707616147804398773560173862017757132281953971704410968787421091209248307263225022456128440334223182705507559746847114641957489909354886104420211851250967877589845409247112407348394433284380849973939083378013854875366497471772599467713692452884757047699940485791361642392877803267642788564775281657635599934809215244164330608264525634550850374935886889246229032570106051774330998470014310634008872262672891646907096013668713895991841338935932380244882405002974319204383203307206973605503159478075814112935470150073335090167693659297398486173248161312327006553723216907672023104511041328982884026361905877286891965783114532265992446663356084860728588975902443308896714721703320714221447737029973619571133133266662442233449896802233552136210250902872491625217769374242149135211500222142205352485569589858079175267471407838599136050061337249258861925073664177419518789384711971344889057096506865028564736927599722396128168247401988154609540126856190416548621526199272454670549562829721035871397815144642087101566273917482950781899661917095606877488314696485696950482707502257665805153404181566818701772002267212777155047733854468148572537177057300356038968951850127615791003567298013126518385297460193871799236441622190977699314947513889254506775113310106632206132894049021967778755869336902942953035291923310854004519575752018049777121800797543474898406836572850853999983553019363370673182287582105320379762725622668848302232551002164844391455200466325788398799771186144619895994564239142469824916070384900681606620656376803442481904906393014696171056723579808076578295957288606069472050810459978670954579282427477048568254115246761939538142070177832738699518448321529609598388790095576119897875300243644174985318373685035601628558622629195025611365160651041372009327306134795392155105440813358288267114673004645532870639135588103932473614890878752064761476954078585412913332769989585961532252993483184202635828064788633006594309714478697556942615526724823278943994547257037351437605244029511666545831910009350543882571547180860565366227006836654175681096695791186374197388550088711137548767381711860870310743078560008352079304139645960251873901765614878096681865723927576326805131915035920566346322524811460539480103912976931507615421594593499673444328728782657579648368475055241492841722056997898086502430541520924598202035424708353306102592461489405151148502877585794373203542494980212095280820750925433238777074538892505767517179584118392191124844002208131869187363328429185531739005697460755385903971126314837148691211283792426296532932069895767006561331965563390288870487574726208145696613903487205146012045016248633007073867080727927717425846959023092102289748570245270052169652815029456523828142730965657599321145449236093797348547634618841592937403217463451087433740688604402173215489469083985291633568813493750938199118126232368872585449732663323750572821404998311511999369408898528268651471606051316656748417135414613770836440723133391321657289009417835851573172185067683380978723912162333737672447404244839877067676181249418567931438679725082472965506102053687168558836691013156302887945888897114384484867746386232124217590620471522452405968760851109278714625122624119933095092318929544839895356930327815545374423169142924995558865872797275014269469759458262739951395656597230049745904542271896026567058254586403452652536213107715798401044610784903186442581585784192393108055444488537255334351795733712871247300082694036544974307983069642055214936315519605648409956675360704138991685485438982218129732516402238009296609132119554925512170491014434007409444642397810087506796230047755551911883779965617191660631684676274510178002543352464730719782494947142447931174414612983686349412918598054319795523189066777401501123568733498525032251256148424911640708764427758158043572269277877151364404269545533558250587531251183036554411000967848131446514700438314297458420931575563995193495959407716646186541633877516264251734127861120179985472785708213366382300362383492289435279846593003157824286797344604661651276025251415276667598121536115415694621661267815851151128374356906758757809624909984172712283971536050838565154749284770175540031162288620994714073993020623794312060643084442527293565908638109635538688457982676667399513674654960758900297165775748613308889863158041881440110042045431837327825159534285368697518966809847350921552837479403041071979763712621507160610145048836553039957178285085332611358249918773850488223049592426920000718235318759517686105432321652686074035383920974942467907533381350332508289323843281543654329044669390392037843299131898972173253628123827531068898878419024627179343875541268359904414792400376289950660174207965320832899353909267636915620673331426117619503523233954732685563088239416498438667871385969374229928214935769697953352435916450863261775318215089541580184490795372246842560347385841473768183396946032177178768036034161997335636985996575724685477702510501310245748503680667675111716335184220835284478566853715706935252224846084055879154778002146284420140036979095425286443603780537544615601957052574942299013057786512441032290081029038705644778297683209049029929944158579226767275805145385885450509922750149446704052164382658692626708765278948502020240450265990581206143535772414849493707805940294437968652341766126055262791703795880511226389636822816223411015390846750617633091900286315446017548726151451258965721314424582663807295774604639620451388205407662873030450225433054139681392521797088900793237072387650604238230283140055350764103843955519677698362535841227388820887682086545456105407006946425601181632268698642152015840454534015148402980523289105942666117267535683921421574008255609017767935488115152589133464567815290390847961372497301010618842491386943499837887408807881846229959773248642238993749004494523843617989490765087883239019645967928723892047778632789829340719646722107736579418562686175867255890111735371937445499686599609846184750720503919722885152567023439222334567002435932765599347262001649380598788975095795999311910944993513633234360762637652151660247401785855763105483912633698895135075189665079268447292727616970679105692991552923095678828092555956740528403832468546623113090689426102015884099400055641137058104877207830504524826453768238243843206498593714556025278024631272859115100940891188241773707863132544353288712180983718381448498826647053763972905648115362423482122506944052553986101321446717347417769428594320930692987526931879104621254487275464748861954872788729684066194809606589818801038829071805118212102369375993899165476500912767467869953214333511172814839031129228051913186402931073095117941271609703968157587824602801566641578361937810968872406928400643705265915801323020674348292632186855385314556244156595786850030554351111164979463742872448778979068845586095337760647015958994607025193133986635075462038587498352962707745035577524194162898597870468601615299696766835009601960769591299589787035647081909640331226922499923207376735728104225731492256718560055748267683968877726689957912252965648961463632525749046869767702740796879227180000782366883285100470644187647186151918110955308994187635043268623355065193458304853811631280979823640720022719583958157789750290916601800780647243012226792255217838846416316794901535861086053815561524186050457063627894684720550691802888111101018514403301491305709850328462420389531514636162789895268838621850184112490246916785574939112674761402670689508134866587761627941738888561891269078473914988571200322839937781500806693748314885047178120851260457589180770449781636957902315198332006664686645164729616931357587821313947931192199475393391207516819536886036114484006330661703138238560992740643502794210326264699782216297444667051762357340869403359089107558119689433611001273177671833312582653713365010550600816194782454203352935913090410032967932144443047989318591101759288039407694091823416561355807867254481834389389294474763314136771367954109888173676591773267119439331313001278845055595519182677558225822849838714423660040126079082592991430043665953165528907976083008052383106095311841807246795526002769209468039235694751286991516559448911107802418227274001360997503117339186194376782718584100870906123137873189324387375012673581016690176172018297190479731272463492311002876539333693622330509404292298758758107737830046368379424292234230493276809454759644664551564153182151565274907149596357818389453202894191359057831359997531772001149890778913936630449289188032743531428939661569692267656952558720692596579785614656510528230080103749537532441774830557185696657205457591125284714685602822707337325182154831183169535223011647746799232515539610833786883636199623255935812113256219511242424858578961581023464894291458847035814809608048141857788223304741352993228591427623652852372243230089824827498817912121466799114489811056212995937321930930203770397346711011466727721634612488459883722208606054327337170410553897724827438374560652709814633608456932509035964092713078512473822293467160295483303191694761512579056802198692168267553372296909236107067989405098342218725483871145908176523164396734121095094149893075402134593655356001842708626378717522413726732603914806847537862412662608879519471228632308309307294868902631813253297017363298794140395687525461587852910812902799411535774484453421327301451475364091356447006590493878399417295362219921660013942660377624254689661127861548238502957820820794437671847795434768498312388374711456753542569912676413466738507701201994812460702559965160823789671185559030561815103986079969596479620761798429182539923248340740010513907112908525023075929427744258417172985898078922554251438388441179015627796248167852088791863691384242217359915211685336699285313262719751654479711563665835204288697216534324687974301955942582877217066048863932099504022187013019963392803824026230883442269935499355807670683598531659523465369613323058742523957633595180193207701811561371289416886779253158445068608833008105055518370242759599618652558047649390768385353459152316693879308830994015855042570456351724725744725062087959408862199654168420754728540369521336419087820471557159869793804978397539116999563845069318180988554488205318717635690906690355946345401978737094962064983485002948872947107419183616768039199833682732248437763061647913197750166394899314096559086774241815780085328067567536113770053971307435750614298595929365015047879972225523556783649277061509681735423543443369580407199243629257691633939407550877437134780747632191135978730391507756264351186074511244854493931723961316659424346870069688890760708429485293027176604349854716804009145800861397025659881019829018146753224162267884507478016170147138455177613444024848950564348035781434019382755976708562917533425436111557215590268260596688766505255162151690886686917554266693438728849236670869094783858309882785848874075539235553045307563110866146058912586884017932221013759974832491828793562561210018239989936012149367639341080446942423786589446716345150359596300245457976602977189732180322170428029255926199527707142791042106601216148873466749056033632236750228648303754062734629857106122072555780283903582177992823463782803083705520192737373048625364484687530348783985104024028515923716407224434248615536703143806854934942055922959686432251315848250845963631521556904710060974738393445152793689932037148265421518980666716150320282317935187536755021727857633192078558939849503976931571499860525996209574184112169930509900629450660192272031537463257860038585445951701042088500432834242933687944349616988066988691101619638091515381081964661932982673387668850027144693861954638639731411580845060254540846690239138977882148250835540876053777718928142065282179411374766634810499144985173381318154725209890703802379500143510467449184346836524905079743152502225809221812365665584461854092465041741023399254214310746356646037378086454380367927382780887443943090836616918646167756431984126578637009308017150109092083148310591578339961382711168660439246018117394330704911144841043873785016536531618893812918796671690743757720774331519709392889459621164782408288240383580337221862563775444184351854093465726470463410466499283681722445967120715687312597345920375047877387906970048214837565699851926668177741209182283730276892875375054151065352885644425097727601568603002885558255248389906983748367496607079778923593063082764267596719581489161988041480584828999068360623431502247275839266100389146599320946641819359679051417771177625770872524329417892645811246396310570454905584669530672545964755711478996339300022038773544371414355990717213870900453583799420240202112035142355989588084109294463030871463866214651126645825553266437766816533544121754164018838538664188301026711593695305689140417318727999560705332497329472555044136576413326142132168327669228709566221469157589970113125231068132960815245538763358601965880855879942814429627844943475510513100810872306674053764839162252550537900897562047428443463438031532855845010395195657794794126621019526678738459575908367045520048446837565565430377622241548084229474079055604873346520293122307302163867299044516175516346584997443341123178312499310542086300441558658196380286446150616403479656701971848235631016237220787870892816056034832243897608327836348156422037571726251327949925155096417139755666735359306471917304873917330959577195197125907009513400010432471604436056729145371279431670582682309968325952099726238107273251981530652655683335236431930435530396216003919787499787197065446342849000691582430133419957598215918877208543816876849244823844823290664536720081631351427385576167088129168360371304151105218177740932149755589601731415661900080620232924697769943434384126648929040717676014945203510564487386116287208789131154141479007685408178026046822239437660369595449464450621656032080046906376819164090011378422268539966931243377717269693092493002386164341996457691648747372107048947623927621470484832093339840211493061489242503634321437192658851065035951470361371679068656316504727137712525679548379817707450174390154732080426626791133354575128664396529683869745604291291604245017180544456561907180893583873510255333610132049043389018238634700412434525119959033262991192020397957878382138816299307011389273171460127414863123868544799309340998100599871988532630645828845068365064226963041937321630783643227780037722478904811470125962664223361486250920108127651024284958497610588453420716254362466431529763809257112237385354592566266433594845335253484427174251718734802985164375913226064513241806153633797900362131794797862223597327010476765154043585413844812872734465259454950856007425832983041454103635519748839039148916838158361799388903008155998837190422205865952887277744708880786056600345612014571013505684903407563778225881042047642971189217598885787108969715243975217736757861173618300489321162148278059515058110218412923047467508264247676407717960902154647326684625044871019561014698838542825209601906280144434402967134040144329760011602697788488863243157018214740777000072330158797797451832958091401668782096082012962144165950798198383585902829715450629076780723918807369717846806299798128810500103055701730517430817026133605820168359873062035026259858327582407135845838989716653601726857927888110502545029467626228589984759199554640603514098736814242504214301177325503407154712035481817752740050289700662393634818614590360920276442220727651847438407976804955857050362686578186823738518254222927459798914276730478266541560251902364538040557731741392863049607082141767137487191886937988838106735105248000370799921933139959668062538304237317259274189692827105956933578785051019534600683050837573348764575395568050269718391900747533968215509185298573467953235057548219375247469935693280777091970127291892903727220375536420494467298053197092107917496642459379364578806880304733460895261031565521582799173830315228336335302507012812170237029283096740370170821063223646729283524588053458940131934321224832670294504292743744321152092410356899332170267796064198694571061814187027221032085373948163391491156682277291552131673521431731090860575967276057653014900489582321288779773242990313309660282723829465239477947166464625782549612252904084443061594676802739471971116441771304295360431872802212416266415029746765303030165053547608023737027926129868060956149202500032408204324600096875053229117357712992622181162632119801667893401083705251328851751021814006816119187924061068902345411953470642961197948814749604657207948662881462253960107203680091908597260809358055260092435804418334259034577732149324508675440424874678412627221460194929350356328335729658416106032315999010833819926123327527890364266879122019262478577745060808511410941576295918991186835141686680977551457836875541742291005833704460087575135263661959283316356410865964158247969528700955379115990815227267091689108115172683184572187889526122532777300987228591926078367916590816169802473282075271240807685003618558390958466708920659866330780479487940693608155544463254776301483518515536343603921386366105474533582985386216912525630513224197709307064914140503765682381121966720557309347406026694725406161892862701511624612093611571806272157415566721861154066634421612641950628743530820200564788977864871329699675861073462364565951627923566205041303553446477511877986890119004570398605230736221414640778149799206252240369264458640556220430941494002029203270173811228389626744533571025835309914565998214586318663614903149460846001085807157760850208197469128677368000927233371747816916807831740380293265948646462215866296308375789795899916333847403642651365521919671524012500254929806782319524828732319083356556843322289887289810829405895692174927428355214490659776325640155606377420130667607558969779348924847922778031419046339936350086479323666699826972959685849357981298718598789594313200478949049298071881062964628666771477026278869421337935679586120843291055836118605600493564562110195623401596959972403086313629143883658995244208832129119332141181030670396680121192091999367915002471362286357052383514353585242354758126455366712293122716003072341634078339069066403773413733414882743621030490290040233250113426143347666842386991480049591774397809616063768582625080100532809987861179941230015192746032649640868209832085566836806776292967928635985933333838394977854988964246734949145168956422079459697534501640014523925207343746253828597463244114028549625463901392141431548321837613168725808689486419235302251957585720454895337950397250283957187298804568669054685971647175058000551385720976238034617997555156692817107917261085739904274944646474633236762521836204272704077007378637289026280295904560399784625238940005661116925598678228396109505420528072004979432794645529831148236913177324975701936502852482345220869469681143019517213393939413677035584413503423400781039443726299520390443421378122941421295211740611551050372665925706755853507117655492955057659192088553696494854147329243270031401958597152899930769062528528485390374798268777149175010780986119189362939645247447432415474370893839820837584271591007530549747972701641599662725501700197554360457890489005445452654292894609580557977933513766327204857655742003346310164644351728138940866530945077833921797877407218916467102557917870959338372037374669666037754975118703879122610675989976640402016106136699802402225534510021114881308180735234211756732457639817285453873306054277266035712861013469184647859427517800267825179256547935262042865617883699292523185371096472112289932490367618426990340743084567352432699227195471785741299621378282871584978371350146171220830025510508783110468444867886091473393921883069848009867937970480836293184951011539598982030606827113862336655839682333505609330575165879571799096308788566905396523322361008725724475267099772279140124350051326997216737388980335279094235201633116578331008163228726230777124695062555822020926885776546867484648902937427507994953848224757554522331416839393685520323572430050453733091177235903851601185500320795525112214392398534701142715484097718591007686751003819956340866059299689281481574226945789037843661384881685651191374318177767795748468727471092545399839132776604117203193524140804377179892113720090313759707670181330646810407955727196378008302915314776539581396443169387868347999923389616753837432858794135003447524971354619271715863431592751431925139859267120973606453598497291194499710538282117662368610311009127550239313267257509121510327426149139506662853100961076690432514590335955149974203731959654108774521715080642208670654448578584719012395378663688963085887952291223752757254572112175868064569166633577385488153782233009401571876568323260931189354659446815661883660103356344728688094478685743943386783634615898949727361154987114985702569568357914997908218026384573109442203297943645445450517314730622760626267419649313650781197893488506103107280430296241743536911381660959382022055642921774674311881825336425943544985360908667200798221666350440390838882506322317010581697143282940958604000436717020913258662099408494039108085729278274592077430644875614665770694881542710829859636539935578113221364829091490710878147497167670810193676203224871674796660676517263153875553226786907379973427104815372678923188667408448025281532342698074179916995819776730616008760264533963560074607017608208473640590523036483718828519622047842900505167405083620176423775085284288631118252492935475718273953610676692148696088048378242427240044556716966933702778654264443853729987893168409106706332638089681340841991087293412250512801025336551145274695843199266056255282246379973795096284696224250799820705292606616359599207144620111235512834544528375756481216249600195991904683944305257998740998530282524516459333965871023811437575623313856271251624262126693230663634777804961129513321254789456050552296557542819771352692639509795795686141662307976998416229797585238478824332122527593323402923334928928080557075675679620438150471098013770806715751959578687378527324980612447334963418678143239868410058796615344037584130770816869825518882664066912587289742486259195505464002983340268967462912469036461938957541297927701374263931127714680389769204703544822503510027673597292359249751696507063283807045177390666093406713182558018362200814459350928685917725484181593541613170784844995902022943801301772814606853742743411788178450011102884247940454831297665405120381096387849091392323516133307026634628287888244931168336599690655438399759625545782972300988235282878959176437143342753371101221367938217297530427746054210648794727659283703710884490106028485328039580121408038342119619371022350573500306908178303792106104062763532942202301570188137085566126898157501838037646605553073233838484777786403587976787946014644782459401954048507479729989917139742163686501720381869693676981640264045385101215082044979246764507791454653423673559624935748284719403171846589706623234239379637551249545612619509646652262508602354677184323291220025846029425649824598003373222795797938053428946234214154741018227627168525986284528307092583068704734925304508798582023174178469439476389977013509269986500124237998871489506681425510222398978532726195728490846359429639238750153078592640558619332912171169809110413649274541639865350008725206382952816307058878872294747276903407897254742311195362285835525258440250446215215005880358465861115269226393009734594491203671346586390614243878233689836996872568083531563604426986419507229046527431572929943475563265922019696505719968857209502381245083030415889397633178976975119132717739846013931275836394792846562869372826795932275885640989735902601023923772819413800247859522500945189355312120611680990293171055111347789515965022010923886363516098186027426939025599678335366632160018393567376769287830870140474875322209411222291242693564145030135608327803386277174410755664653348561833270401688765031523794182360082429502599937582731222366688594722257969957338800220398909857699334317204634757748408196757285934578828716253494320279644246311623008191449148527511950034899703510724478518697876938584080055229179905885718102888542901125680690657937118331421003412331658505925976276097067386389553603669830919953854000019145969079254013219880069826968670320864552940926385691970839888120726279960883188743576468902271027677848790072212744992424084623752445875175487145476742771341012830660194035036068760659113610444449959447089504826732223595360456412438585454847958354275571840156504429945830042198365314389301573978014876686568044647128656108325643714810246928253840165870637276043730693091585991597688133837298805959147392150226730696993055318668336343182698119245059437194112226551240345659042741123541313470667356294925295517534557117899931756138627426478481855641055760989186093407082771308970791268108986010979939209225254597551473805206711393147678509354528621371238337627302203620850525958766989949505878948833589043126377607418505067983819919656016436330499708420077656661187035276757300589892769075910263206950532371850352861519905220398212309340643060490850745195313509936257167020352058914141875899370063784658816363519330639633494527604433726472103845956057051759614458990427263995741000191667953658085170591149029307314690575497373485253964346637493804024070921751136390065729246493181201105176536554726135689260882299550590957000392085545795246439167655965060253656396616643281861656047045079525900221138297018162660372268544129300651391067455494545971854202944521886151968605940103194391049763202600155437155134125674778487742926075005123503604890594939753079509850343459222537674870122080240221721118093405762115680194808329061538185054188307773087618043514884474386304021235249421280549829540412266245190069287035613733321440214106541899397625060215658856254323890921420291527923258321925579601407152104913289301344279468769142687136027327649427071625265374189622440439713302291454057552930091976070182544734654400548272341558883996352984682358779750051972931645891873567645494322008711057372661270883292507973677461634696018571782245820886566507492854792844087055120861324258019558240183015711303857621898323274211830333795157180056343206582337446379755481964288257616984141782890297966445056167193695519714711298895421889829496662873907365317611648027271494284571180963541696242647223211707027941446444194745246169151718829445507497581881409037174004330927761036504465679711452188708697244584523112576985468736879314256807137564284342696971311910945728310136280794119199489836396806626324706700630907329581194163202524981144610454040533195796498191304080364150149246483501490900148449142570593993199923607153075321754540388505208877134929708963309473809006336216528639976131886474404049596519063325925239542871658938010480004433567950186649669904202285993005998603014074740093101252378869359378935101561006621223012649877592004975863497450278995930339973990329579049107784698259154874596655791535419044307991133359824303425705809838985217265270279383049861485905369942329712645518301200649028177904009088549485065559506562577129472688808927902928675132896579586580528209728992723630470492285993454447057771074275110060041009108640871606234055616290767106305949027566987459391120223177029602137496951255945403760523323599483716705592448639619652176979969159035910467060800164100582650251844910400268340599469380252556207349000011656290687123201922516541730133789730247525411162312897198370489985176125237060104890938276063728736780414220002263631201492101667089184642190331371895525423803733300379351715259656469513829476875721632409163624896737174980261194019543218726157971678681402408089668980852020500581875640585904679339269926330267642189260660828326739114493535729995983129606202408738552225265311733271793746557761495311410002972836827048670493965270424956334862235076937852396042978295862314622165244401163741393508627546001589664905696821742802397476016898909298594781716075681456301681997053370626975214445873367884116853644515316727545924582700028897814532170420385423623841749009204528016121410039295204559695217377198884820142417444238143740116270926611059228894003259849263059793297785911984114994346504103290259198262550313871208029192403717828206321440551319528296305969234348624743534520909533456377030499737088871024428815627927515483221894535446695113197652275548753693464434743679252978794874077118923720214419000275810877483209324901263160594943668759350053140523468260016869902753955693073060378684546296353436287160973483051102528318939177271924165991248454054475488642350723077935813388194783501501490566607115961138605542049317248789099375619683011770595649021213227098822405995162405331464242401077487880173693764368134185747642811960271285010662517190673642110765787697111405931106771981194353939094859484871887148938905674944899419065891438258407239824515970103922420093759765707160037039197290691600115051606765259249740906463861505214474822215336834225232453615874043583758256912484954081757900603005503749728578783970028346038085328314982637010061776779398442992305201196085913450418955451785238234099495599207436927661548634804079323779742164290292995833113531547371937499571605685747177131511566578198782746152710573315713777220155246789551491074565170656068825203392632180679929930502982648924029527508844577770583177968852466708684287938235060085124165950453964173459374175662035572665836008350788238829669520393787514575643742908019387923690908342144632834956860421409401089383455587893102300688503435000923878513752540960802979457213457881070500442665890414568436087215817501518758358840724198031530017900323872836672456698545143064415371069760633791927977314233410635644880172250874274759833974382798585639978181074383586497332898886232080826803451964590660173555441059157757096854414686298832068922587886030427164272305796867222733424825527835211553315511899110098890927453546941923035232964092678320102974692491875679596372173905544382287343250520380231071143063554649615159901795933428053567640397173599726671393236762837087156421171981065862458859026819904399856148266340407988048267421433643151172050485048761980020592834289724103617537710664960651950085544543233165825495235976852335798886318646676966085077998988309223262672185001190607685882142497556044762835650920612741622162021038757589513194699440365989242534286127941248622246036814314270507326498124629441304283445467962663648674229528943940154377764375658759727337754913162603167990503755885309408309072213838133188405201718902534027277800359512428858923361384869019748331926678880579951030749765149525925082980818621190066142444572734327982764693690277011705057600497063186009412675803054525189772819094860449392162285949160143424023625491543980826381630674759266315848775459297517159791759720961942920582064645111238606875000884574406361749598398617372749449502363739935008810680633198932699250967309846306156997605868137928467811689124379805708546698173393663941751416829087567185412130986123716720782919572602048535555686466791752272155767648004176697640689415531261752442181832124060156445142570479895640540988023893182826073034364526533542567003415654496763834273542636431435457528960412628967309425245842988767917624040955982581745426641861068966426254786767345248186531418284962675588595029363817763756828069122959692245599138430758986138190933991376329495903211169244109892163538033360129142376741272806096275252996206346524746050933230304359676474262901190304617595616995822608363996618877276173575717725556618040822556467777324088249668738237366157128387237435111228172982544853976886183982130465749737328428800149063369804569058480301939166480236105490559238212838262713532427925141877184713967816320238197841754596945453730898338774674434543697568951895197024202656745923958331417862967446965494211124754145693856908756874768349756841081000844398613190970931318533825517125870852863046910002419371115969639556041162687303632802692671956386904376545948354540319468591563929060180747664437827076014775670054559128057426724779320242066073563369065547720436979985646760149969803938351367671173584641136931432281940135028612155168897504979327747032095952757109297455814190615948791722558622317042457879826095250973419051647819146828776344006068330916316891628263566322254252916181352111530711664594427639161925265667853697605277728539288580195149531035426645585134942627703972889977902333920911464580183103288061146092454639722079763821963040311408357883114099239020012450471051029653066849960560584597104224990706703128093351763523960189500326144250758193086620890773552342350146985318133768022147045943410005054128092848312870437481890995941826840448769717138156510136972330163429560386039758300767721649628592939963632554139970605603892794973618540094835977931890414715340802629376441887978940529857161196679674482277891640427430493074240751491990396275516183621578439737347803135064473910367828407599084659922379939458199294369696264801629057973567279071860742710422858601365456526648964379019927567304875249654514987183205655246807740808121020661957003261261489848708989968679329162671324150647500904689621675427924034052006703896453192315290803461737662284589683404001445094222169513791488971010331714996322774730732083134745235925502267451871513823128612286595071629586968840518229102505512432476001274941239575259253424494871745509886050873887646859433712586065533463464400205763610082663808357427741628906783245290804426315705338913203692442693942025848385474749527524081132438595600732719724137670933052982889298122386070854293348031793804123682213903339138162168695221920801114522051563235973348375271230898386131292787350336703945755311846723721123094602899777199295592352491271663435126992945795526385387895751644374591224483615191368640893344123605300837733128830041401712554666091096935967943354552329517537248041438865130771398830679627211959715818151485047423285512051202105313506897964261784563996220606185779946371051215771729659603492888063493565928700645729858482048095464088089826511906358962856045759133371712638003587523476310179101666046076325338285299322790756466561318583316068717757489009941464793416129936235850531753339843039960442374087657400509627166364971919444458015202840090799538184748511705676919267205493731393184032183460573563372274183296749346283896715851987278410840982867983976434604723575249827439248728417304003045887962825628160959393137858767617004433092183520021134446841645628884014231516412868572976324937041961966412299360062755224628424756213414345965387107341195156614769007714078256078948441961258701229528097487106997919575830301912373442012059308655660281418979737069094578749295887924790357560879328378826229353554598341870990465126760735039862780349361921534800949084504616724091447364671954377625554599605259162514231788644937342429340359981342554074137786562840636557348149771173459171061820739137282692651216072303383556808260936372234236554441950020364832416352361851020773028462767624958672946049402563097739659330391946365710258320948778541925341481824114664917526264977523236596216878399796815044046786106940715761048245134787298187421391092600324170413762536654914113901092019714942281421044371408112020337539552258462374780665663078592838041432367185017956931020793666193168624660691190799438508444381258072026183548228366709569022556277722997511531411551630466472627305993345541537697561768546275223942395334800212080870674325324531347728383384690021794627837399380271769965975430531261620564641576843760712315168607330693144770472415406885284736458985607952407490661810937474493863280324236157892097133154734460559624942332952288764400967247251264529957621044351492585965294768648230923630236497656211522961220164038753001129468866354993781796536431004711594338674467562824455730347793218863278760728706079680982688574633575480794935965835972629572365733550151377082772278928145628611346541470160092369733936998789029315814663366285730921738593955097758283398235814754959899714342192995562755486324008557563371936200654148533083171006802798351770596192165941111874943478436411682099086468959608411574230084343112401565027886334890180111181725855045657204901239029865281922726420414652099056992273558206391393984410410653291087177158765128628385368617079266795572023666604024324980446922745861900588503712184136352150682036229191152727235503016107636179673039671610009261674517126520478005784128826520495717445585897306078600841268294375991572530830947696287837800764629729037229282218060011894642907844812617891468875221184059268728214313427402554777982804628211205393766506498914682084116389119268962210010500115375023944449568848091023423100661135145058568853580671937903000753636791733552677763589232891750484947448105254958593062906844563005096394246055864182576131091333539907610603831788873216959212353191175785187678912929317409414082082979411557869078163609956833135674265393886676928950908583266874858312660082826720745258799111167624388983740248946462669307001996729005143592331232334877071358700541470773829709366035116960701600092915003969933605239249899080415480897835149871482326605676835299222911210896004125839382959861206484404827147400077284535201605466112625869843167037371904910661765320064745604526208682569385650220388248874024469238748883218909390681456319057750092117661860058244919437944034641342338711126512771126025553359590980487430835244848878274822778172300521350637501227610817795524228339924565828724019327566685917802648998829800871412102220816355585914864521789621008076911676454053966097308806489577308713310223907177590704428924713496501866214982207731250707531137556465920450373890786973447257561867934413477557170263237477028903310947819484198772691064590924531911389864365295450987984790040592809457780123537046026780486665367714850373259126424942853287122402412047030153132689741159499023086820637677554747072944676452732135051543770929492903776875792963823873223172997101800650251265017620367406640837323709928442214250650695379690720819716174332010957961314494490116103229004780740612693764122376505069801916815843015189594963841899322004466311213215270457292522654093405332132292378735683455987041122898877570201389353247743996304499445965185001886622941569346274306752226037967949016710348880093210730826675555298754060207307571457035423374465327257518986445168315964182398144622753831660339449859937233634704740971134348156269991935256740723078127936267684941366591899178482591281594486309527400998169843221968636508346408573237817373621489667895263431432051474292289817734079751665961330536799984873628192824808595922857963340663898202830533426438637031017225537447544554084512361739700259547861518101775265494452100748511165909862096976106467883228101073740719328933605762122375523165411564466367521618692775370465493918331582389400742921393053191587914154018051377149085433306339773237521141266182000270030540601223379646965422057339277316815113645718636483085537568125117480931957903613969536559180488306283799429806982318479314149290368898120556039099957673716338023297247438581277641658935398539733123982086705252426299007497503409565329805408932407710058463067173917973352586130022152038328087485295476313161287496869371426564641338638018175834060768363258086650455978087402264825146561331911419297709804139645826628916631632776138139658380157285797621642730274196810733126016701915265077758306721399002359329757635357649332662705191164391026880862675103956062570880332919448350246230698348910213638755611735095474856432471033011217990590534996578279908049844629167455799975615985415026761210074325079281589705854574019492297706281904810696124127590598572198214298976116295006827001083233590145587817683866397390962444276054306437063401735809119217341515552106445091679698194317747192995527493485025012369942575419875430054628840076829327275064537881125515930437205413481895528136246446167860566513190641614380878050600572774913422445811147094333283181069251448346203367515345602226053026238920196717922062531444935021514591528802972025876266111183564437301962025219448103939978352646672742240812575912234821639404904238976721648908485667033207530295670831744430861450596865429126121421323577620731664944610864021998742487502567244683380364923681049812055072897837376985272516173497435754514549780226131438395819002062769893511041780569230555811253914873667761650061859304462108246818205412910975951152390559189944940422793498699658872079187097719626295095914695014451042948362866784574241870060288273327856685131325797101904720031222502539751336044376833224624033865112454885180354826177244280327723799961702376841150196282986811142507649616958627147937144426107550054640333221576652730986626132685252099027280843594536435970586176087179980948043169941890580721873118655977135542826780168169285434995045070436255934984068237812807774538803113012250419049206245145017007316836320952194485478904735549480828670290115464482993366138814561810676553538160952676365180238173029335670171971806861436340858724598262802004474540412088888344376669799991131380960913882487536002366739083704830562516228373671360334306142000788376310540381483383603394308945124853919981834136446150644030652566939331365239289116774053137668833846439182017434416480851179189366730564706732138776492774681804264447364528509565049218673797115911059643236628758503893165292046532382120652396810130010091429325620229130676172799708481443867033412597997177372798144271195449611192833010219407839108944898087397585051875080082614256011481750169272192992456310989305656180992495745053087382405709408424843263609350929421242221748601082186405939838543831643145551013774659386479520939313271414448232942614606785041653051327367290178181346031753768077546889435771147129243675285457566118203767573778085379904891685294034278945507582181086603791685628283399066868119765956920584793107363434520963654583953466002448063964150009887066003573690896061663973531701413578011799876372684736827800849267397865330406034231270100254703326667001396517891398303708887788945048670519239265575008617392737728518453706347215657750436789563746309171203048286944473833038650234539379854721472552367350966676808519642394660630167749562074582414160799763821660767009365949607825333702900944375165225287723133108340781953669027157998757810139595580011317927419559710053761459050604798285073883709658749549969223325304897336470838021792988263802320977489118228399003888851147219452175729292521988889519005962384557575795162060938248637960105316395749034461213399138280325979311045006704424418934246786869140639578914687286571355644916455696023562846877792331129367724714451054829669447196944546570274554807593252404899702491849864676285742616184574332869553058556761850825225032433899788096977379087003176799585153944717126014284121442501277674986876699898683126461264362607812525315392858599324160134044468296978279310295299738723955518753113249179764722894632426956169014090673719474335526219589153813167114410490549514458951247648566027891165683335506751460189924915263547355258206354930534222146765873549975440956552455853685745252883512566198502752100073152781370929821399851208153637278531432700791517459872814184685228371815793146093032655733462238318613776275476674846557782937800091866832692511351214940138912528100938614725810094055092017642657558366952236044681914401371871919421403360011382556673225320697710160895298113213024495314458259448361516866849157723581849692429702418430565931430428212692710376435219590602311993293827355163306458707645170323493328362946038811255057529787945355071492206054649006254395145962721169072824039098454962119455032348989648457885990382486458168732164092132735898270674304433867477664828529586431054520159302465789210708465224568300131643088077239611869314346165707650992444783516772017875183839502989073289858109680652131448029445736367042977735265093669925218118868611503096016062333515035782914878875306001829649690462215056532387123727370347442736706824610538503721724362333653957770433015740409308781187645512131390692843225757007961489548773385990518970574382611602410864556026177841014611615923535852876437037598093347008529883628366331376077454296413500379568015692632894145642893925715757631336568254957415959163894713159640615401572339053385107561271090737879089914147288793925382567358107288265966792712260440483065616281295916273998873744439144276185839946484368506591641806911709664755377463462580778934124243191144655861390880163928375378602144961337225749935875579952598067290153950045745888457443447717897477171256620453347713129604622431456385688862097917151097543808500736327251922950045305520476465325701872547943212148669858048932047360548571101081510086293062316051581743802985933392656560151427624625758272891206967275117444039587049144451620442262210855113820671611201160229960573938192617112761175420956456985801040041237797212485266984264604355030496728727904163708210582294501221346078861197588203259595269964595855254684972511638541413942119652332285372843663307408089041801439739556992745616886950480917662198840317425148082202383517280638941742376370091472283300168074857015680624983691002486829736911786978946015722753250311442022787686519696096988436631605048736399627998535292184818594780075848912198161583007543143958456689600863788309406675714098803528642764005812254757290413491580197628449752484793138690567411157374952256740462588168457795690797370941043513976730107403711275375566463137654229797122472676376154926134256826358653913005429721191468356660612030119538706056033228960567932425822569936108076180089325279463040869517590772089973233144691049627580610019532701435145365395112019009991859556747820099520380354022277099558263194477282704951831906577516517641142954859658312762469177318596915323828376784676228494927464741807408572270332665973333549502149460906851233761899205925114167625482836111152835578235415573968833299208597595337202456528811349976427690201723221675401407050910252836262348696399255673264013604143360282603734079407818431307558510359940535325609974209816063705252204757363845926702076236735350346841117547844759432990964013276635642777193244333599805354717573666657648195739683214803499496471599099666502087424289254128741996034074296923621297533097434495071748335550021549150217971022825430112454988840236337476064690291982724676577269251230678337561868902318887276407558440159304394963867186441485527140284319978085845395304922334139077070117040907963582659040688002448787851970905985112799368601135413479265174037966023689989591651662284442683330242364264864442533964435068040326202205098993527200723296122911075775031431201147475471833889549144141681857154608206903518638027018008752333029111517878871412919882060082288399558096799839106362280352231160440264284773871108559539729802379615018206587454273387120579079610999615280328567155140144229445979774252728803579181083761010752885749159478017790533793164169196092722701346999909324271352017325780464500142279882157493284755646060274355724804222558566520913540250055012062823590255184171056323832460183716605396909200189452792445702684336215888638472665795210185197942235494563156495240628551726461195477548894236577785412555617099159600352202086324623301857481535040752151533131509023395238299420821075150289009315413604141182625266230335342611802375966946056098701535954238300735306627583286913467444174102392389948824074109610424773107424342856099403184831238560149468130546621125273351942429285935018554991426953690309761926582432302405845565894986780816118035379923688187315178488433723380183187754702933603520288860228282045337902373577158134867095660886229970587954952351405705460197736030333438727339448494350042051037743676791166828324744891762067741223049316874986707702065371244760283927277551233773470867011591777504553102271976063972767648333907380387249794083787236652059350536638667278375028528024347660071190129894898807175767666236469182917807197991208395271328192731612935405630794581381595756156929909126572597141143555071330316458933950615072521679353363108121788832777848423522736646313578546963349056839603960007134525456870438767511201673154853933644841338326260425716292409225200978997432440464485576865665895389747890508459612230466207293058630086099270265259419607388904351379495156102805770663219952126562084490696874208176467305766276538409098866275803555793749699440152412437725984105033835806948574094412601411978216297576472411249781645957678577804788182123657225039538670666783253366329065206535358236783256618021055654712081605675500144690946528618150773184018238034098879827453862659497540453411301448771076065370848570200298127635221902094531960568252619844442166846634934193798756448573240842773839215622517733366453374970864248759663011678464777972193540123441632403943773179855721667108568760166872380381086765555724852510652782200563924324597890366616749786927581428381707760509809913826752703832731703900312873536422384773633101901768895154146303654933642484357464281377410639483406542413681081878043901383232559079838849600004458750936963301257064920608210213214044693647709508579736360498044929085212449173544110857325494857445291865874777396537035349775512830342042492946294335977865160296433756099904585129322384763816531195303443057297376761072684526232814391595586781149984501349745753902750021798332601630289514463937374232916569151260475587632780452613070616132338286369004179077102216623491694322165565181006670666318888818538154467251378521012577911126030599389362160581898718490750173296622078223241663494068507299717759999843827147007190474795560445647368561118633406729284088794877453838782021898651432038622558038365613357267968105700277746435634125944171009232921283275692005411241132344270854315373957560035823194604075215527671516324236474897325989066266011031682465753157216722654400584630302549063459969144101500794581367684218843625596206967561141138653307196929622705056801415119273959091470698272813036658986873953406472325927727007733387062523849567628026105247716449556824545191558515900837139459467062278132222122484227815998107653314290349676066565547518381712148011783262090569166391965642546763861732567173132903048990122580572107154003305590741953731130619106385363253353439078058736334650814385548542754795063487839335604835877688692900929116225035067038521406436478733462141581170202226064192055483499327200711274262080130723714908081064284446332887084717283379163085279837022788538808389565753586815481076892560943216800827705574598970659135640455322743050795856739481306793744363458863602408549735143541959906226000705947047321429861569677739729593929926937435353517008918285055569379696455091107137112769241362549794840098516019179213126191135308893767772702044242881210012004015057305451391658682323248152180318491744267319864706485932021937471122483521356291093029354961505294206294445216777440037063967112140550911017046308722418942849593162581649100622270305953492474791933661106046455786776481259735931351779339785297337650786322380125965262200483952895299939330853311868980827819180336706688132629741484685872841813557690216211666831935321455199790298480249133211055580451449271301984247581098078586927189449585660405370591979413297278926759781222049151520098031357157408155997779914370439610717194051013375466303055806174531264245311845996858117268681026677828532510913289770556921409170994448854177765600423489130788618471559912776592769051634145271972681822476682969039577084309277847618277346096344799729095859536274535081890838661200798299264414124697292349670729616800449947735179340150510609054446461247692640328322720678605398050404774168274331280986353112500260193624306153333310807361522154126327750735943673527993043693638962266343138349672809757647140165886279563218892657159517734695871017465147434081907397100911200261671530802268736280156526336581390069810711329745178618478946550267100290296452030196123951743276540274977615709081062529353771865110784836935995901592144257588130001724125234463029307001406877295890450867946811841485901877000145665278211105634804872471363360521665759172074219090507642994020580561555666307258406077724384910317849035018410645258734622942234064963795712924330140385350675996030161888560417186061325310711916980136468062889844508737042709386047143853038031914584861084845247230950879690025523788907035287284239977338370511255897362479868103790433217872056308541936731443227264836498490107453954044828512530006906573546845080937628257044733484619848793950582930411779965886882904057107585233803388957582125061926394966286230531735026328476761879040217911279084244887176218467891945341167826683881421842843476905046764977509348597951331540303063228409909777655338023662130512853134509393853392739757803887218753486037044663282329484961944228047793722398028171424731330854208626752652202651315450017060486960947724811830073489026045940669723940256561348351811779631888182117787835288691771970922421054978064135200059542007918706187837767083185172149708615112043747522027972014735826076832594537356213930283168006458131704021494701280226578722517420318348444581048761380028167762151817691544444282744930426327721286932456858180874310416974710331969364223068174211528446994313395791873694616463127571207276770681695817624742133344146039596254755282381553599761611504250559831718533240893822325666019234979051917275008245980941572087949838467277162403025882865896353460803732562340533458182977376695801445669076702678475552824404607577255434566743988897448359218439482581119326706249458158237955804712112587295807289787537033867883930838893848492856015238359411234492399422781062844075148423590320557804392831905666172204363987860778082714484227110290357540316879832836121248926802731458776912101618881204913168005983624862076350065311204058135158624066896843755833281558357160577180731322188687002652900196712814696195038467318013915865877972754618806804167456056417791386822409850770195202964068202601377040942192179419316457968099449212336880270308684136973365080154227717879657533837085860234040763863070201693610729982769376634673853289876003339860453010492130601982427099627522808144935773731411336314686158696426176617366432397877887934313215007287601864911057517357486108515462784894211443691094489605600038979515769901392123158861502053209707690061043711021163461156357054026482964742715266794515665057809149997771218482008626000880475438032097481045248715976634534925882197487229297974225168471784661178812380192952275361984701700683418639714718635747626902409354658399702966214047630324764492490779665641290879274981655475796243176704771429105554739553790609724955717879166064774814564330318438902870326493667023366223031149285455631921851088165383266520189853501211366908169086717717592962649959449971561616251973199703394163595412967001003015632406955488888826998116735759716329232628964381957342319870203858060173908686042750226079407158782863040682948755052738812010022220494177132714603935990315088622943430775447713280231354150620379700827559090954099741771702372077271430450446290489233466400719588807519079373358325997938366403025348017866912775614243337351499975090437080545737117508135441632891751324641085954403249091206558647971018881286673472377806330310689707056621472040323543760205276858010193041444041943817195136601401652672265683139570622259630154726595913137597415239201791340273114094432514833998179164226916361766429266104157709440949052308050532702222487097463057549344868398276689362084971343823372895649279995400542565554865447708879955186846992617990552971315393492923416051803945739268999758241407864512579661670318882994672423312815765563552018761616194783880057894923501307959962844942002338763042035312972449907275035353129833045256648736387580698731829214493967968745692872307152817929588971622057656265039011018602689048165069036102055281152496366131473804368267309069973576436917615187627258171180910255572624336959120878823034085306139354031300108528150720873343545660890653985112862168090546509394562499197269764902997410288404562263121893851272723097520911286717332408842258911190137488769078559710134721057770944953884616728676379562331703993912624375535713788301748804740248975852811921017428278152282267867586889854027071738573903459893497226364614871213305469304558522324245175759905345387559789467206646275048352248787544268353576332677384671856537116547266294797576452213877834262403426173885024214069985971570472305105341530603703288361515221027160000933636520793174691898197439526498978517182059292391475047123861274383629480900607133737589813850368214750346372260675330172961416102688288057234749477223750553034670653967582891462742457281246549493918179076058627984102891085657529508984749754207084752659439886893490386152967348835662973116666049162888796465859756666886508588478314444282904631345816978247379487324150492446175940006265084016280887467392304707614219631988343906159408495323937164444368529280531531029735356986147051097567322479917058682285412426111107586536827233344228280570785187400030749494906299463107064766126143941228861735452433154690832267036358573885721958630938508619142140731239548721853595716169647965616337805138475685625826667560821991539199112333795452832283037301405166139025244146504888966051630648314522584047692430582726681907774640082772507234615227238290042149238964620577165914568639061336495231653257983574905128995830294633846019402653125132434079842093457235265760777487312508475331007881174714340414332095772080602274190050110607838802328987533954708014654038998960173363636884568695101444732789517462224804575261013795820930578772490058836847796840010658344399853704358976219482877970121746756023120549507199142981803654789266982208611191940129036926627832873271560743164703536897801581085722800238949847993591838515385091518542286559941210041570209325038153543368308454909803942508093294040874143918736043773579451896729827958456255705723404989075545555213012924222110125219134741155119162820120399170281591959772248549167403225689638899745850607156186083963911711839263282162138588428214770272063985402058178858936186334784315084134905274862791521849976525203412846801310869713930948230658881086897594088564470551924959313567444568571878751489862637580118294089690723115068200690006528424460151506508900045555639467127311725924110089380353678768458967756012722995727971832017754653638682007847708672135607333057743069870052367243314541876450386471124624210773479045675776082734909385615649316948428138300716862691292728081901913494832594104057952787422732542309479125953063431959217725943003021125758570809533827255212678765641565958645025977687735566553622022284675274158287271320268109421565654137465599395680302508809433278048856490649540081871361133752141795089327568463151546006830644389097863496680894845954303484926336145681021695526087617142020765524269892358304511474176539801771066974226080384895099137358623172060075206362909534021380395806669047930891658601111323893915994286684810224510153787809638084447741699365105773041326887560123920316311283360449478374003005535978179304522231163883669538659047974733798812463703001761625765189325186779348083156542073589340367439627854645219134194933362414954871172426249957605513642044261724183237213904503019606256052082659090078568888171413805427252673195077790989740064278124929326820916737973622938043156588509053054203295571104459641011372104218029131728019437349975111805145493391222242924581877494843291670351116684629268401654581314880477771790659557923594856607564551799985763429305949869328502847970587271650454007320611790655274046556705399697061046885344158850502490410587561246979440941040857721685345405109470433103762739475605379974360406312572831580858956614608295399470814202391779964976872242879373504311956632131982868808928160264605843717083791681826506960546217820854691332368990010803856498547482451893486184620711086059942335667258327051825549741605920726749123357010711897657260457825794341755195773113816877715193671738045872070414043654879915132065636187656209002140089950056064772403250668856466483230770994052018922501213715638290377042619753098063489151328343020681469393605242836317087367275914263217796059812857067507171663836499205776446619147990288847099488126049339816814594840415145167408150068466477107323455258500745545028594929101878083944400298202199820042360533606746828753367558464406435135461572698957708995065384405562197328163424812278208508993671732917546696063639096179062467669295547547038871368428113402352030108392050544973288507345891782836177877429064472431698916756009471809995077326146172410779496146667944693799586317179260075216563402300078687486346125007474139101422958954506003087742726572668896290543327188391333043942383134700834089837958544787468171030077718030628207497687466123592156880157258644352505114437589905760565322259954161450050046823083310781937370827056782410850289611853750732506448087402900182192894796805647767406676143657819486470994903929038514992583334497978629282413367051842283966110315375068499988845036405619698834682380806212306964478065274292612559082933099400751333814887758589875492514603292463000297654391336027556911286350572378204837795816033516252077208780882977153849550118898161222458510325914344752426541512012396995515036729054171420020187538681657556671629149899019684761088805528375221691559383185310763684535249947614817168881141131891261790724414450551117014955920877050068147225225243160124511291438521024327484275915112901130289820939793003868860381947363174225968057025999045003630607247392867492273770548410330788013607552130591518644303618074449725371164530713668840023895379692004633286977181744146920589473255734474097653564186910447236319166535888522278655824664855918837528708755422016712725710232816088111228216687909755637903000154514307820063790567427651286409024433452634983812023874525755389092687552295210596094298443919599776730417820827693366242897407170815275280028974203511262759568905045413700716950003489276570986501622812527876210071603973711256512467334238677973813007326601828983101427167702147812565674539732389331999511930181937607507437144691890536844435487612579880276947204152149258860305319795776719031428073776895848904127268159587773175519031258106743370539909491723192849569404768329026451621661923039632478757410132406833197665207112252819584247983906878023073661151249393707576618048254875719594364412319818113028328567808428135371846937538967486335453311491115878847538110796421990851321054731893158719242400976513441646196212933148602859799694713229452546725228268055697785504594477633510387488740934276615078256244934824105069408733486662574477263839959797044942604801108852035762939464525811014974888205789889149429222431679395728124569478894587589088991037109428734992449876466105170745298795591199524309671516744924591356253673423930819853745287292552584561357825416425370875316788679575369323186039623232713861319827286018335831277496948592161726635651445037193628733732788987597168639261269367274494194748213904006799848250180871424049981396228816792577066530043109807282022623419013125321819603179785510375140439676804719399545246376625132151951668225951431888777646588209555663241030968173097928019007801314795199193622240806925402107555743608584290537666176004423590540224803432865230047052130004390717497159453777717525512657933268696447816084520347043758459663102684593840643120134122967453491823693479314761298192835847965548105491483622372973673143625510390696722065746594389721166094730764503460971647762228781158497008851626617339397724067694137063700623984172265050750788836172694409896396596936339538659858032706322500646645273686605246035476131024994936618531140126213683844222699862501813466612676442381309517981330243580424302562516721296950589190702927221070579548203771046440072993102521685026637105533407533713807346849897971101962638780374867297007924987195014401685344025168730611542647917110030376201734457437785776422958390300357330731636939124991426426335888522090378564308101286914473803958018717028518363965567051222615571773937654682625221900008142898372635399310676060144537842699067394211555778975333404275327899067362782096080016691026286606480070479410574004283337793032620682548078449291959444952460438170527033113279036765300294440466665387788434968832818085262011938020861887101829018062151570917579907324102290816836908657524051726073382446204066185286485127869320590789005690773544308243759290011945306884769762221905366531761408286272025733975155147473104298800399608361196617928749761241266931873587119145702507756008944935941259528574895544523344717510978222219643957091470593262716133162245851690424082756107954627487833816266115110732486549760523238619246600862828098912711384247303132396819668300638745362062465815724932327037903995024373159346842654851741608172743959031632337611676120973179776753765249635253357235496807111516947698832413473771641265780330989742788329099630095488194367598070865112190257683622297990388276735724266006494431219274867690300683811163586856184443131754929565858508906301879274258291910622844644718056751541693875106685404419783769436931658707862542436224151882862361765122387087945837922036791085347200641443679458354371060446409290041454026665736202379870268417777589717157636869095939403269727309809914671514494485487834680957493908210499002369552460367230303097717287813846576092541990599393253030505103264666508928930857445736930719796497223947979731831042422340704058698199357578580573337942284363450726924275889173800813661141050104709559246481784344257469177502327996180435358515288887962160272973369902920835482047995969011489347776589044280190338881237635527203957797417284455760047751836692560127865038162101433934681379828259393002606846900327203176890914482024908455656355022696312411336783007957930678862785815992411873355952736801237103480121585357056911754002958558699206309845521472728435843987143940060299106183981629500011921423255806464095559237904424769805597626621840853009724416093135181969096361237641277503012909088338558442022515129993583024481293788181907246454278210233081480485076249322609560904686613534354366225230528012401285089074723678509228501486265116199559014633980035955688345973470714651715243958643089166963181504063511086072314095882896850386499649499823347258280650358973148318879347211011273759052944553038427217284005222733806618835306066749914545612874476921629504767324015751808481290790071870149829844472241009948223558765751827833494572216814006667409004019042228024683185839217283208994975099500340987839048305428024460533840164042703556390225434413226823876619267494795625166706929449603764090051058375951883365081536871173906550293894559437965607297842354254677076778743101241197796591273734012799381024765939295601723414235147633714300419499846718914123944925245928049581629464883146431434900959024930529125958578146056139221639823568973403654530536661961731740804276276515183074639669816204272372431602546909006745705949012460128133141446387034454168789410109084631268760099341228724245118761674546576045281003976647544091690046763625036728206698088156476117931743425339288850996916341808306027455951955672846226659248952350319118616901878561814937956178267777033636428107800916492363752343866930289223220496406805003468824199264014825251195764717297153079702256608016236348350003449946113374999419679907175056081376142031399284637827691835254131899020864110616327999404036586021514981620959505846363676858111468211271319622410865586380418902819613172202900422198969234579221766296971874725392965470126055282946825403949924351777659137717876515399300637871436634969800322309928063447615368486778679647408053783363997668733097159928677456384242476285591837599619175592218027449742106602252540387039332833586166887055076648836400395982002621911965906739680459821079813218303554684647470513532031717432603249912090462583567313936897722863812601350353620047720275107126616142575264282229576555723811410629759849307954185295799800274735953277666019369201611184117278220627823309610258064902987288592466309150043311077399664933717986289707483705400045990156381397688560709062462496980448539640113985393698223397937525206232312528822043288805503540002201010339594066289560392095479560348300165579516175541819978322799032845025098736806416487668733355825045381748024244818758645875596924713836170619835376287774801100842721471143893376168547232218647293457415813383859077837671278719072993255434652084880514718299667933727435501505167255388329891069999500356114952953173654265809243044146919531108101331220421509552206392562225699271365664768447771875004921574454499894436577778084765179134819047800135844762025008968561997437428721126601117231823059201364496278754268421091301487010520787499812585847835466502014522870229868560145853056015509576456008347206437229492579098439212974360878763404425290900180835560470814718930246828735752490581522732496089957247588425460700543074804467825608133773626015213414284194319953431173365304960474827973539895143296405882809314671057147338075642966607578014815371069626968172362132813212431791095535421062923554031378253005430529923821664275319263264666024659113375408349239809178025574062397716716595279919793399100660719197012288426846522924407303019680474585140083769913943592401451117216796963392240898438504199666760793198784132898346758223791399746478436988298817377723518213457891612704721574535602219474141849887050882958073198895461826690745125418133440475058999713478040058365434948778514964904138350179608740092612926903487621284778933980441717615976976220891514717947890957326729515499183366606120978252399639708124855185032159006015669553142858751623043809526277700730191639603598515347267181277877460941961753107905939399549502241728516099213391170114421976234758743584822013759359365806863779575061447367908615681793727620346447199509360280066510256454384664092791404811945320233547294439447053589768278914078529659745028328549838632537917665714598920719861936998635723027897621879802509871127321732726487779386038406489522636216252010553023723487786555578911536194019312309612641564993427249957550125258166467076623213930031014571895932900270342774139660312757792266136214887059692900366544970479899768675869562900667561366931422237340655698213889360364590632680546177769835400797327450306990376965666260758790424625014539422724482687842305292424988251584118947666172142449474571607792007893701357102293000622582205250856671320301330324294435088329463880951098519726971345243356179616231351288397189909375967431493713803451430958970901088876659623506067821944454177117404647483886558549352493753366218060247217406770956780906517855124644031831769045238861998819920373508565516208929361516586484196103233937416220867910571319112105770459674763012625507637994658729476276567410817207840858999135799404624732762925174311256551684913511257352188544855086603157789364385286966818848590432987229452768398449734937550099864167725347986553085147657722819239760830141539560614128985014762574977593581148653798654866894119305240935586926857268368983769772115209679548501464573557354784998584238545234077238229326556552936570244685977013844264870689821768698019062539001337093301710004552574974828957652728677405206045414746752722141279613606193881896896126207105204580126348402969280242260284611037189671535311071300707487094250845186174824977467328249552605300163530894929816902063519791263153933288947081386952642471265570314438019406441384087126596439719541967082114134336029120405799227839205574400280394163761187588880697995494849369054999383406597974322495430429281269442565304154426599854993510665198630560186528051026237556760370381650966772180568172648071656080307610958768933764940229570895458494292061688686551078579086622458877845166725644123274650503626508169169871780781913282437252523705882635730642830379307467642704851574123973881073262198440590370853548600262234434548254159556887695722796959937148449035313380356044397389963510813791591939154185401587506543661590710896460004250385835106145988016142326677043545094450041589014884786937203763651020864372146130859636542285467794324106450705599044297099618385750612695267153555530572499068214277303152740153653323454952915095070884659903369743413717783035592553855504200378859997175864980959594621636890150326750843845014728763782098154881165381307125036997350596195524305991582707277174047227237810014330498715984960977817737520151366281677934034573188267223049013905685616252364993872926138953513591582022201037097917067141805698363721716734298178639932895175248645238521484318842606754537485403915145940181416412102929030336284595345130387514024874157457240984482672348150726164070530513296626474607208791298208391552340683610746469953407241314399263949801861938526270521639284042988993974171760818845209144519294689912915056651925250537971592978544538330049781086453210512746072925330141643557335343574705490300371043781354625719457000815945042471083642577740397499786119440579623639832056051210081928528700115535302565265700307805945903713531871929674301043612211794756799093551518970439320120673373653417770820078646257653674033054973278792301300407733101066735889113732964261266668392749210704568641417544400144833282356913157426482181351701996214113993347382982568317834431264604681013519142978844217621520177206880761225175454431961655216451235375245748070485581531886747938101598286205873728691850308953611696693325390843223234775786953126975835520103215408904284152111581058641257444337990529267871870404645338862833740001598663899849667385202910224267942902160691508327043020842120947536675955837877950036849884028786284187508475329141688255262606639601683962118788245899715257206692273689562006870655482955759535126115597422127253755598633430036523746891096737178914187084061448960825858895864488997511447304030535719518691097389370771854291729458944585686513311446420938343970363624358312760021811690680886974294947394563245663120545370382331889824011652249201705704310696986891375992942333493145242544684601041979090903422513398927616686849491755124202800962988913536204000138665856537166675070802739720137057810064827944476856109690035957711752199699243465072865738487862285323182382532759055353044700567372480733057533956634184821351926441149060843395161312530125802063856921588103943474310332324433730779476628790339122876431198540237797940900087424941439509835135376875524677792382461231829898289180178845768837704457359114570168639899683650030166163536846244117118930179491354304321743195082963106361709606693212646323653971100800528979580362015572137129919777887272685704921969869555714899931780028679186599512457714415866530107110531417169450619827820210069439668665595131543611169317253812325573060723102507317820334812284633037130572158697980017790195275367199292433477782971336397035032501195458706702987538886253818272325511052745712087672007605990579906991361961897742030384921877651749737814261793040196209852346523806907556241233786104729115820932247621307253826947700592969130162386288812851479853530553245336664073284026939564991251722771476637207817502658705032310309938310687500404796867874673541649818231128137644513810411287146956526254310172806894873799035791757881114844771146624060279337352712422366194391599343273480853662513805800385659495510458060573876411829969438029223610429409094528353970237173963854292700636019495238025423029313143564963015461275534249097754872715335766447935308960962708510012098181834963028428124410298822152424108857538023614334282830855728256582471321731850888168471608007245605754384483173615164820034249814569558910741597824847415500255877344886016231596989035845480110962991539932876050600812988467749261871198909221513581638024964399037514721737703832421254874105897483100011911201259129268078308599549993082679414098247984403035787219581592481162829419384280170214913045856083817571229962993303426799838742423017817440063187198917160886193778355702505519605388534299252742490193578680315789447868713483845285380401796630972505378118727321344052584546912437371971867786380640891934721192393206333225232009957162494517637474657260577872937513475754871003516230603876466487991258032050949625620072524486938481575850253093789457522720964596609370448273721154445494395801891436546923477147113090017958524479171010864170778047636785845073056245155862179539323934147507062063336624656215624263143361652423045948255215914559952158982908389492540685608099837488165927058715699621770406256587452451942355990737418266960373463295482403274197250871443483835791311613559859681798504707113938575886412785163268207354103299400697320319330250334297618016398311400933663744071492328454150717536577091168758832828444842013361672909366531798340889529886813953373536780548882332199717470143608332134273566394470451301060058673116523911861038749039166193290364893376473982325347842785928279318684761403583870284554059263722971335207420423881694828208609949177550557519603390817645991185761252567611492522905780540127268458817260646964583158660280667547974991765548412431224721127053000567309951708485081481773047549856046427929788849054123921104851051335658783544245426132946130853644961677971286224620032190109495495040118185663566018567247628140652605930877824841485096182568133387888702848523816032321637118130460262151143694726737915250527195076564266289210865255082755161290639308922012849321416889182877868802404922045248120215695785286122869994947716744237627217947461883291319417506403843683700849720384788560065894581847575314691063037466251153737781452885511672313237475187019110058829346971161197863263375857182218805367020337431438425033711598904490812684708180312507072764707463903116770507119908368191283502704566480683073374575871752207552719169891301643148307007917406123798820482468802561983191545717103435283960770781987807296709487515045578712832205875215625139800899620844555808967755222335247439417442479271964566757332849382077759458128441406820900078334727404058892497884658356097024235238186127173300293029617190622851894032532281405166051562213260839004158440672126520789406906255342276382140510417245501287723688219070443562471745073292423837163352287449580378438407358817437921676715188218838257364429351442307457803695405953047664504364585985463690146654080481149184040812116497140850362402136843833243963384479178013512030167524422888291812900142865741458416225404048963392620029720939136159150817468635992833910964052720378556978020520390667940111006758960429571252543373378006042910288057863506854509797201595790938386703028846429780263391601536677673811887123379478992115888487999161245045221564233166044907524945950239504766421027426658879924339167338737055160600749126003479826532906476602544543817512802532053682116709818687901943805734141264711653468103587229599874574102337941440717577850206944723992180230465760433121115996365160296815484513688992914058069693201531001306247687123915441064141824343103489446648870678480813002753623913145833301052892088584850690475344849078485912163449122410841239710793806648696703806190629134498919461835072952403778666008235518476018456439774842531095722288908987586631894331023367973177606381289888769142491803809286267371343338200150813034285387863748111333839711119972383192619281336900293947456076970013752691574315488095716303177192956392104064458937884296225378712332469769660442777726790358422747367139731878408318209523764593631541901171949879663739233836286701757160618440492458887779748726313732272779479386915458552332612297526463219729536120692909075199211904515415736663054482048756938792725166356289837765193934645767948206236391486841455010405045403178302623227092657652395902456514592681569965958567463572665428326966189832890541342614857092109778233715008088656676230571193815966007881877237966844837161157212567088147372418430483608883047603351921362926470404262183500504941399003449598539962861099403878202048847832858661260793385635259724850491732884328701568639958390495765585872036043719282272740610250752957192433230975633013546201855422286438810177809830657356015428642483038993031805123715016458771511521850807993380690249005746917958538967735301360556909162865129159524128907096803725228610894160619623595846716130146802902258916063686626992261624480774586307324186672928428085936738479500104907350024765296517505251820991210480100342021014941340580523248720365857613580710314578087494938422591034895295768959118328812961205307410233098769312291772860839005508004904385085778549891492417488543127270117176190269678102460987147093779033710027603124862776002289530159958775471667135639769369945977416346176252276018001810977993145021631981962259025767806403771527525637917383882700877615113492116534518947506791439759196987343230648830798720843194922400651565399661561727621937503601353145691267534410550939694474172062492275796841620664230079630718964488991609183283134779094381583426053140604494882932469987908105192904422583816024284239739511457966242964286657891904671577857578028012997056353723185411832885234565912952547799318285023084554003517119367997603470121531953699411700121621878249552184600332676317487115726292480463210346867679806434193168577823733217001134478829728694674830439704779031322319863458694363586494117308661109870322917705875852452155863652224449761417142855819345691617321105388665303044002295060984785507656748215095800084010899478686564572047048322392621094742186009296374752711261079853030056158424547329235135274658475058974184933635715338747951651263174638183197940475182634812313085211616700619223897243772240823360214056473995092272844301160557277800731986363047406899968302220534258420674720266640248358549900591494925101736182953580041337880664817527770380951579534359809515011306707078510571785478281998371858934235505884757693415179646282147598212191136652001822182495315460445995045698657910485509234123632880802283998806352430760448435626332703468929130151629425548072159147170341949121708190101724176582649905867325473976338255107459762271317071934373994705927920361037572629028487361482237958951138016725297425995052979482269299652125412135866485576566075213173574967940299736186905275419765231505204617552047761701662528821306436852034030280616603264678648189199683026382688488570246780107276363576849279419786756453131013466700389752624569182305242367517949918632799379170924549391663577394160001883949058718114974169166145294918396366012597622726771005718075681266756036545293972606292872427117208508789188931974800711678663422464129337415426648229899998348628802783115178322833962545280681936956583627418572260868609680677712973982064852585452232613542765196974888251775120405080873687733229085497845690456936512470515391014205161026372082980679424426158476124503305215691826972780271964552751131145549538750015410539214325254365949506068104469638162816067616175889198966699521120967807658163051450888601243722898635872093425709617833792744474858102326764565266458192518518747282371024529834799920442580150893427656808767377588574148712601123657381965455137306707780088636804628813674867478013386622751255827340370075089426863280385158224051214304685760687484115142543358977098397232753261909164382325951085581113839048746776199160592670898815219340759162452562237601315232348510524532776916733258692664720761641204907702979266356138824210900358598318250477830196514008385112194187269389904658242753834071419146329626420672625469616500379466044160029601182662723923003915349913723038460235821914187517236578631286191899103816339774251535404608522407041821512596881132430798180939833270141545781132190772645466851401230037266107440013627468319609314464321934413382877432086570356122658024995830832957618342114800335039882845505755021330120779900068493433617737717469183272749552238340041416224159641811028783074224148549892414327779813072830655996146643703916318179597257706753927895659000974271518895045095920535371621240805526448876492568406515955390012905967651806185430392069368210192239958900647767006232856567451901523123494465561217646306314085318442776741794876650605475801937419494792408585946504217714934128720923548200101648079624092968984409973144288668958158963859371476692054763141540783553111928829838455954888750848480881593548569997267319713432247403205946679868448364818429149196100579957794470315082415303430816172301937377057813652157944195025475956203804663991758904468082508744801991444674416497715008343034102536910001237461659012774617791885378925600151062772926972256134715933613889085750512417973897250441032195552795587673682937576055608903527311333472508670620710534195523491113790911858729264784723342841461035282657273551627390339649553950438387836316149079858996086927916799516340893140810238282650984895337078139691525710033761808662735332006213305050824778160308409813902345183263854605165145536070831497312676210740563236076137667257699283005264631270650910288453830819164391277791998984801644843515938725428790330587133294881928702705824483387542879243956907231028879875904292466060425000693593469120052049172283641866524547298766969975791470511525246819379317197622585595311441880849552169029872290982304150407934915824694398034928105998751766909274541419584986288076927446406594686662205254535438783032048448906424965555568515048594117543040744204517033266541186876212811271942617142951338899516652205847598249060617322640903655053792194119824171475956974057313903336749469219872112184193972153521075067263341350129377955472540083658889448391324432479532468703549256461136957763329009816766398104544959579875158553069568603470955703417437502009657581775861778368945995871462303014872243408528779894117100959482743108860665248416126176177508491495995753486570115466695880561513995159542363305454097780870785471571835074805598430854694645419503909452386850527021859202875376394820993149401727469666455959117494546079129708382784902015108490416003257923774896508795914019100490963462105788386569208826892251689719434549732501124015895808957057536743526775428183600836078986690658070125703151639466533069052905166763121454704657258156633729314826497498503324939421271952086087322946619328980590802314241119421852981871349740644537615705282743605510342937711277401778075747340589953993210616653413811646245833464843522891955706291473157639753712769439666956146640216967460327037656400756933722656336801076377319749489735718435625257198035033712849103638289055769081892663498959682728411432882430580388121110609500685225399811773204575054337230349671716218322750490021221000139845156651783766425952947024073672088203113322736283955426320509029410655562582603951052096555215913592618429037709558790903274789972144820861605222090048771590956835258649821660458433083043182639168027813840408026132429234694389123483899721791926291535822954163270562440002161541266051668256860444398761111618585516551417814367979813043674767841497177302478527891683232217115252317139482929249346785591461084028715007910807221303552410005661208492492278743210535783232746829435750235740043008025225063952650658392716093559779702466759201045723535352294549869311702025787041549742014413484819882849677283718512601219408240384535188270654618950493896907017143879653962550913036310549489442887682428968787045586581793314361431390727281725642705511465728875350848306495358751710321168095637233620438662682369614978132810517855565898701164985159111581143268891163171364362366559225664031269601993972726643274359472290721366608503974762917930153046085981973023266707321508819990688546879420787882188622280178637077566157562608936678705269755367770881757594253414909074918019970520823717050310683740149940049117189330062135971045204188471008719660400942197982390562837947454015582908183900666200828470650994907745894906547063495300595983283405026898256602173619421805451669647995193389233382930585252526411191485507951945571312648418531570511912522990195152522597542590195186654793665660079053003443372737116628687990309913054972722613491387251786432358942585266481556267325304935734753010896330486132838266174798551396090045067366673986798018977424386336591864766418771079868786090771678970359257479133631338716234937443828656495737405005403328356745975347748421084150968899916767090283990415943272374219578497762508286784206962278468744720981446461698068776464068408075389548027224003380412189955913819634500567477122628196487240842447257811785245224115035802922572147031289575599598831272070334654765365786947321099043845303697951780976737639769375245221256274515939684451827242876940421197217912750993855211500687095486653282885418004704105703273562748441451712429648673843920677883174314791038364090227718288036087790767849107623541493085261220833234719313770536451624439225214368095771287492769122842179095995062938644885768917688191330731176575604187236761095612267340476247490241796936389460409465275158640738047427908482426090545088474828951708177971653840784720730541384900398304243098457903353161276652662837672989698149907087497087392610806483746507184135091406886528956483200352711971003890329681748812402970523248978404552437622357937472702745350363425516805473630467387273407581497034017598911023651198939263700207165796291052990300211929538309397448583294028522862756819928149985043210641707933218008263729654095910963134157923265794640583956307576683352093271649030235391987797597017879323781616466657235655284681900305210140792756848932422983321037895851535897961919548239940526149921441677713720874979909937337450577650011045463947197709627363293850703258990842989019503348474753642475029259536778050761613298979669034829590208453108953702586131345034770357745230328331264709735422467956275036583593722764374419620123116260091244080174136900136926396694695727570408227718132073662447615197175337041003648558421141486934775906917190680659241716315786722554300241500264884587319646790982881717203594788922629088381426762390367152236328352077756379766177431229328005342304254911807919299422813644806357256794029447776387239573350536917226046193661679652410278879455126422515785374008166407976939046197657283664160331899332590146834440633799694079078635632178080623813527206250974265153879686976013672480843203619749211343741555060425048816222051235339123968981431105494465429644332948296052601818575850019314482426106134809186247072063170383419593530586043530768322213458541444316318683767885638361092115460697138838033204597573446753500160274437442642705908011453937032394213789380253186143729523894397893926509689860845537873079753076480430664764773633071638364335507415887019093694985581107096612231298512552107287363500506985991381912306329033918885277273142500385697063260447562261857021917579320413659047349813090040318027276033202827738018861384974402046968875712628049416017071066740069206370199456712812412219509122498687541149865296812560446540143238557919632498255818962024230189265387017641172396730738895131175850239115251046752464362637905553840964203862669520696238332160341591815205856124912289758422462485992030403888894290911942535483612766290048610016686620136639697730909056123065209155788681382022199021148223802501790100293441906932515448979951303751362527271736053884766552148067698026409108681018814530272928711960958715619208514710338463028256471397480694512349829260783229917608904401767686226408044379687740585347849296165139052028509765364033926669958693821854312671115721669339697720026985399302527936460662714378718533361099513201255474539273000608256048321720189822875187656455713975722894530625099563714524345445758082217409799173548648594724534243026999040283853845934646983666551672883582147036729974724522149681794005420190977628410943366898045509030434900966083701490404854179942999513088066372307131913819134631064153538172471329040872042103802911131442257246096635857323264361993724059058820842491474571862898050885903174900926736883699362248419666380766889621468103469312526301194318063576464301208241016824556199715590220294156077460654969207993009895758172104811897102775812407501405757318759548105752987608812655494761367804500243172111341048169043138373582970415510546261798457600897463057999411280088010540797902350252762582283219221408289509916795881850008476848216458660338634763591406048341800716758619086379118256547052658149048791196045148621661755968422367479258643494561832619486100924755036570918737451069524800682047808937984944799356115738396075457476670068466785149013197669107419986720081039750613589623712762519087475338103798847984771191299416058142338686870040624431162915924704491076646742865159145002918468919301092962656862401136835157362301157049508456636674799092685991191993702404925346408697380286823268875535066681574362414913029571723154745854439375379205250645262914382699983562238607915726157878408837873135332445776083932449371023847146525929625714558277139672461398893058541709908811567728123805398318893558163177451538486590208317382804981937422911596671445732030034695818507757689427743898325472077460107018240109305406514640463567536287233241908916278310855401829440577158043414371547466125308812297258893464427342872097562754037038763003930370264915973740370580250387955705985243427823292077670395241667801472464598473910580626632260816240934809671582843946758699730584090240518023531501757758877325672802801598176257200549529316285526616732004709991778393263261592538721887760565970183747351164455490072054500517764911152440688283094180349591644214261615594283116925006883470952523411041922463859792650414942906503210756015814331266821308567400549688741437336190713311184268672280747034831296267613373475693216665635713032386958803255155070160916341931162347320208288097956223177439516425488016327379409871148442692244177071313899140168998648176394609760213932162857345587052449118403683716642810132201890438503646887061832956380169414011700720791330255937176390248251849635766033911634992468923306766465009325834460334053563040522314439275050578877572130589495321417166911697443175013542399637835212526179160394860729975578664362698010604169384441240082658856033645043964100227010523647134715781924431652249110952143051306446438371240039101026093889190348035141788077180117484000835894584089372308816486135357437512963856675075588955700926988365163592096806505928214545446328142027294389914362503201409059584870874688210906892146529643959633203778018636614473876527343519218591886040991864496811288079926727056887919132347323975589143342336623214222595809310711879194451641517330185414547948895866905379282525791223299440696582217589275980912376742579468473466219626928870927232888872118230545437245176292072826770722503220081909520048320681153225761454760266664636141874239056489951747840605093724707648200865840617552642833317772644792259026497868220409751673699990811047626798193717018398052115827960475388476719646911644384987702981028789272074810622636108127709060232340253887537502228125075697962683728227321943385319676795473266411301850861662095203105496432622662701277625259849709279971103900621682411612048033110158993578227780501114044233456108384898422210573607119119105469819432371047313836701805818619107848516901438127674391854403646136724133282753597070973731295751009841601705516006396419845429631238506667849193167960514400758563274106302499158649237709627641849538714167481633175121988713402785298350237724175191208526427943577720913720168137137746909807786531856994070841764089050592393124559684470613067045922807877987923046170870303364805798964241878475503843683562279450814491664729440964419577896613564141992396643624641073009253399134724901246746580683848709684831929195103050746407444099142338850727301194628745839103052392371073179779180813226629505147965855272266764329233846217732044188580842174129173702875929401670073265259155603163262712711056958371845304372453230005222671732153006241304368383343554387789051538686567305713247130416468586882378494763292445148296254313589656516319520636018748206726496427989547297440265592143288923742848454183473288699360829508163456540531833976942549888697892314857119672439160467190476249370454100957465399111303990721357176621062163622213178056507028234910704375442748146186041918354834112213810379698996192987288741957898131066324312082786879024084930060104737542577535034938440613273984516040264042567025611998944056584756703136386501286341321883934199468101256103363610492805489727083660081704922402086090927241383668717932445419206584473351134205789636191413558284137188529849561647538542112454471761278287043571044534623640218832031963508032262220119626320116747326908317014416397966083066814407106814599007866696181532561248141599411201686047491822631373457013430787685303510716511632654563695129006396284507249034224341473992362225534823040818032074588312427529200234277542921201253341356784309287064802757797878661191142017451856569700276232843153327729807691461832928609803543706420451582121891249489690451561185718423097534842301447083634193125109460539029479360597658016236442908544824645028142665906212856265221715783261698396483486724666654846871055381480182475889333000017654028212917156392203145825387045809044862987578288396291395682120355395012369553325894732270094260105938078586371338349348009925424503319884556861020814001394819644990536027606853483811624857046881290739604764068746744472623390169153279093153291375136894990794312169393678961469522222810255987958159731715740047083520300048886600657778894944305258302244498622909304099602131763194901161032914875216594000090262421814873805531909301386631164805888513248318273700150363278243854610160622361658946647748347054683362190782792255220762142729915416035814325985988157530096659062897647688552579022948192489228466837726437996442178817928728993901156934775971090683489196383519775943371211338763370718313324152003279307044603665942712431500955468751304655349549379461786424440576298641480456516524937028880457830044016745270766650709332175637820224285630145775203365999357477172781301093358874565657173496213070956968277222158518321541924361577122939196501962758052388063165067361600134206018646637602972086462500843505218077274950661705855343556051688968714506745108555839118461215580392830063329646189020898795400287205584257515266923436950253226385404432446322058171995281539330470711095188035456421443446521583064091472377429858956392713805666992879356356852623230061232667120366962737787093847200516383762959421207684663259940573495590041038713998343261574541588969314475638256123257361536809454880926961288371357893433589105980893520305868701140549163885224721185687535408632553789131344059899621949895905011439726225845024018806631154270911965218583458983197024341663756746250949001471027231798739716267794337983445224640052581004423427826401904403155315531596389817855212827190924199621715381266488242202860674366478997805432744524885494338571017118405655598527877327974094153006578770527085803716726089114708059599760282852649282148867129888353141571062470541125801507367832282710505907321552287885588104246188031427774301858654526693373317044284737774090616870627602394818436857731942929722431795066615919262796088742503096007402762990562327055508672689802415247286102024658508395487357771674131781782442152041967920365129779478405559370190539229840085560867513438581727074696717108662987761450873661718914861196596427353105598827363964765297605942583342590290558312349763034692837226199587774074793541696681553711591830850298674231670370341537642992139414437016144406295726000405827944304432005681167688226840301087458806573446031673085614123528301613337252498978224429801443265953763229164614863641472714361279862851749832813675466583146055123975004838856569393397314251291255228537028022207343610624188016419859532859724493331676913822512628639294140755112722620246692523961185755877982843001097977919025083763442272794568562621858095618950619012600269795857543736318068639290259486820444071248693482498169930086431043041507640850167774142160405677738697831106835152195553253472554214370395345149783130827525465998494994475934869158738513115251651604401077811262781295223787103142401347766973576578196142362072523206863009562909789327391706138147925380972809483255091812510608487156079258704868484459125405432082582127126197218688510164810987687084391573756077214501468715837738528348128367779888860601420875172680338063740302215071897412297535539228518701882656298688627821806421561320171946218686285817826935457449070080510323132611383183332677841418280179309245713144741894163346995232293452677186966979103717612146466749563247809953865650220271689005316090732864424916764190740349846669537822994936870843512018976841861033960746757916426632438822476095227126722539862683128236288210153165516846192434445999516470684254517185712508972861583941639459800100429710510212329438782301359905183620883662737908775111323162784165750309681407621505423188561025906343577197331972329306367367710856765499493912540630689354615416303078675038417417947071374519208354144743045289359713712022009657107791130132057929925795570816187807392317309605039901469035987801679308021076750982021922952537571027730806762904214758394620674847915367250510575667130036214373295095571258533310141606453354953434484886684229343460716222183551775937395342600464185599293323741593382579076678350476271585843109543797774919434285442947966499733948718704006348874875350048718416647686081295284359131682717020915445771095201898155013351810674549197168913170478622129944966945203007540428471456090827090220001652270969767962719123762393777995671769758839682388125587453812197528886305899615113337371681167258155639728904218773508007659807964954520044771815751747477143836844330063127778414178123435604086841290578182304546141779346006050861318393819584170134677760306985605826446258232129086853969801979965375080184162016393303163352254623039584624230928760782030102733755908196009015137097886692275421789559447362328903351942134778788560224280613985401082621600974496296541240480407788336102712400502087126933942473729411323519822721376470592776939683859737577837542987173690344956735872653904762540302605586778776618337364433293703945472116463715846632600054733098154340817327627300613667501965250907253914478105452825058606983640069757625998090710671227454639291325229472529962697303216108711538946842368648204318688865560239155847518360863726139215645796642509348280911508769019848221858718444986557511331408730956331101942566810872901632763076788934967080722657381733455790645827191805766415836088705500348759278957779692333832646548976482783946258881288621172532291536549639208421907082078005319421369801207581362899963883128522094542249083343416857545984733806813322520601267400197534872102081421704425736987691637735789934177643053483095769520978277365245617985305190248923529780021679555565785803677054440332364710232511246075712103225728131631915765022082601099091233630235326286517972184016981044846606875108034653805536751812922819892799462297855767217049279611845978451914449744199129642056057362943168425806722711402432967676134438984942969374314714542049435333236078441209447766666124135760283134953438927819210531122022272102625203115416915314696901134138627638507290241351236389419498024699076164145949984115555979074626817006439373568766237770529527795311763189155145749810892490350166027030597696745524730642681265460950589988335381770226404853473053706759300969102691180408832277958891504623610186926363089750234532410770613196910832287072011937230600295463807902413038255163387640797775655411964949256239337941195990119179064942194310162557686187706478050868340178339758975216922443581930379764070928360842914868269310935859383766146328966608793617271620578363934960910967002987894625669232384581146459469051183452899236401895133369419123148249376380691071760637827983012958364314275562488871600871984059944399044711723093944269157834904535224190967623065438706346876647347256730919333042342389456576891752653995045876877570884827130515618528667900677164611058881671929111435466871071519295526098889675061521253554279835966132248761728611860734411286076684949409648987721084597571293333197115169755713823292692503263259591616538370301326146731684798768147612917020718870141710650109957650700777470678062646519199162281902062679022621631240165526058304315831827087811485154441334312647283100453015480685235825262172427792076812147591940574132782539823725438796292878190483547384751978212557447151292097810139583140354379332936894551654558753059471682398292948211985489234231643330032510512419787068666908042977687817520940703439613751937297479606292782923870459029453737823217066713481905883020063795823035314948806942605394859508421628662339716994973984537228935676644569687999528438976724298516697216187955243662149318499518956706913282483960493840559690325400038933664738599110867445628371392154571091062683198197535741238026173038197596462457611763400402966544521966059037965442713118739420129562098612879648003613568927314638709835991214479644099385714608758256971715863249518855765331140785591269357068122210773054506424835428546199451442699895307148918688234240942831402805994333639766206890663005912022865772804933413406364218218759456939448154497278243825482642403085571488550118181199866730909571728402898266913683434300305778819610270812801566041124835988463516965320938490797387551796706417862629748190357590785451045682502059436656009965590783531025050722384611472234003328851958731842765369730811905240112220985588055237393191870784300266356507856971026388686069253766746647869413909141848120573644266301115546213011639528140165347356497836322259489454639443946060060678251240303543964719242832802433657793517913095141834033781694310628456473745432328912247648024487452076979749275661938441333766357750330222949082873901581984027907646032945092504045578800472259726031062828248529948988037479977115874001044277127304852693850150385885056473137889012826514220932455952348390603655729641295225795966665593205673197164485657061185597818922913299996884652626112761421095744321101005650583582107769907216526457567003382535828362804873300571695787877463056043546763899201406572576543931080195466004319399732415316394086310604204047803302993804386570597668541001235048805557156810210643766496078177362360371653340667280373584530158265014838252665477151256459695257134985842538670251953053707082706437459242077111056994479007146162766759763707571889831217350530031766769339013249565206650923447157059582386624229887389033268445699073373439842798862727094128893196215435471375365874695069957808109195187138939484369173110183918405446159598902675012042850962944232703724270860730005264922487861202820584649437427599728451867005710426112712787037619940411244698124080742503943590725346380933453729822479086872494896483355616476586364145077836166860158849465861685231497589821666605455253470987953945802266329160659635027049022986861454151819266597565075135273613134073805303208026683066540509895264271903091001607928886369044844959454789165872721854682738403523010718303432533809873209853589419568133808638814652201563502641570795684033234219855087072266231480783230308863058654014807650825748807254745464084522578009443215693023765382936532077993818851376536673551873507372687168259430274978976764024546095085277490198293891637378270699406646789064510194543892069171070913987901179883322940826834098196075135509505090029176965439866624802366735860365605020086090779491587871751116704188899678606804932199279131557980008297882995549087624190180040464154657948980043586628584157529137178378346673092484106298089822422289498387341151941528805786277477539247341475243928424817718958367964143792170593012038939976218854057726975468915395548604573865360695057828642800348953740826618218021936276992015689801225190217735164453689931221953997571596858427950618693712584964224444174700348472247639791499571630974723636116721414128446227529847442172201353082485036474890589133581881849216949588012844526406602477335279875232751879242621225926736116833246658439228712121634561847467923113942062692606666557079365604952314700207079443104200148655426245511914995256315171518363244425821251346091530766776912149557156468067583468052221536826645167599119488549405705491809516418407125530389767574517530823640135956886925845920440557508562472869161037944569571966482845642968950891602110319092024367235698125037879077794239253551077539924978402377478169530544464133323278391594326899393917148438757553666550264802012200809758965110890209890128052074672904036454225918103830285613024338615145755377296893272666000447581998310917106649993512071031441923386211446160252030901577968574159032319963896302506425199217060695045742692921368211853162937492484995902495911518811293902722989153030499997519060291963911606475524003137379543170585987628225677245429248746334929571449587992516710187709462257814598769828116370687466653506878427497808257654318145910711331390500757802855315712060499156497486605073796679872832434745617024323814727573221343879397799337878272275693436063751201067647983966544385142381450116428437688968935407375823163550933528194376008444191022620459627907359998713846402476272787151638181659125741206574870050878867942771630471481898472867703222731366318626655333799443355989725993482170731508428195044358856340344208641441944032169869881562284079295026591066484361998541818125549086225824115961534575534027524922972198839702758890920765539329031301506920327855285852119152560457540639917298269876331614376004518531787403685499213888067649491063252673447476065088056748566857104496972792017515012751215233267762870338281312970346588748690241471615405632856678336855108409659746119263533050892646901882601663742022742098533393884744841590492842798912461405252918896669514054128971141384461593431899766282859735090455711642862605506545014188128382155840652317550826055749635113697717684176439132033773742101865954227110240679507063057070777328072416467567776981040949202712865968219565589296163568538836698533793847887730542314160505191281387325880187451813076345341669973672356497269205343923083577626354347167419131593079257760048786352214736767773516431584386403622885269276100328026200725754983009630534043011412720029790937108689772371597924171784371001341361396074468916400052502959250100677274830978803441424161494878644957289334410699533966419709596604001534750354004283725168566761880909470628843243205562792067010021326146682165037680776370317405604841265846860242133568686142947655542942251344777136448975655242221919344470101390694915961960060401641748977619094303236984967286884037162660171976771431727617788296586201660988303100533758541510476517070943584698869272955999392635604044165704798958913012242525665716019428526272311706076756559633013821606289521604355522484471257650658997165924688341312668216249902400932708678647896971495516864625995358186345807110183437558885341371457388670404737869147776162963712287143103757856129402290950413736220850030617047322242294566499245701272658457305978430284294203896752854119851926152636590486255226140044069459730913968494255595244710749533697226312380072232134604113535190007424739268697010631239369637700351017354357750434961153603540288634169597698289784487907957881647289776427518791379220777690706679439872392522672992175621237692836128033243609757644501819936238277516174702926784964665631426017860904562200068717506443142850458727247379161327121160852662587607223674903375774919396622508517167516622106831226431567450405217399241834763082439644490550841634091986368006883872317932108257831521598221662971836276351651885318604053789026780649287570048336415069142748097339426648843763845470613825993354791316191932061943545109474353451927093533519912929861883357878185538024317709021238294911026681648010900080209101216294270077095448764937374213909483299846542546319790515633749287869988462995416648165130395835530088996639607201123186087962733756303931026352861744621749892243556992518747387131480846733593519072478315119114243291643127526083742452676594032316797142061854823307739086711300405259624373386638116266894598520501785019598055880120728779033195034807333622734937707204941010927700136297915987377761924230063653403202961032174863717349649633495240077471903657359033300826371713759936406190958595076574074457576375807056998408020811754894228597577377548980969003267921591340407222638354417821995797061204681490463270251181042887920335240290653481013527173017575164669379803056047219687494483371910301721211712372381815243391474762418067271409024329005679518375843778835965972429754332310224496949652425788638407683120821590486496785742495105726436106979024950168611422325618321103826150671004321719933434217141157012897968976314639354128638140073577085409554512516786830365669874060011251177763037834977394270210446663530550720210311722409459028311135725167488690760265305823332665299231787926342483033544278613598939495639627360049767765649674699701917542246269702738190388668578693368137979973866238680797809494977195886755104633361655710650310716912368790862066477122771590738062313851157401883913828177858395151455890013564407234508593873702497953200938093818778710398908601242132770762734724235734818256808940653689757252332650642159841346880276354405990539415537955292407804459950060278611799009295406661067737835411561244714785244746920007339195433482964099923425421696445650326870643928182758332737763512602006008862940357193266505875066618740542520953537993172779230461445263154803074103159520545049939702477427249603886670910001424532388301018117826551321241747470270370020360089733872224705470387786562476414097103916074836936810865744124488123495170894193531746147174310888793461909137714855308019596203531073133261973127180028169614762790513165766062151049959650890534653223168268333260549536221883461599449648418138098106504031226349258268805438764796813617544730628764992310531224421118377500797669934850020622256437172343487027389735892627126481158779746447525160546781790716361644091358276930891437330329182379767037140165512528842649188376509231653737378511088652068282712311325712357051367527112363415369726927317965792457615710840228707632793321936091409462080747926100983528832671900722656759545915158578175132003904583975135926550486322661790008397702851685401406621260649656827308761675114479418135026894533459959519914213511739560099637650129850403283937602097645945635987226019571447095091651305106026213474289465439400132524729047825049686887812187447537317797940453817038936369874559582905173211956897848193627044656673339888666303172674969350466956627232065902066626892678691665469954234557134697138660995713077762398722104789867868839979564949071557213111504924406583562198077824646912778104050161760111986639331144034558475802172061782781678301871122104897087310185046322037266859645638954146163184660775417531591059454928518992891371732854417389130018298044042654615941271128103676156281569823191157001798208633344552522032194782613217260499154422643839524207692098535107670554055893663051211080352746055477190417921323472131625320883545403312035421979786928697623663861682130674690075216184088273251437045460375681537912747151648529536331939942940197472497849004943605907954855393332207832460423847142613539923115247482860528290132771258816922924183952649834994237408646046208250398240384726947112267906544474021466991426808733933020867527320082261519570556059483658043072688649380338815981068943163682552484859327093150781443888470285301312408445165471063361644228387818011549797561636095927295787008110669422635172044147487324649938341158075360717108042288303185086404929359515834490710144591734272985948988221405613906776531228016848792310730601464661917689195220972347225893294359633633416893346540858305239660063961272452621088646046574725623191568059698136748039708150824640610860256626548303221049755921604997558998572887760958230295477183814612773860665027688213002048791012766039697606280817429459112831296070037137479462980227589915885240107878443672529778679695390542713952417040225372872559168481973962688133925877206827264770042776945805234140551678888619335666155517210111071556581548739820287242766615615143818274262634127881069657010768352984773117244844389859795196325334969051189443738510907902181544654073017126299078341692343760054411629459477083007716889410424887368766081124456470107666309097530661955084869142370711339597726608846881845327808857237716352262610202222393514488840525792508931351444151109203360386137329220128867989327910658288242748927582850665432416693819525185497170648479551957583292920759778523083441460675267804060160452086134998718935059419531866179755638492915254821700891175729089646356894504700627395124119314988544157480381180230309031387974237464619041621548405075655205143762184429694285509134413628905740205447752594008599773936417077458131123973798124086458018428450680201001742772778703095713540937178113644134872808858291625729116247426408647166395779555393815934958920788143732103659025629266582667769404651566657894119438130483995453503790729018272583056848023753988655780435579931988096639694406757399128794592826848228990051761954071120767192556364454418536248957045227777553202904067786576218019578998448915737189488493378416425956985260652441547188932725838154686413042402617705767405742646438031672121551751244200521945957568301101786114702896178055349123677730697194507628812485425654311269054207849747535528623696348183107050993447299026754999301610815771129451422055300244285883282899089107143033725541220901524921366152190007796899490112741683433602404947862194692252206483412306087988957542273173589967081016223168900628942194085959709813630706774599220149504625809477745600056455266955357714262973540376257129028586812347059047295317646039387015999900712433198629508293442451436902823324813540573523810744584880853544169108245317351732564323035458090440167038740551484322405968898630699987321586154721195127065677229729425750056106212203738479560971811413992310542470183313951358571643865602760567733525581669907963662455262159949441958418631234683385038224529336130041989787395046477000112730035667933289854780637930660489661373801415375168415750516746131929516841784432486736117262254017110580344526632648640264363294618308966365035046064870803964237257577364721229239961250897154135277027553703468642322912362735277031550899667169256272295394045529596744710395185540162051899222981072576083333519311214464666920747094929288329532056724201012555430183501365226185316592147521567497178000031782623066723645770560802531052486348369026149705213815583248633097408321496126325297895276296313470694950406106688075337196702182409669194998794229930764274499268923552697274218616786331398908279894183886667609647328833621773717492393057014805574666012885783125968925309019710011400988260790591772899594061097981376328745623665724602724004011275641383614868879712325568395242266847733723443915445384927111043608814940104756858081015060354379833862134118412622808345388519668729378327788333534349371213743660458606349330616854462723475043224755611546919701510449134895860023850566345022005498102743035334263676767662658744972730785332462597202924202317283600259100196334992618078999690886329949187589097477974071948279689722807326438144433111650612322252711544604776627862459192425170973727748184677649305998653216685871878427723050938309128181588754634448751428108355465132073944747248797361208200466382607945361514551409070660024607287984783393163449694400312325610563173893993233915941105936882399679971975370031072007229279931976727916763763285386397658359716090919072194912558243645109617932172351091387042792615163483937135084418103006638430049269626794929896376650995332669507565547642300718147010333353044520964827451200676376513332512415575251780526492276295777259428830424824822263221034110556060866388949995681327234484363926215707250116569173573211059013070537573988158555952971065450158769669933771822821078384846522551160734909378876206770187477902954079594130016791240829630525510671368154409404345477727692929814242955720029585817263386662624698767458680555975970456125532809448806626480002336965848395720354166554297827442747551271185842163529287512133882855000408007846367121854608987112665770074114970126114407182598406977913900103280686980185374464319541171768458362772820626116177372035370755755260577972801142707316160765003970164293309742191381040466187942276712720231397592417090409533641332095068412503022781062786987913832767632303575233688422382789488550549243390899596766522374376544804135331639074727257535403446322381251490270522861822268643413295796802700467041101627533114089127802857891237746701245394352333778799717335530255308379756975211518675708347109545490345877911306056941724915642154411343168272728420617062057667905695104804529487788789842614157515467776123605441317992141467013064094349576250563460120290143351623894125537622727134797728796573457999955720651746404349786951437403126740616297795362896814049257133971951325303091373516634134687766375270488217967941044790854015505717771760512056922587859142097568755734098374302043269755619689566966445875246804787653013895026265075920024992024131735470209165928522908780248056071482192529260051214688343028211233656571574683065836976998790366370396475493687938069959769030350124538098690128797756047982986927169743432726186421467867496483349390910723906413454427031817474395979803011416881630429760675587801321582270755784795999191027759551019744772939115260147289364237253878148378249908972801368960004584584087108673120845465555992860495435914805735460381633931145950213543255767516336254938332534637175667859632337920237503309303930208018811626226259488488951341667191434323864241610434615040845602541567426718399993301134104702924610144377807575614443193805046184806603957683642448567162809718536077944836408930842769353821106532861496577607987305238032054748328810275826511108850021506200972455306066142848350632484941264293941362222157590529688159351866401402919006079771820500041122739418978753762107249917890076927790376665470398344569205252325687353256749157842244861796842404513835089756735445959982171993648726670083512759902698507212099144979163021055035606392668028197177525959239121257965498949913502724017372893665652528319856253158279220867352747885781152478598393242230507086069990967355540622167792076446252553958477697208491611371545180968799581339399913662658009052481486001842043116702992642527547332365240332507448076651803279303921449043499112328609759324926245075240489229765601806229884521510118352279130886175527993686681976133761259588480937759963057660979240203971579915345867599803782114095410398607408736090201067457983812011364637572181949764158847198524095028767276906153941424134373806383755729861011206103979128206996286280690300240498777733326140262087025602073258730652016667638041898340679119925910589922036641045883558885319675235332845442208958675577227751045699971244253014585516651286656193368913590627086339747994558544156600025744789836951769893380128867276376532666188607172067037164769219944304178014878755764586907340856361740190990166537009220397106476980717456117674124298365624611859374556682178693019194480303680134652689797546016499818987012670768555560539698582320042531908293326666637334027048451519406189013992970126083862318343974732203250686933835834974535528692401310312814488908597368923631896139932554908586640428860847377972056523192605249265524680383957356083686871622339803067722596884218363822562971366674572549760441558749550385367011018598701058182112913298316185414649213339889554540819938444810692204015529484852693559027973240638633395656588278095161721581468468200262582710809448906386539770935865944286693862960811915572447769309182952104386874026371391577259213117369271169554578270522596012108837395826610455716680307309329407997136931788536135204870989824042968248026831819103700213641859363081323170413751672027926673576014507317534456375146717356593133747193371586667921339645381033483654063856341626684223405436032536667306708520623423963095645893637107638667739842460172793358943178487534295517407363024386794382231543493096237497474774377349606841320708513280182875017728862352668125421895342664151731684638090904268019533164846163887121559058007430960177475526255216375414151821306246232466621230750598406794677856757373016979737847266641229612135030543713430508255695982055606773751190384820544187550173087863143772070069543467432569504557401595765177904687288636654119967932586514978604598191320432207293671244244712407794329621202095931968852135574860304529429481658057807202396377372025110990728524473438378514823135873840704245987392639539373749948366353759159390421573226104881337362358845061876629891123351403429376324880827492782299749173851618340700181328490203699805882046643158578934848659391308934076070919363159488006085280246486568313190577906455044756984983329935250171454580650554794791479423664143551705104926781773512622058042329587966932598871441232021050167130854221991758122386300100714592782967011664401440239119588360380818118382865080547277506721823644205648263042227797642832850700137692479982140584400353778633900459704109955355685541387392909825199532360839978256693611468977793067354090248090413244936879253311122272226692749451974364073286497529254120219603791459676889284444358539628969786114114366715485879457016269287325926414863083439698762651756947374757697897517129508300769350228478256889797133831489420390962086548646358656036090945927372328377933143757328547083627674657667382940067841795870234686147829685981468943107856596391928770893636532358916973588751449939054552253121712957091896165005169664781890509255022048744636363499631674496808059977259233996178484220219338118531957154036081966750785825615801455964212374761422442206339347739343969014259203338870714054866586223314348948600510908768859868535401983444263066237747429465494598176749760174165823893126625254381268702327650652433891723298203751401418576750248274410651110753720432460705703120488045501926887830031721066212173788885709102077411246767348375195704459555743331695678112047635233504420323508422313363567101008543949431206015539143230166543833827664500319199804815839421637844876082890214200764743975032062677541072484930611225531000770490427486170743040325535631824149229549234917150712751571928079875199173763826604054141338198747556698564320058970946245818748098700463121770326401045401362787405200984727554916294611330468425171759235346664102499690876344731403388352831379908572874308842286494409082689896725838954720320782076501070777426119349640012877032132898516463036243732092836847158083822983727204931306705648503126471563281695315798922803499511479970813967629558758202688995009573179769675421226130090836666470889098055231676699710512823828731471773459356306369242887557403173644764967214745334479898974283001673618657514531414783189939517217784754818907099039942518560657286524015090330989103772565938309813133867973305110113419384576264440032301268083012174088294910115733181779677549905696352860892285600796062752572932203792250126446587351596823005765934790091698880218968884742125347487046389476162348535865576268713886205898798905392253733058999555697177997127501127337154975205994398890915476943150266811371578616800143433026588292584164765818454723134989610566847254696917413694614161715507581610130929953224909352501510945684205198019299969406721618533916721114132118839601609132900923468204669306908508091479544383350002212241208093708626627115415474406252374208265108381768309551443211886483611432607869801396155554863360473354793290431216542538889632370806631826180509042540344024814691642201593752670954510853200802282175270468321467467074066386366718607100814981771763824554818060355817717323902378232711005185536745556440989518213942237129284850756303381113070340790326541674929223936547566106546348055494086899038234664059953638183823687063612161854026684225532550046459949992051134820797490370823136175757272155790240447638169096972340778888795543325378542847666692803890174695189854564371279335863045742533812933588987354997566717586982496447203334041085352125179192621222820114625997287160890260984041046684279997412770827838191574349800225201964473710962670520387679828478966491427371338926577528958831535588274542231554722471029421894926936582104960978104401613043696752393447692452912203848870960682962061997374362806751384153189062220377427097845156862080730048888231755838751444316401979030002513892167733904616952186239298544615039799627801882114834060789284518766279592143875707743505996759865897433528695212451487120986390520041644219572528253888263156964123783881041645026576559260659317798625279779093631404234567027003540681959916220458072699058871320102956503637423167872877735084205553425984090216902897369148339753313518429561372819654026787651158344521597192542691848267514426563735879833080101345719943456110713249604567569820010002214509762912685992207360016869145923342070684906656440687143866862807707630769667466205641530152452990736880706762535330706632400756748055355214335881116686980170562664973521310115357167052873178624341711953572369554134867008752057172768150531171672783658631774268960058406433905837760505164134788776740183014155688213155159167891322040303198708122911144301005208248724391278094666395079843969532730218348732733595332253566806680575191603169377173151566493891851596694903743693595933443063286415708016441997941079580696331055931137449749315618998590905492431640301201857303299362333084020080795743179010283155244650144530963679388784901222204224983240558121211386040660760900627842096169400552599331548454153141692109822717546152826088075569285802944450108020094820189277702149355991181986560279934993827198637372627923012855925029460187818837567864428115470709038318080601245049681448873728671351758189220297586673437052299184313765345686960990735867263177328034804405572530826467918700171962971725305123044926403345748502054080121553585229471580146070446758142746203378602598180793068692412018465415352684456263682183686472596816027097390299999211847705391569837864880423576166295395172356179576058474505065971388183735886166673009515431798389343195792876309355178132252196980545407525998491047907381523897202730878438566210287089501595556730599831230898334912052610371661441930998048829326456065197156632790630012046056550639815562128700989924638512069657168663094097734456073760823387580951775116516266070757103437701253571473954720569106896106529889334962947625373565860853584619970468508270908737824736346360170870275091655392070706952697299875082970106100852092985656458489402842617559580979308523585949551475258222043550625362924798601676004526671000762609125823147956602088708832039032177390643200416634896166636058349068083463269392684508506111610796295729712653765054770736150776928730016437740848441032314490926336419875032890767755475043534054507590291064614456945959230481751649943846528863533571190978404194135221779318545096321202696614147948591971424191821667208808088975495446703084203380073922727388523265878516899382458371277126112641145459817940329600313427672424084389645251606409602395968173658716138441930073407404870040315812461550128076776797957389289923622459518903259251696033251137169910989126726183557364995808524939242458884408480173019735825075625759225395146097612058650272504624565228190629226457150455327327272450799639867607802717536083576529269673114424085517980510722810993157615887655305697560684486853077532921755548449021181997951573505590029927638439292013639615910657964066008229271179877351153819221743488596856050046879208958618728585403354952796265003191526937997887814988125597554654075022619631544936294418736746954212423215827654776305113784546935051411264376089623164453116199191020319979558828310999650542237894797621949473234466659029502094911163063100805399800640115470545952749565400222675136892297988359142911174767776458348374085265021666697879035730515200160307704468436703151835033114158105551003951327176501008261401292561409408214521053437472681297885880370940832605082206685178093675133196426168928542137791827045035831341354479996710904318456768971464713021192235822487903903209479679387104724259322107746289086702065022167205196893930161123474856859497740549417690473082583731226531441673605348170254699312864474555284908730846313922454914492492265385010472871272420421679799137039172151460788642581442841364559547435169380870080435635177514984792647279628486336505308125397220704852898543562719232333727140521558886755945974925849658561110765282065137141510847387971216171935771924271168902796333057275351159552549392798951053813817528751700762254146971266063525046429393540334194423648533349151510386024077645763403832126788959231532499110177017544684435034355693848560147101855630443138665457813287130899599775613233865955262823778559828934568217620240786090003225992548208156972101847078087138468767403625508629996484660118039860219377757695866724010614908718187114095512303522757726344182076307414287725056299314193971774983786296006605844060559137079481260383490898582100425690908033814281554857688195986820869400540569070582601017445548155595030017329801891271943314150138588436862517909193964466919780125013155751124445008439173718552148069088751648764609266767430051487280173118820986050440508506066361252845627126290881476733745512334794102237478346669263096446663464484351163805252563514959467711357858246275293264358675747475645648526002007140165369037551795183356184047354574778795673022680891325158947889266000581368424829734966249159363252101944711032622439474542288294672550066078416029766150595096250949299017220070227805953957311139149128377818539396734921386653296725929784761441924953679997276845984629973990389877953054609525391413931854434531167125433871299365500786910579055590539371623374313070782877624854711079872634496572216163921410231754308318411587874146965683094031899698270829046632606185401861293491336767624222144580855135055399668274810763076552207642788502097697580454926867316570493729328632045265039521340810985596484217831230771499722675238027513065671547349241590717220754236725092757898472231246025848478675487496595958785295441990379352059312610691498430188213058186151515655619838947575225984406292214849635782498950584360501900372736587261675999062175254609470890881307204536281466921634886201070269373619509849199346268729337800488020561304563839374797204666243546063170642218129388023819740058602402216721370797158060054026545763648451372560127020772938213769370841553014133361362703990031545848723445151061526744691445181942209775370607694644765534583791542234947263389861658951457616322210392892925638947675374856657311274000082971458037459056471415713734145200515965603523852064858233386338158366162094024558670850471949673366086972352675661116209259156269624480717621047870346604663409326114893364268645582952565445388933487981416502527068349720621233071322920324180526087345117910378578201088474379753957278415249391175135358644551721246338116866084617499511640699353526573885787557641544335925530382647329172950675405465906472330018236413725323958217810262081392595340960759508639098746556077547067887735351561754294683607578997062888901286535364177083870645803313160927039098671168673876989156509949267397404973094048270247030127678557285857275184569144166753336935630435652407024908565510850812593463307522011108693549761599048689435902793857420998695987071069872157352298269697426216682981006239873346899016264731009931651197057170060755513448786388031853691464752915360815411648363896668036244412337263311717725249244834365152261628812360204643310804359293334312440333297819971173681084992571201350006694631278052185428017543800509371194407137703040059553106514934931770570490005151913672216149240770431699581054704331951615880269174815380879431641009497215875704072725638064035280998723643828368351157874245420726590429798867027993670440626307279784866604327966811091584140350736203505015438576185325804244368394948470247761596998653646363180630876573120693027726857260446657358505738337247488943850658991231106284467240830126052482098583829395996479119964284387574566781485636605951991102380870367981047363916034499362341550589597067966532649584776250588825002319968897114644600941945630830242463955725469650061970027854890815502545728636795681927887398222334605553305624606390903936490778585771324847311479511157495530876728663714907160566160416497501651102270714048639493225527101071399878454201201535766552067665554059841893864914429118681105963782782141056625735398419234518568317499590977483333133924099185204955048849548303058952149330992983000090369047890090781758047676397176715852067372760528050711161131047976905545121985809332459736678351318043151054543748667638310754576001663357314693205279457547497741130887273111328052634885851545303196313504191889003857241792316560595161432607601739981468824657820964114330850089018730066395549383758588721330889365342114008840040339837980934705118217076629107181026322222515791778882790033479953635774109576761513045665310909592136601752748598861065880488659394795754845433534597435271988863900164974423344497271214123408552009789839658047816239441404004812758035274954986939752486310955716147578038070591951658018672288573223922380647356083504352082277952476695100671870792102424803505933267825422443313075003545431901155152485486625855073876678725330394152302728687473318250170114168827557249984568427779517581633897131277672487749251886313374633851158031997799927537987370605643069406886504151751764074094000125546842002921370303262869387829797149628656257038256838646833656192703546802109042632452568487597615099203833978871716528305358095868775874941276112179599129162866982809873797161887481546247784741121403193164337871741419984961161448022593248757730204677080894002188440735970154056617702999831277501126802410142499918203012079473375394580549596505442438869517325816206136909795928950950933614490134816754758149908578218833433274716173839887283466271350352127369641951301824288229406695508516158764893379198243445636998532242684860433477874106239823489879881220202068014609490428453696830322191948724787819917594172353336427822375224217051894694844112111008438180015159024572731552111149723563600137975816332062019180794535219554326634390786895510159287877410275794713805402372143622355737482887822295949869026193996692943616205661977879845465370322275106254591831759361181524140386636054797323653947926839846206233450189894402480258035455524680346748055061862030014310089934060161411596263275416943699077121885032797806871538590410524408288631566240665873367337868090321409446117532621594733362831284220148176217621377318725364769767241533746617186446534094134847810062047329348983383459791854924380376511427593128858487854852361884606637208975997794184009418091934045535948937787711198092171806510998750050738101574077898199195763611401062908272958463699176692106918877916507224818359655456638405122711977390018945583816225757196302067130787926503371088594926438006590568931348085435925440113904531906034390957019379384996404574079503493428415622996717619893773174834624343657029661445624977495263070512090516854783463879925559981270469433659008098272893691039115703150474063519998997551400059105653595508001668384926226637427465696356726201647101619633003808621802247508035710538009969660437308920509229901725652162198648392195167068959452691318169323511517494586720566179112043077335553882960908275149280341630528905715987414587217005721324322591643484711951532894793907004404244938542816901179865723215016348157376375022436477229957097873024452874502227211220277455688668898163179860545283142441522661357365129876456938568598595146671128177303572443459787204393945825607544554641172067800827898282066004108675038401971436769155774188613990525805955361917648291926968141555831362110872540821754608104789166340228864273280662128741687618679896042528434078812420869931160015430727144964621345669468250958526835001622315626673186190551644569042530770221134656635698658217459433364596581135370137799088509156587924857661375130065657341413061618276460471441814408648892604448189913461832583953320361180103412437605512424527431100648213165173253838197458631659203685028937030174692779362882428646375804041918449922170358003918647258027290589435138567369821327992016891196409393986454966115840981289284602461696437497322087313628839021717186726172755699454549576569248577345947181246869111645234808836734423560201661606979588063288843675421914067625852865871212984932223644723238901226583964376550217114450116543045879087045274065920522412238280643597702504692391627069528345330555168630568185246204951394141509714236800243172069857453353882077309321037322639824017038734923451218880788881463399801349702637715789666763065353258714246000790574853337462920323427069810952467087247110066984543790559512584180998415706068905320197520653577013302154393325924481636929854349978545807864398095536811793662969675132842852956566803799637792792200378818180190672048886543898966967479504832804901470984997164658198170494650307581864567288612821936110533303414705996134850006396900582903594135578428068501154713567221275310511048947093117177377305968103823049996262761305252956316142860928639076296138200421476688331080920452084808253702055864371956430787062013479095717862736976268581871980536269365354312878076760058239170416837580881929969606277819232028655599258128852885844349695740621630241747354731466348333324061026820775190924584221224955033671325361483505114369003335723451645702457742840644668687274794638802077784469198561727954405259566572349554990229720231201247687139903955200065963476699842228241775553958670303409265142530621644786052246492277145979754360419897734388441010270025342021489448561931913305380877442744082146341153665153733411019217127368283313352614154197543435543122057834391136197053993975112968024037440043409446092157181411158837944027983764521490312140090965832230320932454171672653576375227265467013476552250363236951173681097249824942381409576202159015629840481840478123378229639920010933945560875885128928043829108517134459129302822595884735365763416499488980491089993483349648395929610436466032505112373150870183769720987136517979475392858312679448917190025768143226114021716590756491092071361135103110910503938001233159886749341404929847795566219808468195281937227046543498145727830688188965774990130932294511697624357342198600224263025208558157938644602362218030428901112473415326986365429230074495650359534094811920632236602272497967377156148039055494655410735100155718341511730926565033566142050239437387316671772489685470659633797389225177520277245111916065959765485557057338485162152741721357437112619344523605117658189596518257142735166581939942388847488447911217044278131335228384738610029650925092633801364223999245842396099832320214651702567271268459631481436728939789434415894778237435929093883100559073308534392698135752950909177788203101692688433546967944160072850829569936841400289098978158234603165983300610562620738332139820935316847309244643656684412418946435508758772109319881421693675407202947338791116757325168242328253095772829148808143876473566028528863488863167122150139728556671376047191585864105257321053824017514312142767526843760134822696315304403708579693612825389768025247387269591168713046336642006388325741400677528821451714518623963272463948362279063735648257785328223940325892103074918787098071935394394902082329980438419746932314748058796360394114177378519269691784572723864241088317328560044125450133140197883027764062708795408350304851265999506398699898097823137176023531832768256868978020713856684181408706208807168723754921740368253810169041082201626615105532131827794594884906778582079550348418709472398606687812802744275221978306163013081643005258526186013747187814202849003808558118656630613181570270176356508286152573986826367148373203489943181391413920157831005261610256356551436324478014338142099098467576075215011692650511814564218550250181840137690762509566018149931994030865288842618227232313045199591949054304464492020557376987196159015589402799349411822302837187596711990778315527902569525909257695064911783363680339300502381586831578957934017553782534867134530012877786670306510335933746621267618549145133103162965231497851568579285075931341048096060004451038026115469615782330242533672871177360721235503570881979580434128020310079217402145624906230990635068059339598137703431767538266416904415324550870785653971278952497614663085657270646860934927784743712067092776015749656841421797827796325369128882589409556654388498068268824566024873182591636858074979630844835543640619081781638446368649069218513520426266939735676694187626493794209128682196253075361384553489675088407406205397080563709343333729705595919934795970053377201242314741060473990555220975762522778204304139270785175919909116525414954764808867073228218758114614828148007456861645913091928070601986051513953514142984096789843114788325973264620309881855981100809954873949054182628780627606977999024736056931373610544259520997000848312621959245510257813501290022057696761268936414721051969205225371011842006053392108786351354853186118612238354224284507041394764331904106007098178677527580632589031186805404067577952484373329802851552843365007171704268008651627551824104339010084233655904972666945176582291043449774841653936777005159975773418754664880163247982574221703423593871626682626197414370608125712937380456395170300458450396135477532377410082060174431055692077530437033710216310273862183117869747774395201944821633554402046407636993485579724838315711992723129144872305945623265851054839663086722425402730858050871962018595995338016870063290010980177412074851558634277381304890787620200242134244790257462437855677144357411384529793248934182287769689628790271903512856491498222373849390396562244627997654592204331927367463193167036490988184415305639644820492253459910884443613255652177807386048903991732632014226259502756589932771792459910841685958670098205838654887274371938839174120746174499623079500774920789216325908101586246144920142212452436433002216235968256360474315795706440652490853052281637989324608770318896693678524235596129863404778390216410264181266634362264745731829389409047751931044129912495207739269085166247682109590491171912454968452420407455556676133054585868063300562636277176074831803613049274037357397258743274761504894418355451349139700057907343607335324512020447600523219162815626753851069189838556571053102357505397793316014692555812126765875098420664217059557307844225347357225107358400233889169503260886901811845009243435381366012463653062182541496471335218452229253121405947429937188531832797964372635090397929298691773023676240045380395205291101300026785026456552855255953014348115353701152022866187656201664588910132693461361632563672808305085129904692228851520832587729758142497481987496326274920563330912702601179709672843984312793466459613623890022717751771321821508643311426047923065378577620311716850367768216790851333339219682300983794257493074762030873843282615287417286327701281233757149090849831063406877693596069617015761464958140282438805013230084023655641235972214953109699021234617038433813005757894673662173491813793071650969815732732527383168946004845960942281058014780890299284292743701105133223642026695161315141718961035913493398999522468815440951641371109981157528789119034782927290435793744113919120876016562343535870612156393370192277517119556693377685466567146603031566085728758942393880374541408159622215159895757252291697599271207851149545918495202577328723842365308445480139069078970377414483640665709291691965269068271335899251655006713100725882511862956411011760220138281566595877006075006981074780021715511884406911422483026765007538461726517612385214993330853922949716304143891471529619590700772246266431037398648908171396409686422152590173481038882563889742775349450640396754162375841508943688576011986280600074040442284799550833408003989859562262792611758090812212478788275322062015393474578883471017896907579702905126190689474980193345637405802768433501272044427312849009864015003402664055232831425172743040511700139263276686144031102800806598157978626609816544979688308567888598478846407453590519147489253073201535512692234413324328788011749888106016365669654236307140041481603829954113275486683665456658264128628951460684090341656979715131451309706922941319451985876129894098192728996365636527633224095386843963691532861920292296047847488631441706740827665967275044810556303446213370170387350678356348310851780314135194031693160089590934450932537130623717072221635899501054900127577832439038324378369417201714063182822029264691481474013732078979255630558693513448174137448048652912634056275039821340714711296908843756818754303163118803958184008155297947799335230121311950604350466977898849579508733738837756047045717424060903582144566178243751184947303861038273332353109974341473990712551893231016522727875318925688211464709939732368424171247508918948554459544156028467965251377197697085737268596852364437198176655862923867432007073759360609661033004410096558041226655132278789761939714308454109294414044930524278126692632967740170385502795751582862800376000783134393004331287676119895175288624936072184259230521837380276759260627951924143203401064504341085113277331664730288232581471382645867191548172544852543378604099673355016997924285193140635180477974810317531129961987048386767812025897079459339505202075927094736335887441306702646412276977445745662991995046403089460418157531219140429995871963614585739997090888775444130900920480182650587354254290553478339652190119933019144880907170409957025162016444836815485253327975513733069741491070034721308049465106370453976210996203809896444005451960730070645921405549281669367583506502824001561459414598729246023168733706895017643380970738710143425008516749526859087958857177010854593111341317190742353290183562253339671185410359444411401430194001407195051027412023759518189668668065532952512617035967482113993510010345887380341482724382887501541004300857569627200526926077133875186814585494181501888723355714507768806709723353161201177195500338884582673211183960975708860686594584693204330811089301423971071956059077550486660647026258831585440165938112021657160587352912054264764560009032305195269674415098870609892615923497469514424776639491998135778394589073352720752017672764652529778111137738329605358575367875358404137632168445552783897044914681912024161325154423317966776726514263594315775338892803643670347053164649814051853265441287957597411419086395179123806818778491554065876716612184357027517559829079859510406287632024655078642649665462589912835048120398610544090835642294598772434970617782136248366305841762743917859048153646294472921349163400936829924798986957368190061966061631466295071029398076425973702489087996239844861424333199661562340337987785762381178142287101427880979313746635257641901777343589493668814085788714546603603107745323816671863664587611954476551934020300238794861059350320323987469483210352353480218296635165738836414874352831449558249776767352312863803289591838100394606133863004826605563530737788769696881504545930252406255679389977567902434196322150611805556998847800338252503363579892285966978861060817529896296053022138451119524076956860638705479893337962340989029595284990441115953628568665613703690328788780568930500582428741178421986808521559070110303944578262654232506653229039901623328132952738672097717967731643135436635638853461501497058610223683787233642838470960378050831737570379553478938538574489738737166065830270977834692285849022972418256615939220536693044870623934939154901261635008496178650112549721342223539263388774447422398091934428451861769255091489181863270399180129394388785773354191442022509887405729351776123171071797668450288215975390394086266870961568108630511092324534884995682474305214554498368796480001313973566360486269632817964366820048489426321589801728989123117314400225794058476934168340261056751705813648483793263381082004966655538587959936428172493318830431598755444824575681130506891113269371154598852480815699323837965548415402651160723644296821529774706494167686073014719742649911078305710854840114628769518142586453982942937611569295220513876896129125062089175594864943501350665203212718083222207474537598161577729583872303624691754248598359658785176630945896497567722454122085530260611442353870581063312627137052989655936532750633397816974495364915719109594924085915173114643630382525074831110795371399269668131819977869566597358584707861403793965276578667744614479026507061184926918343068873986162092769982438658493688526913658787582186249291230180804730746889894677768299648410906891870699436618161981729108710640001993696568311899888814642953078210900062097539494056477405935708278498035688926010833780659504524305082938306233667883023682036494874136908874352399545756864787172886340040926643296074898298126826418015775979026431823462244048920718585300176286876902296943668588905783259013392677869947951302091966314798648969374280708098599192350692266911434561710879761255342319344595962294063917569726622556421075630290574025954623250866931538408891417284224323043154467339482781372849324049051394835489205086904823406113817473109116339840721337966523614188997137051384245733976965307362901504192641018966153667195438601257446395040957627023001855289421777400742867769589103919662762271309003139034316570088487993674157836836478038334467909180323367606394589095352002725847995687128714250625316740134740926505166505689466634858890259024289758196727193062775327674440730028933323611728850763733470567820807180966691449409098571090084763555203808870748049012136706670784021134744283187789330164285439072179405898620745024627790208534103238014297544022909995320280672606098023658607107113702654421049366755356443304396215609973184917615482413409034240880574642419733196228766651991656120940518312348593384494402880767256629892019438187883141376561974619485093689992704018199406079680292378645106589665439012919703534707245660208294931073174805678602442171908512540402012311946637111218130877497143929921287887077061155766712007595871196976077052164867158978061035963485892562323749220770259927705523287528474179414145931408893218503092155289882571149353773279335355652762031027437032610625860192209847667957967069767745706460073544632273968838878341597430884981448534228444221786531448443328073314514885923292014147619675960365791101445635974358110430692751743854826690247600844930648353200635120810313470864050536908324418546499641226201111769166918768023080277146472210870232342632442968449130573389057402378419372152942509707637321670034029022490991052523453302870765317634213972038619274961729737529776709703617842760954434650172486970949845009087335687244960088798983251566913544043455533695498611284230458516998514577199295502623876325652941140639314191593285137634515949939012682307494097912514185593676496547264262785078048773317596971477724682097013490767834850935069938522292963092707165291871026601112080584763667219648865159475907239081111189109555772476762818773962758015442959083289806855441240421557001533882669202898607011654160419664722161868898018562649934219432860446040944614186546363599961511676377011860548095222382295346942822636235725804396409748138550746501800101180006099993496627600311487089369679714666123220812362036844914423398482750951733739735841237377858892331949066325889944824352587466211887760740225704801067756695458025723078879454118987682512606696229972400499310529569786079974388432130445159103206341681210520385785776163283073141155845374530292401338936617999326302019816673304730412972015820480488002425415307259151039517094918861362944711134244570372397010415739125203929723341383577576671720270681665485386101167910704349289204973063961204971319219530723781530563395931023847201427877804097474263240689299782203739875584813346341423370890141553485339373354815009544202840618507738404094592428892728433783827850040278853152202038091342036365988598158536067384149746190586093024084834489589885942071131009851311061907687904289735256839605291588307911473017190678946463490055351593090205958686628192064705845824732867782751549237805621691538075533652941325312786483280449321672816870578309993315682727079790613554708588512150758738321272173363912817630779483444021610593470038650251870872516535700511117303016037719907125362066074631904961676833858736229615215591246357765206033184419630025817790960398214276846023678784906874766538466116544947522410858302287271037336426333708889558455472568712438718799812679347784256931850152108836295179428621825802847933035113297664616032013488117367918596693856703547468316659135982157549719907401700428421881727659155419491828478691441634381309762765064858855590707894358566003905729811603901401219897157427373871551563810558922313494970688963048764190084283491439037238950680976017133245085584362578098511823686955548146904748181551708855277760736187355832482357186466106368009431220710284243049038080398398934826592791546599191845797601688339185119186450603912635690246774733229231344668803987665334631732803439281194441103585927359709958920276689370626724598466727490967147525863003616814907252405974917799956599958159347715559730939736845030632133056121821923719192905096155963303187823495558586696416245075009586843238605019800801804153094049216663568996895816513044713875114658761815010626260434159452213793204374834462933406116386602943319459378636773623610337438926391641189168391276209820013243195839869039740777463633198750180283028094321136593804580754840763245861369015815119873273038423181681105142630684372074226249151393386183731667836959895422577622384209584518920002561344914687886563120071914985194720655775163057979329258989900043975154434834605195989592125749705726598205877050888013144432742126681818729974901417991290246156911090598295265824022441013769748973704475029560841264107634418502274898944378710612435192314748787202166878657412099826546196573849670593266258369609525030936712225092119950980221709793882319986602400852107636654621594578090419777804552395521573660932148896924776950414873157164301461185944724044614911975515204210597527762603809296171059037158506146364472586008810506777135153653380943025859064111320829450837300538672908796646375698302317585359599381291293134348880465454142361792423347191908464931990253869294169416232398525629636750369407626158641790139651264733512231278682538890787383997108384162506358710804156973760193183015784087689932354308974148600575886134766150561750789747990123473047776035943056264318419009211063481713561103921557306936663959667387696827939887549325467195508561830113111821666977202703738916552699592239543427132646884509618116414036320864658547992816263463966114829183044710362491902381749689211914083204045106237797351864014887510483134686564419939204494104796087355824274935668148707368999239763804157350066022839172735046672125057902306860380174389736309972578764401055718662494647718438635934107275703462358743279350498076674059112067462578925792806067208026221713589244445290531474863045998671990693938258611964383671662900128680525446382814992350931441530817866659017969104239766614741753609670626254512486959659096333737091718222467413500864112535811010696540112301728312987365928475326969656756534232646422791782361163021544014838031692570129036140833887519668188364757891192822906865932043303564976710379952535311183346734857390568690747081078719197690011009879480481925505813171271051857977896290177118459446111893440901182139559112871001903903799130874871379667978049331331627579142645707627953493764942487614363339191715028820294631488002256318787890726425567261284573402274027728285163834337535413463315353990972294209666096415340321983963216838515207646519705961627818926365688402379359243433098851475658532922580717014535939684402870024185796450249764982630935529201514924944602332342175981921228973872850921126787376597638795729574116027344434959511873553259080440586569136734006864687410801839402709782119781595339272280847588739530097432164289439950945268832716652338904575141003500821319938689879751597275130710279521485906688952450200785012174226764130514506379713012171065138185729619099879597469603824772602966715922575839065020881410390819143748613255791649955590002776448476073867555509134247014220188979974096168579288204614595087892347566557503507319167667719837781558686243901709985964900952259870716444158641469671775758523459512274176590506031717287844757517824866491885385923313805449733169005132623499913023844808994328413578228611448480286786975336497865254983826009096313610663376996095553706662970218141922695364628235648543215472022048493739495190309591647446853602813035938092131576558026897198706952539320259721691416526688471862740612040310362219862599943202963944193880665313963359485170635237646892488198789636696169965233151978287236654345507545421614952095145292006622205939087941714725247165549498119830619971799754385337010099830905325944711214743083440590625230731113180798545817361768490432251007805707076025974174739591748447557752568209859315019278712294863683416913889999061992865126942425947910428559812688735584679308467914151040691125478427104277882953485431826569196022157806772118102628945858841724340157362822662605010209739534344169177274698043985425369266564016792900189273816552716672502239375728949673514690661794381001894616484759109526478228979092878850436023251393321956026649871449557130715536179488531740230151320053811049777199179812808718223357483881113477824245282274414141881677951814666110726144956548795950029155462361228822185273037017089241932992240080470550301726123481369074648616769463641919946072307837275892009053628332505257004966602624781462122984825844567590126217386557489112554268752629849603907590067337061581902680358375770203305456988208871339285767760417437314732665546775261182012751629104525897758969987540700687722249131262089873636048595901564660500149487274284343708960586611670148053701141586870972757899215521827615512404749685612094404648466912846505109441086665740715894043032137730893725406122268980239912942481849680400315723564897564007132302854400334150318964964571004206011368702822269706101658581599730737777226771722556196893951329111210816744987026522698818065651278696777699327697150783515085303432435643743688324179149546396556727449516984861871875063653415207428755638373518078058477064019019779596523398684386038524524192003146633050474007671689344700264070387318563883738120858733831555160494484151629586688150808000858934622947318500478087492483262472241592937359672124323631760030413318406859261354802461286845800377683209399865640865402881667013648556513067644601044817147869027650619233701552427248728346766846107421465427037543783542628613654487351221564864907374740736768202856605879473002889041706283870943836530659851828145336127194948557610301994663886768301802863500240039497356196888338921745691768279736302433259219687194584828243125688165620328747508162880875590847455267334657784959166525902858429565695952750203745560147302544705941653284025313185628880094099582428390969470234519393615136574971509475039876907354769448072263923546459125784712426396719193082298561583201947326367888916127777495081504253578027152026306885964783189663958735177241823141306717229722232393014002659350291702369938610518379627179288895298254511315993718088198668900143420087854767702187603026214702980052633355448627123378361264993801052809618849551809578753084600705874974463817411774661384346672304763475131234408959525714886690272870994260386098373996945262579655976717909546036213325950362148801842839028549651479222861411281023199761142844859694550138419172353174065635397827415277824138669400205368134735636801165708914077833630813241306006049345274301008621548651687044602079788950822813354709388395364110077462685766949649516405089677350270231600480816048427793942510427846126915275559726267651725422480338832423650055083979548949587228004416556635431006411296082000085142461296394889477879662583947134559896832474317140092684874217454131653440895355269524367262639472806636695919808128102992844956431447874484311759240361052878515796677213623643080956224659774135614249010177916913656844270954376303005472890686752724309232933884041639234188716082602031488245099219767202610842744543374379133142160465000987882360018580453029922706093610069911151238477399219683861300468616693558245881215186555986029873738182066415560101940430643949767960241112777971983565672034623618834831942101846724522522102793333180962375179455735947576679776897106722151735135883859964685494039570235969337222493026282148763401991465323223530346950953764484739827873901732240965260377765671118786348311025059285737239372625937230624351342577474255828912568774161797932459326231026905330701147017436554397112463631692958010188539644990721131501499358874293744550453870287210034134332865492914454530767053491254872731824169318698594610340013596598236131843694243409036585471442767440947784795493907212561034729789143936516109468590867739065820777864932744581004323332516898854467086068975861875282946750422417235144477318312529114215306744309753023829902987344985885632531649904448241005795439909591645751961719219367914502349982754525472330286887199026486203175160041732864008492075233044539359433526340755565425964651107371085788510450224049124229063146799364135054770295016935641424933776164139995228246982112668896906833079085898148134558292604835903864126082364032508234364003073294085938671829060523470110630361139437673366284382435889551343805307102468409830558675652224670801128020662064032388064637481010941996210258242563478469421386418220137182782068625232620967611620648168872585813770078868132572290541569369756767337849189386450722767978450802516300021770221621600112616415704249256491656049241810689846502672720348739067366242623342766009359699506790811377902090982828206825409072800445099740430555767879708794736612126675087864832430104801379545276777124901800114407561302651471405159813371240855794017623463862980915928368017607149739907598947866355228114127052827310224015735655525296334888262230742705209954545645927663965361780364537277537761469467827883212972609237580353520494181550293543088964742735639230617343728362558812553614927333049614579775276091678012662085409928506484781456133872928564623124246367263190534803673827474670060766637460503461053187374002758863848364590525084048152849910216374386757595666265779523191911875497194081266685570845389287399841291255892070969616173093407429635152487830537525704590810311760557836196224653843143828804989127493040993277861710123547924591042763961796606764453884307102540122215140492751215684895188056681362621235736201690050864649225354225131062891022882379817892326292344179448627231232131754391402180512084439308104114875893734155673463846278341719086081474087393342557147811215853244329149711456826886092366899635206989307408173077458852772241664166663867096645551171424489251799281528375653291163510829127878449601015948583504359967916572740539724883516639418791798817480591602329936102975226569329150912050953969468239116750461230682761966427733337984977575222736097164805665580434206796793261886783791676266227712402212542772184808613340239719664098840262276873878850170936977114599848600320093272850691765028649717224208124345983188983439577142288051617439982811050816261388166866932624829561039118116228009783558235040213996510891877392743243061905251646121267996929900598562931868742798544048385351547323424134174711109926295357678694134854611361112664068210032503350681102182361780891580875577588157332835473112738301632371355346192352883556714539702740128799329117719065057970493469541278474609332335480935962419522330977976582629472525261559864362884263343035890155463967907743376410134835072718737788656534384947976220490035513357149274047509127916147955271737537869262715672918844933548804548564330020380870584434123085954957588463299160160269552509775764882734081960293788927873597585176872750514117103860852025459323273688353277804196261409158174114948393292778427651577227811369268608042984355419198565424618037818082879619289645235395531967655355210737731565994144757251103549934150601813675891239306510623273164760723964229130431458237567171434652361828089405339780820805353091351062781635966452123959416353733907464663036403080825313881004705153831625673113134000273535778137702914888895459628227164246462884007255672956251371360682118682734255297177096396438881506089511471614932336498754329939564900330767709789891795395852027614904895825988842155517705398328723749905050104076890984911947470740772156439640985437342499565740758667075203948612496040040938422701063199000488408631442068893981744127099298256743520150573981673902753001832675387745015261998604670517945441175565565217877783664365687264398711526961920347824374302473063032075316265758580554907116012847063135784166102170921354791539449765243533859554634512497716553918747882102217287363730885078574234065631903845089166902188298415257137870673645173442457915520428022279265811131727823773520512757875794898791026429109893180013918692068413273312500034078810534262211953625107223399675215083095014704160585349404324892898155187769196821190233422077526566127633208711094162045337342205417881745311669122309271775616600882688648233042844966942191279603191973981108465954105081541864541041983328071041150331973445430936684680833939327073077810800362053994266693771850737185726698687406806145430606449649170028093150032804716427468772099862696262288946402384700431493904798341149832550316675587540717653980563222340669365179490457130723258099860777873891704685521298147605480027805973277301583584466581906231368992105091818573750506489210940589329357113166370071396505322197362903739595079733880275200064726120688543587456118165326120549683468818230249123831688336723318314502406281433396359635843223170958144662712953310313050256968450685917580195525729184108936735099732324736575595930557836677560202804193025661674128272420247563597773170382515033896712150533389192320854003958667586545680979793813737364138911204931726685586662469341860816737364816747588617248226197691244187488090762767262071811969976818666371153291170039148277604885794179701105409704417740054223454268699006152613920968472919853482405508943917413114463682852211549351611409808705005108036466774295554544540946757366037038375627944476644601823347484558412710227426993237263284536503938465907202919090489663555951982659557133885663323115093516527003115747710221082099540984557974589048440345054019236823815263393560664206825303060258213482786019853125903883285599124106987379489218230802705599875078555219142227610149613451682901264692411658954344724407050891470156431015495006912634191252117376510030843738128872619227846016152365309740431598206180565038094686044947742919731700664837238415161648680647431186969047153125703154729815591454211376375551404627305954198207887875455259678823698000798256601397326413134208513841986963698702102417427281715033510036690972661319011368526028144649657198033712029010058514832326386090421188944147000393374201503419663464142005276863174288804835869043931780660877925148435680037732900067771899899116786164440190575569137842319953132074155434664395711714628288150230043279766698786212494589336800481519113274371482486617365162233164707267339108385504025020418756830567518646810835235834254454867953769057966952116457543197110859473469967467556602956488982193657990772867420731363360647188462504119578810828351701531847798173611446359618480968217819956999292391719848101700871451114285330568272188026161538570473636201477919870941127641714675388220786550875594051043292505221512807952647544416599138958534235674529037294230832642510493294129045279959473438163806189805747673593789712868585260480312309546658119905771893204640462600374140399088304644665444413953768183877820679572983640386956455700250496128690075681900162400580270546821865350586971196953764058579821690003631966133572118879690072191140709509859462293886373140350350740648515926677731707050747262611600550200673807618342021007818856197095856610840031650574913475775135346472734507263848880341594151479779457371609334233488227780121696208031819648273421325851477828592321952579511059858403199666116013678029802815324716168313009346436394026962525782145981426342536766186861951472333252790156505040573696754619316808009123272894040670652042222176419757638640282134528392111821053370287675417433658498882590513658398827527312335500357689508249870877888901846934326398170513523863591366098437062130406005338259088361281800677226987347376150507120582165671209753983775236664762929605372635522860375757029161180651753067148946069458206923891667017155762261320263395127141330739342460316932054619562705811565944899266119752106019788835016225007510423396868866788745215596459176037060872089573175176422100752775074137936063647849829966126471384092627527965328983921718569679614190785824829393483527563425924392783958957980667901085980670272872838411254520592590105506994230825642425175211256016132036850682906870859245536273250545525787204686956150749676746097093897843232056100945574291374107951719315948027671599374015553815525956022000419621422994468373160026231992413688675837839211760889226500071013974299107214334759710696330923682896529194839575081715636747938654225183544328710161306188312629278985232177462023647753378116657736393427545924771954184986206107075033780668158978777993794780350853454449922385721307036078370240191723000905901215056699427298283763604168583442156447281799332258348064590673795909947212172288220287572627175164564814561712390078581123412607973739786260144968007011315638429874606889194522437618904990783831343057379941228917682471825557031479743470965890768381077983323870486602711728875100529409688794183650213780709410839339152154992842639444849243612118580224180357487176982903408996549247607507860931581168672191912628925164718391964068746327028335304068447915614662292914826826723995364065171804461986043850148428286889413567733317628752714874102678074447198107350651619662865632505453865384975578084368296158460406102521633782534763460982308678752258004666633345396061792249212548816406267928168848362711334948092779683124721022646664017939672115002469584847264008429504220233221839024055853150376092312974191672380636867222192564541406860486269259373543267029879532637745408946532895051960376514047746154843295410807513199183690744173829970003471509412010583778179963178440469837134707759484655252526892421613289177678810877666940941104725663000912809948500134244385136510906593188349733092666188488421549269712662469893459328046186737475216737349469400817628780268962263130740843156923802652951491758917295553414236198247454339789156931353120180601806706325943312199171932594306966276516916496215965003871561309297043279263703305420022859931909345998759607593949211020321988071618098484214882602557082248448122700718950793584572646637249139771104313336761893799246331082279407125158586862352551323903937778749883315848744496037713813701676973302279276189620676405192244339034528881591022280388083508117343478422697860256169138915570903221858638459716831148939036573835491332745482737723456106899173056106370746238810301425301781983290279959420582074815713305587108269451733791461646841721146663045209791852818356913638375692543654919792687302402680804683480718888125367071890339606554984533982790334430956944643139225884060449100834834773607165183882394190614618950600749195806867199524959789646368971415156735561001779573897547141047936030703820646888724199316112780912540770350685194968694942012434131078948564336984216933517895681939260795961908020056119078822126118054603940897287606256183016212512781955703353523437651578436873619364214417883144514306730370993102267859050519328813378434345772217599400600724391674381866444501144789599879976176300900709916017252471367703424542385988264148760273220575930933049084483631808172000763155875830225463706247953497484939596856044572143237020592876839194724659123117461117010724854694188949264519361176662396715901297155350746075121750422636884796290687993454688064729516488122865720520096255569945509520868736379278287799495877057780287867404707939513607281974988795469327664006071256946176557741171060171502280643553569869916046277711123910475434810659250377835641883829429381898432960647745265962214251881717217459725997226491190337822081898410795076361638847806252062454366305994322576844427661786043764793129981081731061365281063132747475184413232777169988836730635246264326678009047854569694874246427639815790836436754568467806584965184591036632791567562634791642495877273858834759887932754416304959345904097489525480974732361525394651433149596307754629499876085219863704575950033304393193768451846928553512320059025312514252980390259379755560148017279254649265544633755544678449786951127791890036735867275060832925695981182994985995924801285915995667089740212419501807351878454470302631630239936713052867460502018379107809601444933571972249788643349398590610424933409550835952364526009169194199742284154413174607545118992164462461097960576120019724111725541781275530371966624996495418714086328447519566729493724814700438036231928025416878862670726339546232382321554321689522628936109903580322216327389755967171793192672163189277597860035484170698314679299888871162191470909398476061690698115011088874282977231546916797180455805666589742347779164607658758745241995478075669869088347198429077958269580093980325816503722874065557943269630579249462817502274027942112204011111712535089655636893923385638184506028060062717253246256734103869067986255399663729070046784812976093401969086461347500703324425307094617952839071467491763317042287116592987524911366331719482082679143319549156850377720830851328274190238456656267405701085469531843137007689730697302450650017011853006283224247392251763692209097949379921386403536857532448697733535782532611364791020470527270322330813795851350839310687321020604347532134527363396454767125080914644095639703599785583319205705381518972783917071338667209931608528938194912206530376905990418705281511059298714641554362237890629428207646275302436890600503273250163356508543142217533502591953505038242469113436702441694457151878785530842422757892561666441918195303122897958739743792915621536705678793549696439312701827447229167307165692956103386719226436361836505608360791901376277361904035078714847101916402492564656266316993949203895616910219305650009867154021002951206274057967786242829982942618192109316103573132847075310528269668291176169880465490376421713648425896225899646573535776738779587474557318013304083088683192021103033157280741986371130752796557283842545631935392238559112399020148035480808787891335572109053408964982903695763011849344741250601288800043979952557275979305279292963699600770460456142466510779775356031871939556538865588895959407700993425435384695532094908213451380087275003085532296342652967223198070692348399517972094744129442211547436008348080195134779214303884557823216835156452122220503121191007436346457777496878803113796625779184323840667455838315380267012915380977162302166719039482236928498229957800603562401445575267772975330542667986180375510759709593460937787929707513898610867039701158615839707144248679744143658316620452610731802703180875603703009523882169918447771430117363399301094804646651000955371635259659401936423087778209782163860538791813814663825762729397603525327522100820874620899212533767729019202558160795126954539224700482555725983725613566982473342653990659221868582563762146906624401433748270534054570910138997761300097188528036787098554122467665361548646853427222043273395130764698419349979830254603210945271161051989484271341575174991239370752005546276605819347487847181812695208702705471532562247170574323161624059410423077651458142542788262657238222531999813726337485698886561405422673560893238597465200646357636948970167570324940080480436509310478306016022364195353246262238471619957023203160424826650691891984496517968744852380275268232844941837320539847433559402364908533297234040534022644359263734068454450888926081783385595477095296124413973127098032881231573196265920858545869008139294413059698813062590698772010344183253024738815292954962430576892328923124358256913730230476871650448155967118457255560572669120615153957637909296081957241017417201279257440076908013140432741527269345324196194228461342272151070923813521200749163400006966384719740509824313634217964842455334302115349486439490334857374685073630134583955566119817838196679625061274196278186512773996200152401862449635513274366167770017060786095885584286157858891776819049345882707925162506285775194843767636157944237333184050924480337387447051361908009204423163807691028905296574067977738084784668970815334841345166634767349500027625356025247486416978826137671410863578062716572116761290830631400661700101781963384739689109210479956017931619868515700943980609723698618861244514487093698022867764142495810935344391472209864433559424036987051938069630531500824875708151305599455491039754680542575587405575628467943786621069430199907438555470540078765018781491941397991826802760468912258834837114503864711952000643750687254526884291935796823400515360038414733919261253459735455122313767379295886848680401797907463518209568758942165076098738524711142215763078422808786308658674795641145791333021912427417896413943235879408595279382294665858548958901575763126452543199449171717941631087873073564574247532468674831767070491280485603132923131592776901124041712288914943550861442947851912033732611566351102946747461462548959703142563329025449172388153129080614462558377357726491593754231183357042070641068391469645961593656298614676309813867245303699556745167334071269285951819826297071566763968992658659176459872242074440263013126793503251562329844968687757600151151765883925013605208378803545943239610379786036419693778615743408397849707816830382357887526194869833268218044654675099518381042674110055314731126089963261439440929903543552344087027096522893394495906796697115199760930177472283327102816938557681339239136441103055945743469943252363211630390540892952917246568683381109131240041985650797807846802565878441096173982382677103535969293301600684143608512749379841075762062558795682264287310474017436552537292177338689004802252173865171324721462139915757057356837000831814112764198654713385820215715699159461808342312264986818911969097885768772658952265526167258895104804323972455390122090538568508015230131002094115027507131276625430052986014848996779173979667869620119231651060901701280332517152890926669672050963030726056009565190691296838149081456139586227287578843190672909282028700291705400307718375413402887581184301074558821582486524718720576634141094948922009698232631675142733411724315519559378058200789230320628128709463556705675694476965568060373771409553122531332501352400102283518045449718332633450990440340918622496484555054642163514574021219453123497049450583504404425205370476793735824818671458436226836505272637149736324535170831145345562231829950680556813371924049438359704641824662908363581678373163565170321368854545915530284024372618366251383282541451379171729928749636944855800864832654139720385169137601236852499441833330960716998997676820331424525947353483952619660674094543983022887351457630654577662699005652494423498494470500232137235954023090418411925116216406566676181847245955207514551133928994989342817464592886887675968875230223750307074417904490932407348592353763720815642269808237910657399258783861353014297021526743176776046474071432319480835389653561838218142242875765299847350267993858650382381570896381848181536223214300316945823181342115048053561962408056122346542237084171071416270324808939475403906035677736850118931262892794518319558225602885758104304521892332767312545778991714919725707604239458319525032790160098558153129846009625387488990638597450921760580866329586085049182528647470548038716467753439878477916768132427425196434978850409524864238562692862143473056763594957199238523908680220068953964619510684099641282509883099880664200591161505426385271557092150309675320697915594503710039310515708508546984727040396362898028707417724353058369956863306561210477810721185748399210486117473691336177886837984449196886867660087016290677733864993353431816190493242082583763508079712601424489210592514709443127413587000269867573594221670317492971164227859617324062158601008235112769499306601882417698930451220291306010607237889010125691614638759619644347971838983842102518287782271254759128688803163645437357101135904256257253168742148643486660259531439350632720920148590546866832380113445793582262208123492499886359980122500325779882340143063561066968436152998536243367732228063712417801929865821231569362168857585982775942125574250860467155933556829532624744611604856790935772874131415516681605008752252063685911917315337973653347392152277802266895215216348393391064891893078828633668658830185806389145152629700775693010460914582959976147023263395373797313877573255870710014572223908782054538458077697713872860990738763413435666866101132358137919378042524724259213001732643630030106319326791841945119761133844263178206982749012094619495614185020776899149348241688063451970442832830627952945539230103541672730288827446222904267417892597822345378730251934715395754369378625476179977424172645805526602251572899799873001605346567267254087917536699620451773887320725737924427686028157342892910119086046909371791700954019408427183538103178322561569460512024715819102418336719911148449152947031734163020531927011307621222046894762609826382962786088287422524069752157348888348194133210799334277548239403037243235387912473595513999745745422857461692653746357858854230610647348248391181017166242685652336768641726525312593986841742682751309570673160143745544792981065608359068258477584407968041483111669719028055993868382728730778657075398794708479002729963994453695758066709029604934774352243583850272428424223041038407401875853210455709471204070497611776638640636562006477645722727653098706866174597133524824547260911094903777368352952904850618791795256109446254263324750293665055876233367356107135898177635439472202126125294883463083320357129956902504935552983883359624010496111750557612010257140011762505191605034502568952258905767906063793646999340785560990518696696710282127585312650890296840703553491081948966660538828101089347846984713010416910247510000108030818402230963234027605358811414765701739233186654069412940943941451929071513721073362963698043374974836336511067553665065791709486406981446015916986364777798840706834057958268927561160928935941088812099688724892815395964971495237309295109893080640631699554778887554806265509198168995985003397660517301267038579925528751638216444273418973593824621592158387471007501317705876508118058571180326028501315900118348900975878962492165050206909083497327446819519074494017332734326550458989239775196050085311657892230978222792127781952065247519300645359458594032028684406270901241719420216378704107671333493068354297797579505572041334298948532772383727614566249084836936592475595584633786751513664497109978633561176454161667803772455039419148624965238233896910995572525446927703211195060975310416206150860977984246701662696786740054516909180559117250194727350222351571437829757803832366556162560145683377015342754204465055890227984641671757386766088885174034713893608935583711058667580789888920667593076563751069320011180513193516585442399059185775073421347993862937947851986807481475547997855279547499642045644857795444869527397903026390826055414064712836616888486556587293895256656275332985317893821634421706502313024898631681868690518775042760510996420070717446299886658410065781969012348609633884596907359083756847262295008703230429494205978615494165922700997459526417376442279364078818557870306988938130329056872110776859151466098490319382591872630486739555528882808668364641808116158430264863820697884060832334602574798541762066523522735770947063429580001407660493369058927816467463851883264112435260486019130701470086509031772383659767257103214029240542609773451732384380105927071033798581917343494400398676539976180831809858018338207512602596446388662036316638880541968113544721914145375658426440412334787937181539536311813106545895309534009975810965799957679983082260951136992697060078867081554137192585631596526327699207232845088945300224156627111961179661229048142008368952910764325761820052426676075409096343508609505379009039016336270865666067502514018943171121461014728575182450028799238180122858328911109015420059356557912015708410743653847777672947877000300080687923134944654115734267109775546442294516683367375217209043281012543536928877981295100399836648528759327969477208917634796379433063542197293556110627588885484826407270477821161043271676079091543739092886151984625037579296965664514680107396064252597084640046421507043548658140127795562963689564989153120488329347833205184156797581348866404797329953894317152244851429329709483020227527313841259721590053873914690532605731205142993987857707078154470586899075345932601209119752622106025576124389674152646886857586886410577925762251719328042281752550076648677329547077342408469515346048776438498189834659310804415117580847972648478873249481758986178864947297267695276962939438727456506325483446617453785009996547073285966184560882580737835848436122174788629507394772135947969436877080288028036564017224204967039607195485067087939797259736850711226581385217694619227078034307174637334918484224648514238782026850166394408502103272318039098551080734224071141325547992784622937334506859761513974768118794871438381225107146434844441609954511098010689427406412423338988955859961835330172440121608224490313048988119279032939401293638377464862345866320190459246761723403123870738071893688679452068268432867471928181595023632040812900904457879998441073360886929969734011518537678087004308777685676864082426102128586276006283610913335511654641019138399070844911479785093653497884105641543796554582122253294501483192214810315120644736365865229266020889709967378941518766138251093395675411531832170746779067956485496718923833939563682485098722073896691778520563639233096541463870168531080021359138111905042624180220986963853324133616721860430029868762068044910363218153689093451476768549709225502693157042574877046156856157429231151504859003998703953748270475432494381014737955227667922272934879810789300601734031380753222890667428984140301987216384860870484547439657583721196797479263142557926170611902239520023627035317020265819603867561050581871576702763228276664439372045757842475005471505245734280371759714573616613709355960235311921375126940513341271005000287314117140757425493980076278690471268503178127216515084605567341758218567761244410544644253193578443021644824971533273827295454525921984127497952128728307185228302184069067355727133544279454033923483235444936374307354468835962122924284625401554535380148936414875145826256316379828187364440604760808016529076703177924481471282564862129108094075414072591978760468196115843666048306915071477370289256706489818702478918074579055282596271327901256977242221851545390867970243410502054020245578827031053392268704729271133180850676112581688087996502622422786520748218896279932682955577055675922255020563537012388765073906970959405396233520713398915175972912958143004450050805185740082342481531387109211464783390306971496153670448951880445583457241161950230124091563815140995635331402456909216739947911520279029826303041106421062003560511674005924781616832336604712983917336544139430603210731815512576782824768438216475869534494529109004527342891423379192361002122821405541250931134344563337523816120067750331929564195682421177304891838568440337717529081483006165927126258296571040701272759259281070943022178506477753287519104372097753767431466165677015770807075916451488574426703835386835118457523286693571752650366729027914379096844904364171212600017813199841575532556693119680082171966147691199948615011888547142243843227827551991139411104865649212731309625119319485277441714700606905740765096579928463372480600622034072575456747255948099047613258688466221392051051940709082389432321478936223664439952829682862156874768984979892768849019247248936240882895564459224056469198863196874919383231186427741045596764080700313844515845826524800371559786339573501864516324531031140643541789011890559174786236700265510230272163329078443743796526720815826196863690247175566048117066434668002860139073646055127235666067687745030683572972691349520464442512498335746725161693961004768455704488506725386884530032965146786892798810423635817754045487313598236116386916690186993845048029333617640665694420102584342913471037640487819068371398130806483696025183820306739973554489771324114594008974851291134242346169451464821327634820102309211984952932387117603244738586315187022554192609557188758065762081634550055304010454737732491291828147897004107945617537117908558758602745226297319428052232685355691195867341923231675159569582542555216394691453857650474296428435130931859152386822556988367003077616288054324476912252848575393646743564124104620684835432611363605719132462205877974662025591587803678373550853106679021293862679344464378131259238344460336029353717208252769310964629869377074922862804505026956054091739023781672190999773061347906768101185061610988491926997812457450379847100038156868985575105753917617482239430442849119965518142690518696387670936256745756117251769661458185495619448047512437375624779492626981423291137078421804529914814194041057866280416524299009269497323474105433459331284245476113656335750199807431096356744068547734685120735354557970703265185281321671809532963108019082702719840745963538056435774663197429717534797013943526069311408511281935050020835333847788819871935626921268093554546325854457519312539449549702788472515881825308995300163863572827322752263869844038059443227557774872064225429041775800950298593857715412066870766155287210557740961614077086735369817215455158119363615349898205398569532174858182995755491737184631458025599835752053014563301164611409891069752110163065603287393293538329941897102508783820485499545349964375142962104876514251422566214562451600867635692357122334089843687804185989417404219620717212738466499154383525442048787629221476060548326340446781036692667453046968448451440430118977644619149048693908258131660040697297550982783918985060070121299059254021740644808642084807807464327931192681816287043847034454189552481804421843989044073214466197366477335224410955122711283551336853714710809927227343986113940565488912119776843813727551774114508561399425838770697096231138210976880940232293491717749792711314280781821913246325867541077266206341135036396103440333706788671490528630998242774100095337361255401339018317422179259496508621935950926041932393624196563425217000053845116720496281563307415157255176630827072004714873775444629260999577610539184214015219635636319279298177650683717521353648754017186129228180630402596277548057924766024305226966184150706969520068308324203193409229199737425224460171663396156663637753427743310940986836977342830435452418281945242433461836017401102124476601144113555193140877031855507221250004341162994412815025248920271594287814095877912224817018280795189136428827140549747845520008790607039211821942324648016224703832827179518996249475365076719013425810440583352337462522982409251812767169102129667249353538225819978304012722303835916834825738512791494738913837664323053201668255792433400039257176537984321290411301291061178094537771574547820948976730580135639743935294047209598304656251090972676858898596446881899804598912198325102409362515164718942322353938256796901079949942780308170130581350132644424290533496077355181456226756809828790183783414426116899767997285510758931209420410883208825702646212321861497479328127385215754502002435533153575889132084219720075801670446979016906701057275480141743101917099404464534926870982585900939632619181454804811197956152080190566589426778984523411865565558868432779379385191599496256959191237115124858870778103271047677655591444406870960993719350415821630521557490741284219932087274590956645632694372609008165538370125548090252796319876281984956672531678999102842053522782302827306544482587568231669002935219537515446169538386227712540569284910829328108060411682304787301377936572877828773962074071572818465331066174222077422490966127178287382737116411121541135773464582304533073573284082969574138993205488651970072617774743937411739841912573601200645706822454208073044169390573117475569132587491876747735603341521438182180571608917879545733176735906959890894077529338105501157213129030011565143392746588004453615255433416836287875802140680640205177082513914358445694776531180186639261904055467159296829573161350590009741699005993342209549050293140355615603903303065371247226525037142966959668924383763863889994717901779545353999743996989915095296721149066171141391043078762910288975430466210722554698365514288108257410702961225996515167578637823582170936046955537950163453540911999733990026712824404209672220834272051597070796812804809414889890725426855904234508358015077000539623079507357664857163846736409806844082438139177760190155320357110978330408006679200580827502077213644705530247505761802568009993804487351977498900745206264641734901888071259556047897632227666939820940411200702046149680999998225053867763574556559086278543363533065154940956555504655323140613661015909197557073687355570458122322711239061752048812791758124937828087981009586820377961582180240800731620725634538627890451605671434894623301243187166050065511676068744426751479857432889502390729434786338144427539707154576117611232157073964164722349344955343775844224870858898288121279434362299237251377323860379388474590411436010299058197680232339554507283618554926409726270543783142514091098412378932999870729610658193082696148499495010261989026981850293482182734874957661723342310649938052350291724277385263169337610234655886827624799575058190997764195240305028501032850168809140380526664031328380632205708875469387200875628062537884942694722229183982822051889282395547929919213620868987237748710765297457907860598750078136066605135430664170989041134536776398344115482924792580446981111654177506020952892477560486804379008821218235096122785266348995647600896169947773090097581917189596634223098945537603860709309913672157760492719749544410395396619477839271830533334912767580301434619071149955534691136384386500749875447452244021396302461136888198868026509071589734208112685800426684864577622980882712100749627001880255839364346348105481741579209735656930712503856970713052741300491876571168744046319160612734249040903335689074418276252439314386766477734606964896059746431916684207149107996774335670842017634765406854994352378758692337436885778183795148267414320851344635300238167537679901480388637713355100418661524497601372978524344845920131768326738289442623120678981166497253480854807580436082778153609419543963088814580553713747895512564400474060759394028942459849058730290057691367092065870058574161100041106335850471909923398947120984193328271845868203704901311667440231961654645047029354460252274005677896425408202271628483019866665198023865217832702118923651776753394463622288658069276729337012473504887892749006115832762038053460066727707273387566987975424789746280128974575693457953566889655900249954943781710604619420925253121497956188675205430086389692253295257767004629305951608020577152970590255684153881865096360475744181549213051216615531196532740339921563623617356935239037652075330822428234797835971986837408297843564501155098503202981784895707297413578849641636255514457400820357017176326594417235232074883253560081143612937236985420753913032960949034906214632371306255739776691097418684729613743825873895735425236377631487338961196686253676494467477373167658575255706991884486091720517864290734236465422940758834975555888348767654964164284337182043085808747203313156321168929501222377194168206870507453223288464294225551554522916960178680341427940221848809563693170212131511748421032401883369952740192210490926853284207590091641514985868765075365866795878780236995133640533995641252578720337503542125714814051425041697719230525202486034055892702472207527345172345661943555734579094420201248773473758354570704678552431217349851606396473961088337468362706120019788903525874985285949151370869466170301905160127198631343652907786674470802791832657446360554078967559008386458373609911308517858529820360907021248245128515085325321309819804129192645797637967287924622342011984163425388048796394879700366316677039899363754427338804622420295908962204340090153873833607515833092749788004524262282954928214115482985863915337478516579251052635195793753524606546394337607874276621788822567873474942228941592117160737722715357629659638494278772770966920882985607598095803916803086369043825023895135334443902660064171079676237124374381466645094848682782658130458802822782256012846590131705743199769252106393750659194953358330913168626029962141994627168203409047758315039618280050592015116211878983306093244680836647597480976972979162642636091695707899844139192531385442366621359189617034199327746848909918596959271196937732300920881364014122334431797052178306579789087855543036190867609050836088325397521519469997362045864114598271270818404090190725509069241186715326954178784049441593388505303237276021357206015038522292414489483021657990355275140077952090447778452731285163273994242224680747452801248484269090678463300017900933792686295690232823599945898797658360672098906349794638758395405388854908354221482273182570229929010198822889854161996060818316302468275190953129509169971675671093016087596710036924594001448524731739729345300787255825196635396021204418490811042990307121926548461163352991205166793801585230828644600533912813071543995240186098830293818841214867668666111274772119677762614882166092526061424225056610806336093573464208806884515121183953418497670784665145025137777673003624297329326710895938873629758237263922449036386896265648943768566391320565334189243390008567489161491250250412105942696641917659243766786814323738117114923781620574994756989592929789581217988541457591606692243424716571809606718070419219844002891779079555263546288616324286144801032204697866065093380372710069431751770262447293640312165428406034631077731521524351687005549028274345714151111177890498293117737019079829718476704980676819439949464191812060538962255356218053293174473257302386132932219077283679433686817013132863921301492872200978427280534131169979068365352517255248904061503487802410239258629324548207840137964620089132686543282560211754645781167396250749576626151868816534734280144710452818240662745650599369928091531433099151984828477065139349576278377083022645626787920840959206579460100160186943199091538387900422972318806109855421584724313099128109826792893260114225925756784547501754438153447610980200398470140403079342323381387062329041655412494020493230421597842262303981331179006896459319206194786586744557170916075769136632244665028553983364491871052823132370753756482081044442059448013905041091547025114429678697209732348215127192747531778645486398644432772312968994982257205302943069873380850542135427301982330286973227556715546228430350313182466637829084207945552052652810909487988576051427248169931680802710512961054180555733328829566995704841969394116127638081959692546991989798863310736064777651517703888468702420509189727195629383372304538834924543523229546316666434781440400135646643140163236525068382365878967516106990728652038941612512443158458185971639048306622863665113932153776800574033761326760117268416787359724546204671818281129103133354530469270649057940486513653454266126899223747695029005480565644301252556869747882276870605146000152128329637076327100102072107593570176399378487149553297049356253574077543751582034758695897125449838618804339002293999854264307138224225173649631610856542923156135741448145301950123918910100653238401394868319658280370001086736914373733107837172225343889430614386002979064547612391993991731146526864773947698304329449637644995880313443097018837974498270325995812670191477916074778687155514967289490858290657403862783161378252770888785235836993819974744920239683914757854762376600343873494829404899275858336324918697798078251926596617051293809642461851461533618751949312533406864092833905753987064362902240370712711654027319360867424010624021405594941997535494232685457508053770233037805164737561859178077158161066467948815258146766174807146687822191760150392269609143145661775449826617878115853365621032481442220307572008474587623577813100713034419659091970932100867386747002661723621473307538464423171172118864474345345731686609014308548709901445512530980494978534126181911154059660469351711696935426559388784932644050877357320660002543274615562573553382962678293815399755488461920563538286067433583863477597187792414212387376466461124328616787193348199680805693473701017887695439635539718885377913511382570076524630927961008105165944661301208759273795298107525715060267785976328481124285074021046150338500529771197827581299024270106723567792876818307011070198653934665815861054870648985102995687570407511246920263989708776094000005791036656194720624638333940698510426587414840085754744324064930922392650368169798692333340974768038765705088519544745873308260015516507859317185975581301755428909302985552504368571672670430741770058829530202393460650545350068757015940784538541408462923924074434193660879344030807407692045493820592832976096956274870198352818652044495388053058873575309019002608113580380799760507172875241864176671570315495410142134526825199469656579074261428515271162634140819227550671673492294404722018478078735254656018893011769335036738236045046560005248416208629223760968171006915354432683390890600433166383394036475322113596138396630501040722495800982612305601715026626867435916667087467310438567388103154198053211799559285978206066716059618707250623306879816454261883602289162314994938085621516074820581920550369156464557521594288047028317218507605329955368251214479123194161379842829132812162526459827860133943792194059636809799238618537099645890148465752946354731248456723977002693586454185321798265158061573903875564300928199507364996297514783376071259612640277846000934995515831978839737287328354853936198887833480410398881310547590321639738667813398934148444251598509548908120558077037261671434885412499756469850553736591915881796805579105356453403563908126745430194024596270019349928835183173309466872950076519391427768567228914514604628520380654708645423014984649856665689058119847111544090476886541307604616466232696245435842566938933482206871425159965051957483641119402924913040364112725446683515457892705741619906918098416394277645788532444462200902885122327045281766253108847370064202436827813219123489827182374368194718041010661617567765000872876610457248750885371711814104206195868843325688816911911140741032265552771741799524523458830869230438498087741065744296745545508208489933303562080984657216191874291198612354319219184106361210258723203639210120919703303308800306378435462742225368357003144199071637412475032881884655742282815103971587005249580593365045602350031177835753647616750627568784612942762371162302021764419852042403141928769963999854747968962316577002101316832100625921042193474772591222834144531112428680219770184166718202019194959876743661157609230409707726494936549625232495014691941107282340942417621176651995096588227399430428817319344535113197345012796271423845788358932751486714908746979014989497868662402905054524323649035308638661086855415852437400804195401674270533051399378887697689543564847991424719408329329822978368225352487262137104696762953108958478004030103097489711284934672596571979152503305904664548111824278810073623451681709670062517364584235685285094741968639013705339907309452123909733518607640396655146230022338978628662561550677041062777904671304584074300875572629612294839505637722423550676412919419279748083225095974845042924846350787664952017763722963065633515042998917949748489567953395056108753535488552239509086890347135920740208223922032913859839950977101295207718564440409709278686387277045747203664217652874873740638991076933846437749701777952046243939791691348783686191116806887697690045017648850357043581198655069156663122789459497297623327986636546200627230922404926336525014132141496150402410409552413837671574220851450426816531819191795422280913960873691206494344224746324992766445844172235640573071577306693104299342103972994407181035550685667170456261137098562812594021508406518617287551509309711965487125028460867571481594247362082449886898271400050453692839041918041732580189483871346522754022638560241920139634897300334246117313377704466115977911786448382754342091019335266169123294545564721984323368432411512592632378833644000698816344912575050760408596300321561517437624734596391174821286514320199084316168415146930570923752846033774357055636733854544819729852822808721543237907745241619063582272384427688596325233096367946279074207886552879485888631625371885362807977958120184466270177857666236739281375602784067828766974354644751407035931427466003760505865566234396351552822033795849592543886887144416457464777761898087325460903606657856872711884618159202163884232189766272156249223813308068897902304798164904404027148224765038648432893236229631295680323158313867386215132739460342551658153680028877920767875511772273086147843208115324295225070624334918834108884131134120539564204733803761771239432832020163140190829259608839951456951811420461109242471192891753316142658030613133211833359943303027395107324990366771507682343347718581639253912573547631970650221906205647580889773971481888164886423415634828916773428937293701574658650410951760001284748381459548953841374007177131532276452609060092908520775954415168350524136972229232490702978092825335714731523810511226409761743803646862919367934463837270154679095644492698567551053387407569676652141344432776059066908519188689982637528914179749960710588987816083751505225189368383013211220628845640032311161647165393985625642422912689221200268089492402713109511040138821276440343709856573144252099857335203476479251329603614985793249264975183550722326577065338020179845503581000325863326749919131088171314155391660608544825763429592629149992639678498056008048559764795554419446903795550010424929445506149313920201804376237495900326684448608324563382569881883754104793799972225132662659174988254742561737142460077890676981481731773624678337043434197772702725985847741452999870210623606184348744219565958141713941371429039835174858861777141035069205878903107274652452203783344023480559633402605383369908041248378590234879669775453529571288171584160429797063800092974277030616677008838928320552569843862093875042202071474619068901545715109288170752821818425314721451825679673006801150676106793707941929969696865942423540525603082754853634485707272978713796980039363725274499431588131465023703196951795773284013844294221403304228759376775047507559914676188126131149340367943811416486244788711533011928186921796250332653940572409618010290493992311659311242839557256493643259085776623568994273930815739187983084004412479903574155352587597081077984381516515340363612074565796584504498867725678575656838227989813496334723433426270501049800305653743476366738730317947728303376502134086083773073226989429581423874781183049283951500004912308186516344176141929707349663191512510564354725859002690223364018255015174887285850991223112162454756811706549890221612668821332161776000878845000727982616580971530833700951742302935022110160528065646421113165113296329711892024123531355610763103360954272709709562577147706576545527430245308685109486971133945603619193799442592286674902058318366246884922572086295740865914757851225245449391283012733693929265586438857310332151438392791959515317437142680994703439882389668049471185569222831368756246443465967966126612621860645877642278195969700672658012730401401376356889316018563129354062236980745595308620377161996437361411983414092815026576294354187834063665872452489109263847226297808949624614178341189576319971757550414972341128974739481335177944720564492361961980754066361773823518907682682387403291891552921876962872436510750039501348604267261556215060246377613947294259366595817854609335133669069030945275713542292621922362140040257295920252894362948347325407225082251097498021480123318747672402480962527585070467298763823114127812072803709893424279362360551307929232688777763370697183735238364860413094883940994769508082295202520406979299739691591079708852361462208030933791473084797433196261035249509517146231301883709820508911816764915388029080172195453433340828863877550722167218002939997852556479296284675211527096586398569689260871354885113859424591369250179611962013395364062981842631137794801633759870698356479092495952671526787873618099104830907104065163861510901219067480679006748632908715821069220752065053999939751735081757320047419752331192937978386171993953288351742589702433139754043751281954573901965535658817023581706912202603438226372837831710316116160519842117903497719230573047910003232623196088326602861185842525125941955379790638452347088523847297423198850465234692310372330862144915891812567544577460869307534554611475957391033634950574805965578387442987279738862907105643175645961463827616112315288064968039975545533871680469844069939023019402187782134825416468768025066636897323861998789392874687897707561515281879591922163036957986789025698206152451429298532486757065417170399620061973402943660343766212419392200678776216808941623285599961210069979006493797937974381090176008656521826647680358251843913211019920843783998999989851238918159084468353557810820633798644332199317368202012719904296981079247191179314874735167740975195249914148640797421842327462078408769170181251015097969692686889767435829518622407434782898899816078537000170413447320896360327738047745471450509663909518953277034553422679078596347127650466193520712347962619155897062153638273228961955821788870311093129749716480624101040814147308078814121082216883160663494861604196366206008918614565612333838870277115617181533281974570591166242762425975928605412447029277230361246253017202704803006990268314027960224782684320576314040085575439368655951648781858819246493336822766203622547703367217515671262330667097657063602523019688427486082367090039579233886310132379140246258724398670117440951799493857443990433632355305391867325023355389756930805999647036584082235300642151436350257176166148768216060012167652271853411955931407405408919725516658293581225532692401253122961828146283908786061984485840080937209954352595898572099479964418575444460387058284928512353189870291807793969697455288404406430019984870993391186539465637829384065201296075997390210155374518226375310508708391592753129734121951469606538603257641519958519800254982334971322502276414654664375514542528117231228153899497387962807919234636111172959021172025096786344783787513732696390237622666302179775498986350287489447024162327841494918114105971664568814678750156565873356973652171633799405097357261645249368614895876911701930429597409523345883871342470072981887446450396724638157734862943745185175288755050631205530056052086904040090726893917164250368334135015045758038311467609697978105233642410749086816870596568579371835303023995807475529299156696511885078971556174662145087383327122807539957130886385220335168963957081880225344983476263006323762625509335722400851616402436421019362448876818986175549293098459379396413447886966072188090910808091553961126274005918210479432319374505525549593980094436753570155563387089346509620469783398512853142101736803876583378252020747682937953230931000008710308492035389787187419162298703046761782033384764070610455389880130060296191968006603946309971081169347384473798677072927594203677262206694958939027007138079426367832134439079390047664125562183660302611836955462164262622869498928446641449658371449056199765381051121502397146622475541906076528305693391539226310334371907059699311513620096432304022897091604224059957675607594090154427368793486100036782516425846910189020394252269784314114081081447014592105144542443404794484618876076928838708013975706693446568644145377590929009664897241392545315444576232449848437278403991835640509309783352673208761809104684530972877524416052881382249890518630299100507923333329851553452500780253352076310749703804207358744748455234747295965523637852965859080600222009199459188484803918763586686581801703664808839348192230015113220437310197291831996273220651198206832523104506737834131583984759917500124194856553402607893365990184683446139189141856836990116104871762395562029508914512264859480514596253150544245572213241596992628565485884857322801191573326722420051517590863725649328975779237005671127469287263048250977620636951836902753054124587479474598126535380577543494702133674918802593292720010853303698216585004682117602652181500807854630387186580267245396437207479023534816399519682231602528909021658427779712177816546820441895674227434651480826234129520787895101419869206407565471932124762091780942977322365769951855693751716329387037799465507708928647864257509060046468917998618594874464206170239574181448459368462688194947970695025905685576609458774818334551399245926748479568845705225208340337514146759302885369542838495394769063960988036771410633020041794578934406750805368398156285900152261988097162102133232087943278991359806872212625150458707263447616502756009543530718170332643234324055419045977734000688359540337002408645687804128256068584031493830103631492848943029513253592732304639037194978334903074215452817469170487276129983622544173497416532251396208534665726752137838475284570224333551362965730786801217260609892684727573150452211758106253929894501132510561319450273138444042572659938947615196318462033986631029025514762043365580632864440619039333457092010410799875815880901092300041915148413042751468256521910341024493228664451307437436332692579288416432444098666371313724262769883327857766260433814168456514520526840221362992316130220276483101971135986103447947313028317055865752886898135200021487110826605695326182476655219596183174574891570949438538055952955726647581838701321835337710153283682506791411382706294993769592754356346512236120315625793870759463424427892233152240473116449475787065504226919490676480541833340850992532743967825378571695953095892207960341261294578945784850890431643845585838708232964606264284776715666437674382115719254024533075963123625485257078194434448042869660927410686545578493944551933179050265162917895594440796550028245529276761756896254606606185054016627806918724644501243494694366451243994521609903681908267119922758761336010222548567597267354125361789702253834637494579105438107330507876001032078890373605475214721678413925994703592732510412975119089940582653066393912103792168647654433337675246607653534159055959883892301882821945098738590509505614950702128239555020075594902351875966175772599557769304875103039926452579279596537302248551448363845680798326412829520744386822023892241451151415536283103487266557929103672459155260935645374618055625737026167196638564616338708870350270248745824311843627375062127021248729203751776633539050471774349697611651594591863668381793244166351329516289482795222218858952210809358958301047053719875180667706813568619760765453727336683145511374743585937967632696105909108752060380183123923683927781293295177459020118272244470166280970540947580075523077751182743841897139442478220287830639043861019959189946258627587566730865303542768651180388019007482325240791767838538281819636020512973076681864038682852310466988580690218515619961279918694211396589701315483342280884829693247063490597851805430889298970202141955787499749490675480131327474808373222653953444868616211090321486845495699016965119446946777353265973098744042356597940950906678824722256667271642296212442913734258840804767603322296598257335001193600796920671434918933635414686043454604942123978253009236421060370995269285992632643619106667146495396228453019431421718696201694459189903767372823660012022109753103449029024346076068765477570334704041651437179346383826955467012451120678258671919252707102673134867512091070964227353373222454820574411273654423807540551232155137150665525587413956422978160334427900409441103074678856023439391904146767040128619408133483861183828767616841284460198640644669337435291401531179130033842037265767963180326418737037130621415770560780358706377814095597680097146042965883504526589232515617455112560710127337748334630558070350829945043710901342954391589749620935645973848833333675526862402668889274872826656389442164126590905830658925910801057837909020412518453266791571152644523075437842309513286496479017071220757297348900171053334302175300271989580631225261650990675112025206357009659763923434569458140519440021406496166708934853036793377141467523629551727425522914074034343007046888904072948895735138072972594979661340982245832917977233392948275217766024374547705847545257222392494401251200463875257671273837576996348566566320149288478455545443175375758393933128746831418484325879553497535760012362531684278977677137796272641528801656519105173616549090041427008415843332722682500038981295781806421038716787422500630239591547186828271715086721681539866636620386268010228893096600504826039665010629108710326857929757745539489756804787242533513234352403807466479758515819573213120442187916319038613197824079622498673486424586819796153347049055590066058946169611959927305401297962255583107972715319903296505428168391691959102608013101518217110334851785532189123590657341787174713652272431966332967403486670889591942317469121069085337373587206355540807537323056062741018533999751822037002841501326864267848639972656367866119609479139084179128461979133255554929337936897318691044891060361853962447048538440816171521607157414146220020773876895582333942648706963766523216564949266209183281120069295774616188240558649013663260630375851116567403646683413529868641780751028095938437726495400953340132206429365547246296346964736141636383890503531351901755480944370649625816745430906476495403098977255635090519212957243265144571737210711985063030763092967730359974938654465705977179710676853304179528603822505643500495284345090916055696048460062740890097908701767431013840223600490712813920508559184328171707446187880928424357615784958302856879906710438018817987484675949396788897873739735599026560960468749067450324982042253538623610429822010481321416591910307661501349819484416164693619571638563954828109755810638251895235412215612493152712092270908457021928161818513221352817659528518928321446369888745603469389658108060280886365714956327181016953628012348417970375183329288481782729228908763098847183756170567632237267365714463898816697693656513791167360430386207543294741928824824085459769367008245689000779174293618818789526544623805292588826272042886328881008740666248438949450796693326244814322041052969904160031336154275380549172736235667451181376489542488980633978607768937821687943557945814957967918791590144483416398699378613740876549716023827794181172208130286961701787342927641240482167594686132159677500521254321731987493495983661118776361506761081434135108915770067036446202742035425012548175226545702200196568504524641019554103629496671307649299795515806578350677337371508749337142394528957631742926327899145667419014502635680171690905204524402957185458984549571624960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
cost time: 27.648581504821777
串行
import threading import time def foo(n):
ret=0
for i in range(n):
ret+=i
print(ret) def bar(n):
ret=1
for i in range(1,n):
ret*=i
print(ret) s=time.time() t1=threading.Thread(target=foo,args=(100000000,))
t1.start() t2=threading.Thread(target=bar,args=(100000,))
t2.start() t1.join()
t2.join() print("cost time:",time.time()-s)
运行效果:
28242294079603478742934215780245355184774949260912248505789180865429779509010630178725517714138311636107136117373619629514749961831239180227260734090938324220055569688667840380377379444961268380147875111966906386044926144538111370090160766866405407170565952261298041958356778909047541512871140836924251535293096260672271038744246088635454363982931747761775532621851126474855864918180381519877161219681514129902304463824068896508357500229649939642364256635271614935207801331202943393059481996043539694202547610187382521727119665242224629786132218975049740195171653153048987483605056695271548017651216213800410981680797345354785175202462194504834501377326310693909350359885988263210528414140015756786096090291650746966135452625307325475302156830715404249700297210424646577137505616581728515517216288676066448180981858456491209123026827681473512252959123566976223847532826157700469481149648484913019536713400018031434012380511368173835296047361782363590900324442979506880200425497075817428109200515871132725419763955449965643205610662338099441079965090239835058688262541015044370484320696146208300581622032445457656923187565655142229321450667889684581664034312175421203842609068583814496145348996192319004679779630870771992965230958496008255678095829679128378996667544726319901350598963786237496380026027212712803720071903325318612085809426691843188133798061723913913711424525415380091954821781271034190574047677909474085485853003394617268058261532865988710695226333046882761562985860251045159006884365497700918591314079336300094266872450185905716172910319364909910982282171113034188814194168741059041047545569219310938636141579837579416940455279389371093841823524834691909773492295125953071398328562544812179152705046595958654656954779020092178370816222399126665698730839796362496210376149233471327600693023992176735118910577741564091153375237377967391642998745016394658581996592998334666059301647826349860479862872111189486311700077299334678795331022087853029064847682202470877226978827225703101293175999754152186080437662400387353762689053755715400425540320217748368675996336131595004238899499641854577857071050256848118475143977630753819681970818093539794067232920368908922783200763693358406584171498415879485891096945905672899713798415851643549629222750438948618153020439345247463008276498877765886574308087875413413076591503572256732064081391402979634937427007828401032999292566908606022083315983752819999156718709016301529164719115947920455896541741086277247149539333302596387664521161931270883282630583794072824775649170677720215796137315566388581174578829571182034171407714529475535797108182669757987365913307838682857595034767823707313759310787385400846883789925536631162479425047512615104634570611952476082258991470889730484997143514677051205872227048811238940155630842423255665822345240232500641846295922034770232544316636788345242347863518408683775566104412353145447124693099240549723842158184312016756039050317199725245656578583775808577538752965876118431967190114283315961863712299043641019251045901748994857351847545389669361365964528208636002427760428785759972672367893509433104811637811370730616577019136151552105444134731885196163472343099052391233625740331701021209610386118438680635978534912772759311376155125835880861436096960784145435311604736555422959099787360857819765485869182663659301669728836183187527585681057756759660676312618449087454840993232472607816610018772424475784827573256346192806768258063000257029675179576879240770103278259500518336875928686092661235311958664064242828565182177224053623701089273009803661477000764868635971370657482420664188059960191520584169375395729405408485720484183119726536375393922926071223294455461140438306088884554722629825219593225795966766830957985713895135876112078806579697894005718819062592107353172925160195775639079994701609725541665133671178168833193218406606365685964328152250783726087365922438775752652007812128338816185867503885840036520166754063927781151118684581993868942625750280220724074702297298073007693053502990307089929329686584999703773570476112415898214127808820715862154976002044679851390033493779015469859028845704540975145584517733848120059699864802623523279944538504600769376087346266590152022061234355767504806162815245731573029663994511968238346437577189030632409594025913809222405979168931762291241017715704007268967324144058953559059337524974596665551463554792017108561044647174469426997350152044813665101131732865864329899368280582245417913586091281699426094875817458791889014549076876264924456126642684197464669448570111352845946647787056693329066831912116795928438917077637564698306077269464461570988272112863181816339634339826222787778809163016740736050993604266186753795498725956200325826823042197619405268213156615258683417756734601405108901145660651317773841522482945928921969250817077089560602963774117873532662766003247873191872937837801381482700151797959870324248701858764713581094553184765308907303732457790284941989867389435170641495648049905940930062776577352827453293648392303770367861260118771995433231423171341924988395329598158971430696823111690637098809805823500097579357097521596915465293095925016082479738289735077387952112287129063299495500386432384240519888302062486812254069645526018535618147051281295752091768276340384493698604605906352768811997566681569277056082605326889293172499439956329666400874341508688535221404681633899139621480723771308435901284853560979632442342585973350024136064096789358728504298340888840958746921848696211391029561651515381700588230134548245065830377204149694087279953207326189844593907231723727735052255558704940483064122335283433887213495400065010574398481729423094997530856483543111830293772490716561605030189313626667623345079741534166322056881156467526472759109811019143837535980537704809834008135152285057337226836595447062332390922930457486275650187757947843498987225280415960097311960814246862547834343755422597555481309235240136558193776017755934088109000963303958397421025694821620783874290357592017254727444715846046140044194510270763419003650887833693092453198047432240952733659042049742240263388251698461152233898583287134122274617153213259078365060587980289232246909606447432078003236986592855113114869903980249349986809279041484159931077295602847322704184895972861206165699980660386610867052016493513136236920788043122210122503121392164109235821614742938417405799017298472792234283682686814909505412428232007967101665121787974405625949389137918393874266577398559763467490477167026983815685843687786098473949936323756411559800527340981262508306864825955004288877791837291736419244496923601201883907298500879188620836783233188507995965072008776683422507013005596294854606393103380069624098467347994164695253161249953997671822050499089468782759814744217858044874097170953207809085504385450956920743756231288831944722940125039488670913575502257332473876738367139483293732289828946524636863121228946557283941347510819589157387007779695176752335119703329265534778421266266570027049766181864953853219909923091259759694811640851077642611434807299268914349346539454857605257106869858918651742580691777422059993086909809468882105338809016578487947599049669022569590454888371034155259277179239774453783037098135665145523581991042339667457655293798555930104916135230335625559526569339967217627097733279298041203759371224719198209333477119409585282663202769268066031157238861299034208621878166325355481321536610268504222875757939553962467497014572239078365847045293289499770507155663740996278742610818027907662826567616018724872654447589537359664248415140004035243355160717246580053995975199121838757793109682847975327136877873619752837837377418393120646250266434416856075984625217095865069478877643809814353661330582339588416431771281346894539558739378744324346871452806711971955132314946095761557842026550577318447492833968898008257555896557488784130645264539316746764278942435227573107265796931059834422995842201424057304679774602212405288734141477424469078017530907020062874213375531089946676600742032300002775087865092307404516509400069529703745076544404168697130721906884588263616612009466410161830362961971865898857212519224060717964930476325482649194184422301989544526477646743939678206829239845003388111071207767522247708732269641210003760079702787783811101893385698963019971159136157976478881685272970087693001980301815249501679757075543841396640715454223072445393611318254306863929503284571973226103638575196330776279925042810042023419427752189158159145459273173242116675995933714186422216930040055885247918419728624048302993473191734035904167524838595112418678782063891624374317602903236514735810409592809765941106632862615727497789423222502761976964220608236827273542466261996368939948035603900529344794199970963067698035718962449405769015354769578508822613584917131324420488220185921988209694777509872818742828274639482457947188435844333911772650430739095603250584481989958329152600842552729469366441280570587269621682904988951191352336790786111060051015209120967039713728182793629111068584246285456235440826504321480610298252029329341677032574181409862651348120167331160512951768964491670323967516963137993828529460257182175949697417875745297109425902469929703040177472511223642008699424290382418840335922275625480814882226291637343021677898623728155413666319496241022534480155788609603895211808544440777335526130070578416120336310987991111771401598320988817854788792813555806952560841547134494691524723263032935880710450704739780814603039400567185010362717081219219754506014276134877305251991471972769753430808184339643089405084030927767064397671888493013217512771808697087295006206238583094933560979112493714147978984064254874356341794357736101964329763213078379678743926641245929191490403842824749978906470526210635555391816581926867364731290488723864146604869174145005223997618134234558381362870279739583878834979099651375681221673541656904510897247707133330415785510729337651458552344703448056997179446106701279032714736891703818383173639520330665367848806887687756385255206264320243600102651260197784851602252315687148991839679622183668179056748135715581964425953575148990064719872876539134458087056419022465430199468277781270618840554172323776475215427823617606597854099539961446446624098885259213822476168390904240211103454908942876581993436932726614674860640675667049054923469835480528203067528312015354170154599857881843973451002464988383128461727487056576959897104475486269552737374629672439829912000917412744488674841427962411751306383417882375932973143205645845613903772271598515421279407768847826823154842471432147039968967685570781395416498209984055028129094089428434013260871527492108865282737109351726183529352707119656523907459912011808497646488240636155744490224711758613210517215657475432125676219887509412497779869243208229037974726064284826760520600984506178050205115627389137643873444086159882229924003423332161184595193320403316540412688291514100511753460448596185505524615341915318257484883713833849760427038106574940005202735338919869016029837975967217647331908276346343924997078449216790479807019366078989782350768449614733088714797071591506740595547959456162064018476114296322567230062293605586365441951258100297827948991004054870723194211712690430259313093796102732692927761680856122386927979781675068951306559187788643526807866548894560832465822020496125164654896039224551686158940391606498343848236145282968177037372804768989417206317725559101860861977154602275463263350178253053380615391771851991506786006306000924008738771828589626804401810973503118533552715078931725969661130602799569646253452757822037749378750019597087121231892405948119894630981175955603723572628929287716326090193182704731340222797385272327729581354235868618178788069955808885843152732196111704527238420688534609702234616257592420723285326161050926970072616101471000683560930360188049520480014442958151635948812561967380492034501962511094532818004803723098082434750417909449748654216925939828601229469369527145838325788007837521030591823206826572220323155255323811768835000492822370377497934737728228369011575159643390727652710364983295337323930033946538839481030228333762228444582577709580492392521946210246984726588362756094501908898824399133011211614926513626572167851694526791347256298381868194345308110398755763599938145212626702002150981963160909784866541742135242129478412920295107256501865790951203912291902471727360810005738392052181975506805668813053910004067576526866906526002561474972094817015167437656542998229826951162508169114832312945412175791519127466328251688126183638991447097138816267132223823129125663941194564136067329385477162917315618512908484430607693245990723763026301116178053747378913891758998757598529633280493463356582956102213740792037424429618197537941936688331380324619498039991963462932161915696110764936196605118894140062851294953772723341136590580862751277520640981314099562636835246598580689579784044772550754811628482811337744317519530575001865188858428964335457044007544253030882024767563619749720312926732218136201164583839668104984144366844411187119534070911503869892468580074413558922468146116289889731272132120606225803732334745103222665669576686341476560231237331160933733487337244821101674643734617096620211604594345513104771382340640159339835092306046143671481038439355446850111949344262802070905013760949082814504956762899233979383672458542900923874316667606236735254213300573569764332498509463656227896944170448292250944090789692595013231964497659678382105260284723103064125160860313520888843364106607556376692152790597814555581378657700443151664023222869501611091078717179483145592723902136258811264595805940273995373752827067868536583901117695978769073036739505567945676162950586171750765098402157186584427056937835216240848199850116414315421720248093677737625755605464046701885548857882242356570915057525502608350183229104667914375239172948764280995042371085889383891241550342379637017211613818220245543887868102083273692532994046055203735305201054445873899425497591261556507651448089829397335774194574837861736157534975223890837227034338949465954406757506419677115075504118400863192319526524424364579768429989809914310081210341621841492267954064698945756187910605258261488056442533203038223081382045168996123792429049291252566121879821683833819998744588014978872442095428418038494459506469078936162089495222652071931971296580855002918413384440210852889244138050888510633854648961554101005976560270028514960119594943420492710207758628900802288232185660433268110805043342038424530077269199901719733876690094541691221925643812081602673305645603856257456261437816627088689945646846933180743773641840839287353287628585971126829058827010270119029209166401170240844953168184638310945630068978384243870970247567681942330648607165394038194026308514689799188657319373293432995086611028524093246324996904595058572253900772247289679814654438364879973729955242336866935409069312651730505085676889225817279882459517366992175723784086461563849447929731734704009727847915808779089901672507421066211020505402302558066478199998547781233264483140453325179140843853348912485828001038262006782827440194040499103049992755215075308443066013198859107045959604743534832124727555946480981018125988322650151813383581242512191923583861082463846547838146266352133346599391702306187275802374521332625652013103021239847348906254372311365691193318491319246654366696275647251236067636089779707386295836450240774017448588368360998115876819992230119448370876514318830234668809485546594993767289511259101204748230874504005220540499497447718314217253556360966847662834685180251235307906066089920801585507216512161061523369469202695292874104446702684056918566635061049767689390115797964903937123531243425999704629797139276910252054437361179106548693539381559908973365834981444573985742413662340967375166561694816209249155527428072812281956900466089747666652568851901401266006365745390991481072949062530978926801887848569851264528599965451667471918501947677104436063163825561815357564159165739700187258211506928078740280024958790611452495594487504373249007878067870574384881150537013323494685920359150222456330715850544129058017466417424415536337745605596576740926585500134391627570442900302964532979909881727250277314653668129075820369457973944461835444565341944002408890957811937834172447656026825419935039750703421183084671148984205218684515103668421143579654258315250182068256158348749156494680912613634181714871729039187286834367461749228701382013054823777254193834477207269066298634685356145084741654431887217832340188122535083794776773294207943438578841179768707145571321223711533497064067797159592253545807142486730061761061569583115935583086240142726040322359720254289282362190443806623243677825397958999321313804262680161766442842643172178224274132679077214078296141614952214760825522219019643702832981941624112324209761935462316021512373698287390777317561349448171463988378830192603789225599747604019808016685343692475353092577774258142207101518282260656736936349392517128388185198158663178709051222387984078727746089012359078552790037864391959179149420432596820122181529996173540508433118305172331539276300125618535790300041954404113575980298101197179912338236544948649667610177208620351310132271465983593977435727419511166604218991252148461701557960110338837129037762480159664819962510653253591131833549922792304263892867141054120386722349573687632897121888973385916522643446166151338705079212996195029830347232330079141249191492885418050264686850167012672455494294304925173740994864282424617033473340335586883754818895119325999623837312642438757707778401034576130323159264413068721497649540765308092970373248754792485838466720282397005555959525394950742661856966793671131798440720514473071297671469256288529100871799135638819225378199739371439613760734837221628250695219588886855237527411955292550564477545848009570077384487991757896273919151547321541944919785598564468924631390332171626165812527651961991670987967027258250054203785178205728322883905548431754835790462358067205220451035971272494801524375710261476736449307772765620205115230292844198253020828620437397524657904178362815619305255058440416076319490683023907595566349694015802351211054424001766379941541553514129699067305039684354896364900802054905841255351636562545205951818078095317159441892067567193544923870790591688137437552487936909235773292188184921247578981253873669857985635760793194337541737849874627050233536630679427148246025784380927052778842452469873943299252006984355244267779939868840267059006738958746911839775789173596957744078484602106776811648961093710979779746734155596926588695485013020416084928763403340070069702787917720888215004086079909345287917816087821624741135824395681388171157991272903806628648956492104803765805785078624829963060307843651198480402253182443644064877440199818870594452852849003238090691452462559471168128297292488013260014375187885032011790488660950726341064429421653475065592335928864210723335541786871745977608047625321448052335790938354067936301401935901910107445628415487558615119625855226959395420496880079511338564234360217370701000711613029886495181480208834903804114316916729993972896168169491882715113861808337427339259744567851171301364578280392029128623751711703959938105174206078059757039851763885357661040206449021125931395578365374001768302450449136105564032977198667648526778495131455519569977138074093653076536783674135546840707551728663518369924133534113664011351032391681787221402449000224667128045675263173684765781680796782722674727775135258028322179381257025872838066169640963553776784601963061889901328423325222374243487040243965969375538317901395743782128714255556870447485344199878343273311858522285881814620543086423863111352577629355400694463366912449967612229572339712792729586015490119616746138452057799052510909618598938516914031687501158840569107485403290854875462744608784695349180421100657413235823938069977492678674157196574493106745592369845300069091615189253790566642448418041183141512012168295474299894882854596549722547072000800302198536706167516550746790584984560658511832076961459720903126406787173071223982256819956246486796060046201137871474433750162843634840848830466352191809002373137201300480167042904607109032675198767949895066381889040835355253766711787416496190931428139064288198551115598402485315896110502898759492101406866893914549008147441377803233596571805132738004344738242370873231224092363290390520495497170025523840887818580171983485689527700497445873023795593543376432581675128036958873894252798960986620743441241911833364688298113997713533853437069067435855486147134319188292587913724328838631257834913424264633003156877912654304254212605712898743327013236109413028093802520579826370093155367961579710653467654620581523949336014944997203208932677406620537901972990177182661360275415563464544286110641514775023858233596275100905904335226896346007820748967923461332202912883821484953944180831559095355251604349224040522060453219725197864337180868200257236079569282562650253994043631591681178838203315628402226341360711479645393441178550478690265009292715738083659567560925860792317180594831279219446174084897587666707180157277592648376488383715845763337845668937637932164400443315448993865167189766370587997531101450856037883690372350524519297152092246474562785688740442847779697667750972921505870190698345995223810083393889019745363331083853426989752085897743666237701662795984496691535923235981197589762618729940982455797256588790070974136064454726194673978739711597253872232318992124743589418464590538091310720346403255814999664295905752917275335929827753454766982560422898776745624726007627938676929228185662572029188738894232603237537230751336620894120313843933566860082254311905772433710746886739565510901205418213589520993610233779112587225034923605069604393958083583477754818818020246373139932162516486156645411576562161652529167256936092041223333514994555483564609398946064978653622088794770175554107004263478130499455437838135544685560896120373110550527099063557433086726448958159353704944377650090112989018674507537728881910121286956175098366309921020301917115412049690128555681624608698664381769202547317705263852565247737042466611164274888624104356639115177024040300952973787520583875613460743433890734433775840732587686015582059594436926035822002084252365390096568500628857219660219995636068909095838770258967243839508807381262565750813667354592290675610693809968455135916770267463818194684031642671346292487679360432364339942913293521807289302075714996598084518322610167504982326445917035301473763974685654983943283313728051519221812434328978072642795625671413961785088597776548339321182910558539309657416721826410228157991374946639972052672898311598918096287401934281223905768565746307292098746562789092425857341014203626423380409709992363533518426182676405564304416912845645837072261438599615548500125105829467922910983229475206637120794888485842329310264893897145691220943151641149278746591440921423234968059256620438826461780817972846661877722883699793002009733440568929124355826020271788810470963138621591941049427819160930357472463956546905704985619114857667487495291111798797561597455666551486482792426732319406294717614286578861295843635363048443297586480740583583258096306546243882036907405186876431426680040489873849412854859163740573966188090131931475228810830596915372950509423851609990220352013657507461939097342871450114792980671903296623816094284977233815734207290246210097572115766834142384132994828830316462340388537686212248314811153611050319872261064341082783993613492419860763137630542120706851640800964790267709136487520736938286123596602226930318298365190645059536185006158938454383389060199016233612488834328546603312359019435497795291388189116409591084357372450912055634538083965053426737786297138556304554194418218710663691688508931167221907218332667124396822925742579489678466530706358358232021805111026822691982878237514051156494320800672061211937000435452904311134193100109175566794430523058084828554393901004932288499006555882683807398777334975821630382842577900930005505449917407996863633638722944552310739616655112056058157343307558608682186783740577030737358195844307131271607432745368465410625185352676186454397746899779374068071347272170872468657870202000959076553979911616689327408246133454848899559491433341329102643979864297624604700486046162916719592024611218840957453380239971226054640586667188571649014159371242612776017729546612263298809395018043549083915831176148728580362043705142524701213280779522967191433683626079639276429041217888657091555906654413050881812618830032959085958969410320172399854621134629324286694236492109672390775643794890404570377239581480966849498387973234186625906764644802417544447352995622745382904179449095148919691923235192121843670565722963682628114719986915734439775385769016230696203135145255962352366687490664574832525906317851957035750591414469203940056083981639558360850178871479398288153194393949535531305657757654686609143921909944396839506035267090205716622448126768747869692389662277410736564612128144073834548765607339878149025778632049402463060918320744679003482851974357505330905349354966959506700691788586401472306155970747564474988969069474058864651710233982112891611811283839857016416310029237214012814795085120113237533579134197657746221748779382378620492961375674165007356692294982651691648607550517446449856835068909092201368741497686265939895384164333223335112944811803902760794841370879253012131474441697576685598348398467667174126321967455577214086246709093525703761672709414486866737836877742635051694434662090322976577494143821276907180302289482859660484716944576323588126577479484987201568992515976118325262784397376292925726093146699987972009620440564222773203906362017626978672278593993985396073328578492661429228064273470617089991570161057604773368662084233997070876472222626499438292346827964490080430603833584427057265397325130803903389072529671668307674940127244151801622758544705393363662577171929127544344379637586380670949704336617430973833592754977424086726749212320021171920719415150399835759465382321610243991980551454489017551316227917878216862124355163052197772424768243626082630552299194762692245937710110306159684991332883965052242783182482974139482481815378000869016750660806867670623019978650418544715064214205994870141886597100059445591618409315938062551207617811272603209358258391232478465485929008635822747034508119045841928639106072013132536988622797457912594583169938359295192446100476347057126536103100618975038592791172227984504758437802610382169798885445760620981655287520872469346108608625792699624727145950560763624765727051789314180024737829521738346882962839577504000240494662804337201413433320400725962286897886510995937365219722579186698164902980772005103644977428416428422735002863573926587551537292647750777869813738481794034091566289403293034429745337380110571470220274097838156461833960100783761579552711081479066060613351833454043038412621239472605599986109135832058560427144342662977971779691451985759980522434062038286571907877129987085365774130533452774612774931304050077452957098269492486499268913910996001291643796634994423732579468837798647805583341342109969865431490594091333107543231082612768296889948018221928892155187798357362463685267604817965859641458466061328956480187158300671798058237165468850598779908013256447239770968848217163330345593579124118536159385036688556322693774486137297972701623883035193763118655236647143475642538664795951153808580538917070305533809286566482993786239821230995721306011005042186028412593921440563023208858086200956735174009430265824049958538477348560112497357076569602669125657370779737370227452943785409026389819609517591929892297575871610059082446201515575446124668371743978766912778667799360672818522659017621272165891760586875370241453373218338265697031774632562326799153946248841952033169207024457537106838143755505711111539842508563376297353476586095258348651119878103825234503898067760134102981398415545807906850298572848207470809733371565507822583674312368976584900727506156357715200811460159176910887324101723319011331015827646061395574055786681771964032126631000987252670712706908749519038246850726777770059810356582400672696429609705302897882525072018225691980503150667549269532152240879386593011472887467121168252693616371912223104229200946891567210892277504242243418312973114815775095545450705307477121500541178909900729763523243624637825496817368088012836520659652091687289088537265420926039082731046374910159395843950907205420136835637483881414559444133583444331121023456876989344166802583763545982999614258096530986337885343892442787357949579705838983395585707240623935837082690192900307998945715508813386554316625554642879604025552408324727528592840452002949175666186939053071896689141974584128329227238306518670089750988954470905587901532981295380390970545823032660791960706687716383068022946507256085269039235327526988586285109372682617678482687627569778994760479135795391198234709309384757981688777415755062066228907845513915676875497210374660352817422858798651025492937689613802578614748749068481752542564291687411225125125419919121345762782135087778554682522679713366728709187498634167064878464036840350957729253234833691391370614003886215521445285433085547690078509131647157945537853569808841740760382730648048961842989326073748438739804790519565221937169789480396051609672861162341126530917796620256727117239427602903176239239685571380647393546861584872108429123634156538571497087723167190137394805502370669086887939497896589026433290539029544964379369864908370168759514344788643722477605276029431987224883945722490129170832089585040325269178499387846978465289770075008161822142632921808752165014276813002069399038092862630620500539955070182393927633985884732319975389129240599960671186579327417151607634555975117579308033549844206888126333827834109007060076641556991500063449185915813866171523762523973584276693343561496390747510991331842142060836449865725799720550757051699631866622892584526658327859928737639707448139052166644163298719255150647931300577991138001984460935035005101965025687069957482486176602224683609301386139733513892325714539034177173885450499868243162420765455053067544334118273103512234714887789122009792116979116991151325189651395567071055751991731257283455050071307169097768265813990045343236581408172596334894391096210018898795199674415699936509759121167455633638950269538937726159123801712555538002866095949772816125888842754474155978376596115169491349799749736634976079259282171200694129803198416931597055908714363204097887405411174921305684779509867058748507556583567654875052929773126174062688855454754762417772535379542318934567189546352400650256160466889140291312024756315515598838797448954980616743831397149767624429218717701706230352836168048742688981032979331819434807403845090782738402422211075333365827410782984625948932125095574321380477431384937248312572885804822528642694820367933940029230638023385547966114136537005465351004531363292424528971293821035585230776972776091810797787143615518382526358684864801314989658342279335933106021196459123860490844925806951037509135934548246225259019968248306264230302148607819466637475081651908121168872536443523857694406495590777477893321101297396993109614304863357221083358316665229729667033885697078138179410043534157252729008535803291824709090288105653470805302019651162136183345714691336687492721841484725201688628819555406060234152950586311841958953048009264126374886620755535016541655225634458159673896087558036955839447441920400415171015509170604853643945107752672053347539031898299415180158158130337094535634401238144724021338567938169067714554060765569665122037047201678999717102929558511136518593587720796157803104379401166072525353163790857501187144193497051266731614149115804855448289683847271842157781800135135871835542222008638620252988603778909793649702160756031887964319621731721178376510630115541364886111521336623918065388997944328818039511549523605238352908295685516934829087542368576172071916627813503130753645903554071038718064257926943746514310165935386538473998409581299273869258392251923016750829621971966100453019657455736624013720134901432466974569644671624915145862388845965871885641881885847254407031003513311707600339827069101910774438270192246020370080932826099353354279243938910765071571399847683725170429897488592782742684587654408006021379895255173763743359935928295872140424852763208931218548035957869354787633388646913105704690456423486673048452040192673391015620845351812559115695808732994213225155012380164322301140140249524554072344575176268650144043977088397464775503893218757486330770814925122075616786751655408741846053610804865343595068085426794742501361574249833726896908375342033497172266905908463123109047699902083237318936113220403273618948454584124208261032024530772393691166866368913603683397024998652546931805032443270534470103940540172177327251122665141008367676751861868458536529726338069314869769234027417911204096078592398944200354694592840020697784897403512492659675864035327297404324980261466835842402151640527388837317129876306842424152916264233079673911127957543452082862184959331275913214020647714808318879078109080192146258960428031232723931087116050000173958325887301661154447215059550175777349217335278831632857803228971865695231965620907391839463331814884487714433071906824545225997304070740054179583835152559820669029607885815046278876674407567283585394350170717840106443699302047801726041822580994597488458730676101112794720452610173914768726665137807448866360733831065239610502027692476064790639844717273485801371607097524622848418313105772881750913070663186081891841351151587260298081746247829170537043406854925189911347917910303349768937754558783737861792677385183216905823976117706807322950627042065234932814772903959060410606840615175396094377990592614712152714225427312791353716361779854836860325214192918169462192288699453200443738728878379632076475655872771333197954639831427919470229748168197756028601839538962527715255687124893074759543019775989706542500077001459976851874462945696692895470099942633452393606253697452428966603354254853291931566720863057678000311977630528371584611219276691285896626971882172816137820554464109318658299432514907530901817228136831089034542590227627934686453235409781266330759934469042427321420384179612476377169974533759511979864803907909463711669945723677583821663241040238353432622680383726019990868714519249232111766583580494071998222605335803219021698511869029845970903080981690117996245042000331026300131416548001965337328977933343372383879288099867950381932788183405592513266859473058758018146608110098559795782288704790786261259570365380393499243285481983195574419822093951248800169916127759079770619180739507283867664412763807961291905723087465509120400376822767551920855258725431172716931034074138450860748488075754182797235216114456056421305612837945347061450813382298629112523964174562747973549316225058498770270307670677907054727284985470124083682365792101699609181584776456496399908295438090228264876979044126773736634631431182629563947591921923173965006836460772996400233933511052617200682602372731288626896366345407967669906488387297311034572889828952499496478357036507068486763408230630377612741365810408249068778434411423232053619765859836016057962182114698735783791521735190828832443804208653468820197980510796135392252865267009830015520033400945159746780106036851630554024365379063059267206536648368188728225980911136035749067945105356057896854588514779817589851692322791285782474277047741830335984662775978548273674716168943318918504543406054481679982348389342315356281695548001366260815897667802612147483531360112892151970577910521014949010290430624724853110721850364816190258647013912864516639346783419285802905840974820497441681452389856179738894253068402192402797254219326893605698613044353281804915043363479798742704184605538208851610864228756305442659916900258241682003286930489297822579664561221339953122561752542037910281761765737235526792874286742826658252365004785366828487780601058362786468389290935877731627853456501899909196566004398638906176168299359330150286766759089477999027146919675984266662954686093728376368010786459146186826668333954826217220530931019540436044611904860677943665746014914172862006591296290231271009397566057868529406371766402973477446306590963681069713857120476737331537135598430792412165681174637912719013015298314673966502938224473770473494488141808236009970264501280071781523312771880990111824196138570551278833427456020834651611768419321713024579507121787248181404098582026944989990541059730631708596808106919427202339053069363061421232793715766736580590765856732538677941106877669177361044416528333900448541875510195698920675364389014949691323442017438622133570912447048245819390116157854048447015499159862646562314654268199788964086411276465416994921138896795602901593181123244217270697171426408751254823619294828819539526011917364882196948980067309769456697203977178429958157059508151334880161672726575295513829953892930219900113760514185938132510150221333275381037600994262579504563735169134399385395783924886987048802649873368365092850629852546631794255453875065671738615857475808125550933780000327982858870974317541158061224476323188906992301204462029823228050449367566926851263693999167402286696449078337438608281226843283282769478231135324681232068818358077890676154174076974261675816939004641874183808857320299320305701720688909314030216687120582364846292980619432056848334243070771155347734449346149864354383036176335092035761379233529162448230786947312080370995316438921843612571076394257825880568058234960310938152917224591862404100731718811355110516562213117907314748958110727086933209910865983351889078035632812577506427673201958584546488331303654313418174961082155045222314637596487955725193189540161050949075547677164036503851199180717537142666158236752717508716948062688520832867559185728067404555109194815075655167537443636110039684399602408976218692604623129363486466790012518748581055068358747529768979448452893151872653120958213398105163733502228875803088001371571119037759892087523603790399366173952642120668087968084414637186287359745748446966590344339036646611055317182651844682611007465543728321805966651342028724302167061381185170210603880347816759488966581385173266511530147145714439580799706863718164137862974708841224570576034934862352118518562433649257530329510608646280797489118864391167202405219522838091540090347847456565689668616735091663564095899250171846007219832130568031280457334706683946311020870920740055818959104157696864834599247251276347873277861742817450992254627706001976565395587576695480009164236307400385912974537532828830109713952015109824866076411563252883172382388922068966458016870938349245914691271111948926013002837659383744243340452362915287062090081074417982760333702929564878576858157592401490035395236004491055444850896372350668459815028767437859989765142031759474503632873294570607725176699327362357365591225186257251644603583896606823493701401193878334314233387289992095547667643373361546050847117566869711389418014337187487900854882933005848640058873575662775283602413321409330758360014175371129833396731509361446403812766928408607312980049518291230740430315247071705980737563556222374670323902938528500022263524839740355284425456720166791072252471436448315356094138674762830146473169993700700998882863492593235465614063877623396515655873295307339167351479734633362852342647228520097566142686857944587821627870532946772620603742455504239622391973521072488939393436692600004377068922896791482024852042238835986790084211067037115117655334743188465951962172351090099860795481313742920700006951217170934570726874364316852189183484393503168256122503091591245991135534645178873208815177429765196044006285235220629738331322863961486386771729047588598336123413419367459336190637221087359901124397306233357952691515327130907844710591039059731778864339789435279096609759147228248209123007467219161439033664567101457181878623569550258029117878234202944225654077791595387561887222759919566248784771302187133895482639773287149837288620300492268603432621428919382193866582647982156127023432118422684690973412836359971901591804235050300274479784073576579651454496204453754111454360259374980932332738943097136563482760437707417055237285055724979130765864153733514354687904455778511652968028613319039565194936522211440444770472610622238951208312966216411917103413524176147128227095726771862736578475863419016286664329218667564088362673135164246363309548839892613618784991746299061209618324212512489554837812546342712111225686907684908129361721267999293393329909819066523296759904694466756598367023528152564613740311322654472060422486549908016140749504052301067372382474857956593543936196502179518084021523084670181184929389045386870671520235999722438777873291480845606898893731536014049195889502439818058264458601165933888962274861188490007177288505577198108234780307076097345482283925972619698309969420298472604181713476150781782322139624366788066009377479101797974505238477126609657250674666775273665090768277988239697378702486769080131653527812744262204443430929520406384861247833643008180896207601445427192098086913708512073359720514951878980403416863144103328863848238798948277315616881446880726448505179340018140769146613976803351332957533111122214476278978140032389047161643558938437168763942890974195161006954195057514843917287558649357767013250379612649862547474118422252773878961832099619828386432414652388281248586052748891583878806233556517822238033039772031413072348042868041457163088333399837887154835909953481397622027555315304778824148420784875889274390111603744686367809124066576099863108264227102121417416438489705897957404583944279705408937459027750206771880713334434410007929602380118203688890421413392030492144170547916386904790945703682607100479499482347505208466501347448776597280017410770381204098317075635911875269394719996137973209118263803202642617426124088535862029742762886758051249669471282625025560863777897332230912815711066607081958292468091529704627799375921296378234263498054998766760388521567754699841399222711401819834401233262442080456181320379768657813604578830100282932368327568896743904062493367616522562709944556294756794225481437452353153997456724302297444257490591335933187268829009624090659402357652937558022711908427123014658304120827189934259796193603503427638254582621539224193697813531600572152889721346573584818567106014310073616695331529600939860291112487791883200044300040281200217947085735006590119425900412042064617286459620669069334662197900575367713501117420501500654112638533101604419046229158086829348219090436292675330461445242378859222703070415311208267937349841955392027994250083394686972953786919729753898990103158346049481597912084994705081923328281919331913928569731437378544198849386156027053678019465907220251587710510244539280404604837265851975834379512307720926899640942914253680242693086548327601701813712671579529591724125785458653362245996456240966031102828403949140590601834879816744330747854671968466124853200413070778883567984186299341858412216138579908788661629789323451340162733899358722748447905096516245135226687951422924018348464438828987560497499744295677837494228828236305427696941360089901473920293723199025586252726906900926933338670538311816832052558930568788750212608716444723269099892754395684025125807904163952119459785628143379939798425978530562088808409145431065548295028040210386472728881323460071737111282841597246910839667840822178056251787402164452368752967426680889118073631502289125139743906335218816610092106672154528622678067217946935408839994959289185729050078591363928398240428417869536804866154191802592984918533848154890867018470931908518258814588655921260997668549516392754075054936944875103680724206409226951142190788392584387193118035360199034713214129627050146261992738748190813503569123079669408365452675181933359856499843134822150721337446110016468111246458381251643968805045010895017725374723106114378918346443093186808292018035990013659810158650267085243001746307487420194868422023293230037754899475768641391119301449654811769431492105832396214458515891441791990236689565861888040201970330051156136791068635531247373533014926765290419764926472482911608290543086289518142969665341415312209110269640514281920631475284428220728188540836966686232388997326733934942205607780508168774172357933282778473030427152497710972276692809779716961342997206086581813657242471136929151323878834474653293562167767358800571345457357998022433738624338919816538228261540078846503297464399813395510704601922458682317364208844481991645198749278345917401875115091775502013411293471100250595926452248576869147487630639162030972720799008910593421278467999955468262354917576672395570471906661933803297887805050473088375074689389142353428162915456898876237004787823691325095251742408382860693061831751430090688040323072027795791309855104318048119651062735221864017507495282318538708727093720063245973765929067492073825548467453079201627874971952849580091057102916858227358124377043313351078216959574708416103188339955588320130475499274634846131866402886429149005082485193904444825816512749926738343615844228381454700384560098240586844362914936633224979676443735941686160295306228390633606897822866653740568841859537099339486474393041066173819105902792641138962944465524163646682745721408623074792588622293837528499163277957350196037920747181062225345004049795420737006567096516719234241727480838553595909983835097487530615129852766302506996808849652139852861785583313522061452042641888632257985273412185877339816168902146855385662102651605920191835453747188602584391645729966103620004058099403900277057165229141432162301648438635575496237062017662934353474873512121425173214031798532577869577962461382973177162851587032044608491933664144969293225167563972702381838633071291107491805414569438577174750571134698581016286241921599177243793186332659048255655852153538652234592237539209174454858380607840216858834416107637116259747832959539440602493892643222648600033610571556625213987279415798424682001224969498086672816158916832274681484576425963681437016349495181033130603584488918780260921735327398814825517873614448937315042327287212352485605181064221345487054333214083479598389988827972409471982030429091744067343667594657871315130198939063948371230297408569582588443075610009322392029741478160546071426092999181988743597394790637210594178360612517966439069020456356668633518369724680861526527314232945397909943738114865789541902559581943263185224271440000178925710076481867195612891052277324872019358966897628401443791424291880426564672468579141104341208571390661596707564924987203376488250527428355095285022025775820184827521981362813662514923161002407271484323480005271820600475616455679605775671503364319207131519135691968825523361814418363540539403721496377591560026667951097808553524754802596436624104567408157453074299437089941871047735483810894254701062630675862644459198841043230255621518319937532696832577774929839921122740485352374019501681811237333143216949556578980415912203315247516188638944017848104304147989592922037911849802993355042330660447592656239184534132800478712784696529289367083149132163915087088994583148172503506604660271078732629506256778645357658815580243851178906734273463210120863414839926539702994199983669454167813843059172867042347039878016039932742562471766477120712964989993380327812065601881323867608149120026266208967049811029481297071832546648279101082945648687390471493131527815888249495911881223457759512520901205606442409068241288589621748944868283677538858111538250699707795468205388630976455204676353557078260372268706071049730730105267273636779870796514964030572867353753233965487777435290511729350959837820540228459359138532780267912842147739853903400244121831724486999661004109571220348930107486545579203009128264909077869329785971803514491588602323398007090980304084224840735488629397509636912732232149297914191463319662741320624123947697884819225282736649115785998521954375264400977770270456831194245149414395741374396397898622140750321186794337008197774514818399390273374342810355007315032394184662664483952343245291066952976661183572075540497555660872051390791377259379982862868425307231775760982437252829937999315195148276341691171273100555687116130891916047775254829986929284824445864813797381218960594799367227935117775758799274844139996135178340642881815089748682702910872325700439610414385754993829626153122560807910256225048874984908466350218255452325976758116008542360249584153537069511960874939971993920817800321187286670701669942034059629385215344549520124815156625350959828442777450548560390211416875541813731538892238133897131030542917758519944515505386148845682087697804117256987226356945581825165037844009554599054436990467697939284393628155178808043589761787238233734443358129046638065439568645599507305898959250132436347481480846288331040324785321708321226785650309634628866469825949008184933853162983431002345499049904450650773118677770851393569848137311162656415502513269579452023159007475493341177034991842805677625963838405418061537555483537071855423777388583005297515978556678350956773143186833702184231616463600639097807452577741524295122971231857081328328157134247302259685710743137671197468425413368459511896153407720877821233516992596690020303639626020678247911124175478078457555277712449963804280494463154994238472835578409426765434232889105623960547994271605956163643899739340134271873074612754478696379660351500974113058537221543894810507435476331510879167339830830717121249986381082540080675645369337714977024008534142919796560323814044361152156960893733058572378709140882964076747356541486981987971456516996048328365211467259365538289971254386808473544529733337460127950622786988168119193852578218413549067819102401218066647681616826461071361031802857364418210467184275957380232724227402060896497458253454748882020549530385856509716604533430670746527891914440585314701155310835238597222436440373350701933469681275302166715092573564702324200964212030617736089066180054223461534912599711259067673508274053480676443061724245412727335253254600051477106618667466425776612383881190657961737234873958443819138147109219210618948458296538178525438850961382599666374769618833459524223384971792413781497906423480030545755048044429611472625359871827454469516571053302806399171788169517173019181840167635595882038924517301399997105423013975091900630300102440793086683805591627921592278023552525135159095063654222425052153702371688528579602937187738860966486870245119411151389119281515152313577801312535921876106399990978776528865342257222118670468308129556105084709612013291828552303294610782462320472379620392165704670229171416069775935834393391940287316041695224268685775851831934336295750671368793431229106585481862690982713869616100707042384949175777782474795809797326880899636873449356481824086158080338925690155003587625836157462232635621797226870116144051882171865354926194051604881332364292604437808939718022502981648000976488017323438872470613877198649310273164646420282408520858842805472014225700066377011605903585038767587037380176732612145368456110794765569166544488049371554732147461786487590377779634459692969285135809467771269802822571978870511873532368590584434052834348710612725537794353828387388692136158632733971404254091612158840843151533661970577293076332751686392806790480564714744298443821772770418925894125569565174789203733621415330232023530174921221376570129381882123268708250782830542532110476627505715666398472327815975328834065442405185281546773328742175988412544648589769062252470404680225297702559662006161846365201713931675228540679261685480722680044886241407368744741364323055675656165261776030392187979398855523967376051718881288085173857674770844677110574102424763572765769796146980681273035990721221642664675168720824675142535794699286676923916617288410349408962364288927825607535374962724328308887505281265796600857697641426063995911790646331096018402297457132149567979655859904800124764538086173971878910482237824389824049829906995393959323330250766630699330463490044112252029532662242921922692888603155336566176759350271791257973704951219491071900298072034130239111345821097078245542914328704171802323304912749060636347359855813447313785087748694183592919401356518250150253702709676623614829963179522582786114364210044745853115887133590633065330598349927877666576130173323552700022183391401988606625336382898811469728510437675798576626198090082784024166058060376326576973882435660067084458959237150916229385564747240102207663858386001680629188126039424138085961423682868310003366132946906179199153911913381930892883115304106086311339655169068990853670351376048388044975635265056672526282019779548427425577578563811667744200506638344413974793844388042388878921086773415271522240997962759348618170559115375538155791611981865654738717085024164841033261760684125909853642847965197554952534443254396611811868443765470382387600036423825076476257975744167483858040015714720588076017677554985775338077610739693722836455697714496285900007273404990822506191368153794743213391455314674316589876104582708640694965841950126655186745712530304337022693214229008080474955413149389751967962354722387758839732128086236212921843901744004803477870538888699102386967745039128203781898930740137981957737560158325367149776498356186679157419795072137832689070806487662825516734628496392445957059016052088680466075292125345529250741709361975972472628922160160884191643104395608986925065759479589966156654540865784463731993694422208009078420449755706497958324936048494546409399170173659921325024789959048088337661198140513290485788520486669939727677496194374064101165750028965644315532495446996167988297323108028968590608702849617336322912914415940817267288061032240639827901664927798667280560067232470659350536213166708989489571123834133630276809219821459323678477361449395976222185783243988016622132984735540415787412324028068519663464321951903890645699572243550166899703113946645661107382401476571578327426884905488058065833532082813315129392204637583399385709551467435635106946308996347720103971875602337735523572205543659065526240564847311457792185540437207632255151583713604917647565891368569376366043027998324102069581430314016061027534363529840614005720442981548005638902228617750555251316717686128183009893074986962347232003821060829811673290230847506205960649155878964097031956735716668404778126675888284035257617787605061404854022554360279268074690074518978529349218747554135339490238095170037433137014635261601083411261623923160140082669254184723517209018144845023299715006769717178895630672859822327416102557952571888364597573376659867084138467576579084213148081863386344586603833016199016305294997115540692065169640745436080002661275452687398454880203604173817715859740277112874154170896485156235557557746425976284056492915575524624202478077047650949868500197645472273002809795070395643477052450259786761007584870211141129734943998276786377514572929598916975291064151589761079850112841096160250270488279470508325227024816755911576037208535929301442893704426758879933073788358280956389854000861736811706401133428353169298160912811314907352303750321900569700588531699578222976223982249872541254740296551681342326116432136445357594759244252741047726370623665443112002661368875295312500013775283046485815603080442894880924161535155691804531994033934664227067351971432516091449084662901480421768703000457606861968343181959651136473208492637656589022294491758462344699474396956517607651201851073039500126117620998891806907106842990389662759607834065493513532718192184631667776059319754291977496329867806328878407393498095581435315235077341845374479292718351136463999609534767457949779378093641980404359839543716935846676338607437050645379084112711296392751687595689069144173842614654080946724140987900070307820420781915587972666034845393469629674774811648610123125430805199914134739545873881897488843937873866953501565841281941283735214889660830095623721728036527532750084122620109173280271476693790199784615874234670557041200362038550523908182541120396824956031616879596507927529523782615818923911988801299354685138984810211910431971591371220918123692160475439353941311327821655410605834671866183743943892777386471398646066620147830873938504571003827506429586435742981870759585609789772691781323942700123373726367621347402884172741512540784785340623807716130111492023081142967007947527886421625835178885110991552829349329379886965263359373580805357382258055927303436005185255676383993115895330640002785726141417874185973686766667288625214947760289440353853266203947732404638159250951468291414893770413595692810133707011524250199870862025820715725323438396840328453470385365248339956695662590054901045837127210858695122850438898803941878949942351618374537264659800848705758382977323810824089614189713143374290120087338768676596951924452267220617350618717154932725917150479649381529977682127571430172937134815734134125562981825748205533810355298657271726234136552986969659505843526351726533093712408130262323962003028096169293877179890477885565142974497053503178036497762632955816933792383545785092213896261072386263195095688256185546564140187534800101694429722027878820360904686053123019195360858553884335290492621298026245362426995465414427889176817688071390808770664195513125907652860205576571031890466941147423138874029820662681969417689010393612356046426153637904170320141359520987543475931010028719833509913048567273164328742269254062126844576006722251578643274977059294084131900797596591291583671861108893118325294039600311435774507899192122039006960517139689493751059396863365551995349861342015462859033543078516005980659099937247626728524721807452618441426655891162596609880832320878061175105504318731909043514386231919550527338588847778444420169237949984139045423384628472045139852826274027951108564383585077369789396262743396673559726478638726734776934191864955115001457719116060634120972890394730056854787685111214390804162690793186362891413729202152599163340675544991640775364451080160137801820250526152854531684459514640235974059123657869852044787099333263181066621472289700854186498317631109159771492263697944135150794959052499441885279225729969106299343447553558487591677769422517884410546193417156958442183959322010841787249151346625094733005404185005697141053873869056135425550330909063682765069643613167395084430900063175835009733895628711290584564125003247375254117507215506587362274181036957624007301010734692505614941862420398628340206182687756635887635670188636287612703876547993642057193876396974838473215513761569403613764189518988745377090620428939986865445589299759920520276952444094455500607745586200795234834968657106176138536709586644835127744783268643225562991857973524440766012327856808636069601126171523373461986151839802033022136697619120162876580251776691425649734152641893368197675731582320768361352518410203887469160571538686634482297209763002667917452930666508120098776943566901949249886138958944637562105890976553282168577796960476555985442474077691032163961611404384862627587935344637653129279929175879240835295030930743280634726668108207458175319865546046859264177809768878309456126142746807520607952950721008136087551633521542463887641232051968930405009125603556531561768716678785508484759789931683246808962140101475945126616623770352773487010553535960892195255988580370413728281990851021890621533934550655629508305631837222926684424889433972550433969247722602970135026031826144460324420718933753348270926656049954692383013686571040411617906322996808987580394725563688253218774080371421103510236976360285340277166834243148066409321287154140771594496991225723055787446243030174111544410492911435210476458145938676444072752679202175906694412028422359036405998286569428493753093384297681617360804921397622027967985610176287019474331332811213396235954073630800593751537630960999351956928881790972869633096964698429471982171617224145120655414793217857835045153824375981860552725572983230953063892286184253256006260591069505585606292849812870811876828934339898086129369195364948098259479714209919471950458486084777149085630627370114017769889338379110162957675810794175831716650727701329900012768853599030286638034493037309211117271502029580346572852201033393357399971852504753425213608804680250341201469794648305701773290734749329131382629859985307468371939746969124569276667201030164766501262930675186667249894896815518490316106711669696648698603252410553429852290998629521406308625529997946030278954097406532610667136269030813051133777392554897779219803183008561013911723048102030437180656052150163194116371151116688165595961760455966847677231479993184344569472637484063817421016985865478197926465881121547950227816770334553573978346036707757788483302051434596276252867895431382645463591104734000309585733165178470236739127663207306098270068931917456461761585130749046319766809202467839994033442071230093964500848856548244851128366227189558098311380262321282188097579427046726596810867219260873995096563113634106337360684472977066251910773914484162919238832358304113563352630293225046034891467211050546320403673601750082424220800748728084284710606853326813468360727430099349614880509414141696226896085004478401249707635065246394336045664717842713525455998323949358630181869901932823181314728075536370712577876620399596681137870116471988819815177652512986802841670865750847799361244681335621775162283943417027880886911319576759691987290622259359588662465819403957927640213594037120830895237746418662734025425233320248154866134002053421393932120510072137697998484716185634928019425897496779192047805426820131769053970886517620148102409720230467918199848608360550502708549434078173238843502541305638671315682393478894386246340429096977100791174477902245195129114663513279851272320379880956947036175512716849545938129125177918480431022082168169132099107298823741761822641432744430796046631047632156332593599622355671938506734169761078191124244121961734325255643446282243626954712606631786387986085032444583031089835903828341735851602051057491792373884033174625569723657752576015147865429268739161122890574776749517277909997572162900346269598271461076535761471408336343713158230497731277263499080137098913953500930132569512603772164172546855978328565122625973425139497353727057840420143339686012925241935363989977082440998130354898670425966608126958935654186507362261392285896207890254905948281076275979863337477520818294406737739498541629954218594363602417039190371853730546495241008105303293705857786119952112056229711656677761787245723487319046972153513255476757244078254537246711972270648026317844295245039900687851440387258538285398761390291832193948346921601379431714855479811188260639115501169752147458440687603634001564554514849397884797823372672786819558891047006022251684351496543387211830335207161114317030233916929767368779561249369096217519183141046074016242776155651871476740139585003609783938629916378446123722678204416878057196317946223256440924369205642310906268376356601855357873024264161402766155250732078239141094650315068804082510764906023579360977091462589269145365450735372714371129593192146264627121918689662163475225794476158552471542085319788929790406057515474889514812856291769623795094680461322103258285776237642829048158704528231441794779297292322882079662514478309224178130523335990473230090401925546816157171735188032112143908509845393903118915070821426811440345201776009150258228482386206961953076367657935580000706773184255563251724673698615519785612846350535766859844985706278039497899261994679611400394036980127730856657549297442356608023012902278072323179905222475067906408818600121320828654371693509921939902879523466853105608257558288961949758197099733211298304338133679403174250735904099932806434069130512163930813575734320401830492983195298846024683484858297504038787799293656685867274415679989566826835998180721030992190250135726687744237439694748919192597890106598122528893849970207078561012333412273952361475150254460564376929809441692600510092200293767105437759725746111141550208227250647487134539428811891824129881574473883510316088199992742578830580914470204421338628957846095327953554213054889937503160805982998544975688969784315511284931468811090316310049370171703135998912511795795304922112093159973031684684921140535371326038931650739697407905386842306064032760375551095723844723620403435729854174125725452895965485850998880955335886749254978368567614073039403206366292915592961817231118408900864922256220126438675739946946072286104904460150601587185261648179344375022621703070923484066157192108646021603916765037165561793762369928597656482011509921598685609077979341345401337759429676641518605584390105486016584085748198322257163206588840293101492305105915464420632189714177733981002283694836776215701175881483915205149023074579822484889460550166832986175046334990947829477096591490919310528384220685448524863645315245252681639982510065719494699016422780921621180939734256715084316443137993896352019787825370324763160012546245203550186526711587353072192777559823050407401284527725643773392267266073074749574396486761877371064979829989187284554694368316901661709189003338768219805561470887469896867764030980434548053233622200973204258164288609604144787984226856573473789007650847494674532518367401536101379458707017786677170258817902341110411666131916694771807501172866233799062338999868420139969506866014956290321361537218942658758387654022439672406622245504523623687627500152904633645792442889544964058081542772095135747242548750298984059473664295413443405922353776232454922156715037362133138384178077533056640294932894826482911680005126829100595998948884732322404587470221235091245651813433056102709715160986786069886552160414025231985505148254647560181973429684582483958051748183059973314340994930656094260332357285483496521977441939859484757089904865242184276516010705480981216263176467725012577994947111064801679747302855160077030884089467407874620452761279957494486399397715496474965923792041080121208525176989855905932335004412205057109875782084722721587139205941794138713672954393628264888972566411479640643546641084922841072889509573407098192385971610692136803345384913297147955411676430445631624139795242654545556874797400133826035605490439226160585514528238549463704017097894565019736615133803631309003868515624391004332820951142983891545316856933216396706495212983294328921168501563105030306786671035558928953004042784443651307445037711783720934390971171840173143528856533599101134430699632706634767384847551381689677487753614118979256803123544115500936440488003514146877084378755411237227556210946735709030001620924658191103756043138433537159834473733235155625370668305991513326210627045394152950071346940187865007466831343795036954188622605878262952266975232361354012032112121210493753601109531846438344234951896350679913630145005499338301852567552797586851162359952947018529442428297879874589855972505366637042507823245160180602819086819223886236522895773021694817656254497626049357756411304046448620818611134133630260086349340982665681860067545032718449984539250615504623777645017431404911966575925704070552780522753054674903399260117720178253254224710249645493159881814947048454952336797518275264347830487235611632435706959890802618064747062062119284227922778521914565559618939606713926784005275260277808919256339076327202010726227016912673284994217937352330529322203298265226704479817790824404838330784355665136125855747160191132464407396788983961872412899617664161487069476492908791807475633880571780819163375636669903803331486279007204565677392735879445796466237014129088450895806245712294130241823005629533141040309235422966862819362253997304212796048656666903456697719067481224590983745950801573459837408727451482902651234609811226987006566500447803770465814573733629663223225117468812202064684914516083712347357826717533425274029524716256613231917433039410786529133469557407953791369495526047462472996443324203648027634777275427344560851893368175530193680591138749667384915079292302756927068539345725064681444890823219812357296014983464123659937238054743238242466119792198620334704777361578360229091091801348317166545700236054972232501874792509722027189690338293667554622898539678512579851677135718228517433509678061836530182953012004644328842519733997714636881916652537340352958942682245268836670673632109092912041932692552640367535479702098887751763632902129113186390869499227747479229744290288010780493451638497210097145993510743353752942396883738377940239233019976417799278380523776598373452442032514645263701580284746858841267470761158692121133469716815802101570920050845578980635831396071293646256305413723439519932502077732146536762032369113193788995829602713368094443062727059249924800298013785323764278031689326822335365207321420171124601129701023901618581711703833050236111823902864224512451853449119499501845074436509762848953879242754607666720756627353106244506339343153226672850805281043297865323400202924915893168792314282441194118336801994693088813445305972413596532201352156485343233943641671698171306775872192963902204467323311594577138028053488491350580905288434368481690990733655745784403101148838965575173022918624721456507812340030849299000721265755400745564209254815822051397978439163197035557608029380272616223714806687396312768185882066125131784761027441636239396507714809571746822679571186161794894240572579266389837576828542506726267177164680952578359414342744973564594233324713710082047241116798382278573894797312218795241503703959221906864206397956924125173409635809592697938072917797395431367767416882407178051092123252260799008960807916246753939847059107463684999963764209246615189421786517803832032021673937158601793172071450235581700955045899603191447487750847061573144182520522620132731514171772691361550253844368462328215463121106640940096139554586798457902830211358947800460196133757200370338430667449570336651310144135538076995857107029006999392111759407208494136509430373012429189362224313943633629774183880219202745761829749659960827624000466650298294441531871336356014848333278761616380494098662346240565424005653329686816659811245336732486381860304140026342688474952979032874917567789676397666502107560357075186781258967048844883130055696588129322164185165348014908846131677392935001296770811979804702951227963470206344116315766414880108873563190979404594600765898572041676638201751703639215860657500080219179299713529081044182574762000945371578435837893788528675046055399905334370733004437031220681364765759133398170711744557347448796194823541289603975604375906605422301506593406163827015459597323129866330865072450287275391934157970309540457729952080150262140297112214258730680898808491916242040474466801843349923142534250330287021974247213837305255119314815119902363431850969066058923540646854922806130007410894861546932411774593368611373954622442943060853471503529478393992436946554414894543794904842409823824038011191644909890138328776064858165350281054055525070008715754570192630479347690222024224168955813195067001596782061374664746104147878635944451594838848784480040211518968475190034569222976607941036761476421944794126034471146561066294935125957470082553419273177076270622857388407544295360127458096418572029449719528704938681412456145806478459694697820390468143074916301392383036247268698401134804943987041915752854110769757112204314176619363618606902216556246059505086335720390176866964209915075411172864413917274021744288181420886687148129407371061084495605976331843088250760115793526023795649812916680250814344940357034091862918359621494037203639997063002005888957118588955757444636747001831939901412504616028312073116805510200307312327139078982891756420968195898319286354350181289103329735173447808814445269746259377017064222619854395223025427541440405442353206117774945223352175553227782394801626273478040038026396572123668809120411947366218559170218764324038815805552685586872409032318205450474816952283713164140531870795282554265189149098962878915867622769427499706557922449489861933910101117701026772274068686680599750318780094383379994758809101696367485690207438603488309554112982549798766507442227412697201977953733241733379701463184295999181214629370452214354866530215777239339070924489652994131552941792828611406267345787257997973729666200141638276253875806052734944965369863117364696527383397719693011905953016910750876463157190204687604223375564778109230440356978043178814085780059756067847101055491946869958235129473069653570392804598394492523059359948404480650050344515196475719093269048134202270884123482500713216136600549949540495267624996221619905923879307330567679180940295451882712486472601248771691436547697344335257388489158910255742397969126272102428859509608268083624223812070684256549039927286729974663178706107811270509206339480415412065278065910901401239798437618653231383373739979196813855877737490465011462066219065965730107570514876670249751985525772553734103838876728856868157472600990792129518618889041205291028370282985154291624136002696165652647437179196392027878995490469987246950862337858797388896206043312900371743072441982277225473860530693238147551097842574108019139932989792943860796873340385730202990416146587137427660455406022837210540084634981027596278408641639764065575033200985331502693612280711167283119071921872756794000353005535151822601940825857640786843529315428983385547335677081284502919547432835187026644178230522086164810438823547117590374448637548090511608984452033266299975564862561314869903607312814101055849560165377274771110770533559605349436629926126172055234166709615048506645415771103451602953669407403999733772448931535399588831409114580741116833405969399434206772318709006809934366571485556624410147226656046257111805146781888526111140985726134087119435423300441200669524347245923159708557028058445195207331089197142906064000857261709261600181473216229481474531923450260198225263412407464388197479872736827455369498489593320437105419339154068401494926822196858130316582805021703607387575565277340604024684343992779122792491148558041789676291671546134145513404835692493539619713175019278496767019941003905761016555553906497914746365737461478718275099342376658175168513455864346654409467232096912094971501087073424172293257426733448686738758877399543566590442912350549907576760875078942618855138082808357765258520880653447745767616848402452643316250474576420172657893490909293127974667660388889222221782280885286005503604842919998007071976830924722434065453731288381548297585118943071905036915512094760816115975133023398221147670758447856878547229006103273725600619596805638402008324385013928151197210454719060162227755072443359641382521338926393426510918404531947216189152267328613476647752092395280563547929106019707085353582224544026857735101365015088287200037450206405695047258282189807685453773079049669181460836841049619656535730165970944534568417438967192888745468950120548854928099657355404526976337900141765646419089863242070013636609724946094378238404829821925877105422054140801974671769677072439215656335951762169228623540818062529781121843765203309926592290987807158834566614038615633845453909975226391224207563585963035321177319850834488129197306506907279864864962943387719315512227564774658301959715080336634893053536895105453193369032200573096559459457301168259322637361335203808362724384397765195268480048383023063992553145161274367692649800160891494642702845145794870640449060411035417515774487669774137723095414504678281908669934707485514465292968887143986428264923083779966597286061199893091267676382381308845788799644325684785495993741497035072936519792469618583345912487147610154413587863881611681012777275192513058746408543597624369279539161047499958436364601196706286780944138424748374867056178288371193491970085568632081134301528854261825991843182537370607301674379660753945480985733858884081765359376313098459071848123050005141063595540193078396016314935803627136400424209309410045088708928781447428551154463953018487085404237097418376315078088769057208825307905832386874606928235307261688878496006019705783411170463809735311834520259450716843935814131074154604623487020618654053081708444391719747691843846569346535857742976515604600239291840912867367591147249989018127457060157997918600016123216469652141550736249782506864383014903763870302656676906966034165917164372714714809070903637715156027548312526627304690547247244652795011068576969933088365528249758884273064628215231483882038917490914305621809395493836082730930445455933655613478402019713994963901564289255262061974152119501924692451261552926156998597455298172077536923703272944564671130784423015875218563176929833679372026631059601702693957498999779546460790748411677593054587965580241671891783001917746564901616690807820444073313328984910166090096666336576902124710494166705444520861703507857261499868763455570508513310109198709306963391219217930852336970610991176030156145754377040682072277468566901454409441221413006934802267402233474776520277671966806562326845892362182558857196287394574826031548943666128240599770573873433431250309134196224875613071585229077840747960986579167794875957115114390609993963278642842435231801802165090643518735068916330558547442638431120154959901775409069507917347004699140775852501658572637299690874096181724277492636718316172688249149117764040512161077785410570301802326217237585459227752486128151514590558835205135340116386083403642457922269990593138522902801238780194283773313088242458358393029817508512969794224424564944469324778247247509983982383607768557746228791684186305222300786886730772077330158922538852655311407625598014061852238739701092679926846378156047933896080242002489449579319958374782347112171055322484968845518866199811493182253835843303929783016841940891276151736361818963299345760775531866745236631284505314223242632852867279960480505513375849683665799711206187984713722162666353038897545450220923867264552001311657516946739273099240624118521772384154724928092689912810612930442473055402770680927412990255488787167034831954804913287056854667642073346455064499442831779360321390426351006202459934247368827232573310611933600714863145184500867153872030647674270045224226112540791900914779220683367397646103911075169412900864745690689061947728665379127062111144108664771469711150195370475786372036757782478241239775892290838919992170837908535919985610812330462479842948323179533860151471872396359364603631016609250706311819357687094017950694465214638369548519979853484432730344158170789840910373152283737742165852276997421365629450401584207731314564559436990810056920480096098113292303985244413319986937433602387157173673707959007631914467154182356607185612278681364450581024588193887100572530944168511887472604446798689701749708874021048043851014376041100415684409288470586280976802963905373287306119780993333831295337759443003823186376504407785608401463893321633953032165499790518229950041611587971314379266846681748585076516435409780457825975747913258567240147204776606724279652907354981404893533509918732970076227648064662954502108254952386097996645217637179214480997067883541463322514199497949124295806652181977854654826909319664362202091116764668428218082617583243413152310361638238973681427931198327635799976210417214401676116877262633739310261971531582887818396109719048620023180960402325824529618940615537621126843441858876916879595587861337110995524615117748366453886982058356700109832712955400555090848650609626518194175401159369122737686362417808886180484305262817760603996980530583312798385817686036808405221623094589437646814314136057663338372826015331185768355467018908132566417550215282637188078281321080850447998338566145333707393685244340170140031517160489896821455531229977060546276022699965483137601202460321634126427390084102728296781857370069539989203250125841728620813336983476901294974145069705637092117938147776071466209769384148141088526284418324218010717485854699681226116559116036293168028762334100819879794493300057783672047316534416705408582421441099076245899601757549255579175662385998056461098555674061888646537786981631218306272447744326421750287228867998727724730056573077419478536312195515957802499920650963280598065324159181080121243755274515213033440756515508669547325695810503294696029489192218552575435071692409996247399318973874353033851613790611154735288461685176185941461034823465900667543861873467246040989399898759397935572129654501086914280718834547903203734562516049028419402553489269938611426267206018470273484140160305060913136541600712467397374968867703136392855619319397265088920240003269406969527167691571068012857557392159581080310513524502819465786357499834843693665227526409044518871861214494483927828436849183628408795713421569383384198803753099720354556438148942819237434521983874498189137800059226169450712673059625775125187738607750016738736631634686382498096973378031306766909998881422212962245613681837850825754351495684437452661217470721190536224790027104910594381420173214204853547084730647230804984425705589393330916195014005381219024062326685799347106786275318715601751441360349487480516888818223884486634468185881907167177039447309428326015036271482534098713243494684994437748718466049033916696969096162873184361376757632155298816810907869579899685749613908391950526025949698101921848719903197413324521750404251409441445852043608175030034758001971681408712449025390421819579368303078630721339426897191221641936226247677799652697545129303989030130709808491278263703812192097799604644510651082192992648505895735724043450945043724295723389481540090739430762094841550190311519008501529748367215417926629946659821247115798332147334687965391161960414949173118702457733256756832486517869727785230799292281229662509632944382357585996064325772965884213839371651040705490644443217392133222324339795574963434088554892001095699802426092577899206210065946382391531659085706393326125889960836203960211346842300539805257721725452627214089470142910044390962364647576853047163959815300212739251422800719365574275133803486705596153335816353891429272871263550438120634944837778664236556335400030256910949900546441330487322009717463994515452800909236291142775841007511792293613991563863922484308680663078069629986804098759567372231466059521995601692283259564454236821085335536960420137889007865088617136810373333579493944207747831587115400115133205731792805080011235656999885249645520644070726446721351496279416315255554753746954151584664537562768896215091649056267150840991109320331704196528483945069243131137684229928943881604223833756523180355954384358157308420090352821871504763382864880630630782452398063880407757214561444993962422783213792378546071301537947641628261655326933190957080731927526786157860150639281649951898094798651514672038592155557419647094885941120955806458746243873418673230227017917568239686815933789614672829796030054841832869367713657992050968064567829132627478648138341151668572566543597541310811408956136003463789219579754588279285787204595200346022856261415845847108489697663836195348344626485051322697848626331144515718935110873417578723704825173902476525485588922317529979890366462400837700100358502969579911279355056263647705403221945296416841487134921881734869572852590152310360311918570738695608519828579422983815898894362197091439024195371070527082860025382191956790591587963227477590676599581843454105127606441391901859142380991752433156044612738038189628675223656135858413425879601221292522066359872987567988103830511716972273127065203480683247354423290058193496537139701326651988427717319859207069328965512672010727990018421523771861670134431937301672077584212826091544281412806208777772639713868508819168445783708271396487793236519601798517326206823474206781146370197679705633944747377365623679225665450344275361788777819889586273366217251148305447872741654483423965948584642734777007784885415708299049360693644801367837412922495148402281233947142344669837169653391257477652948052453708872996861487308065055488829544964945469501275659530316256095759574246370288785552035985920163074015484890051086922561732121001335248851290965051623659452325145088274915550241558132199425569542482052500447001818208701234807726918440156876192126650116037151355749514268054351050672919720009951828735933947958684793946172975426737109175160647737173331476473769692491856545833179993717480265269021011344844647772017778430449765923313674455377700566407272628472757449060849605691940449953616472092907480142596425537773429346027560723038185011662306158415220037802217018560090903125349124234271733360558220082198263266323387639783838472755103795648826087792875288414787343754005316489144661676999101923143974515189710140770597050090708905565506983619779623505734370839441719084982561365725594559226449628733716924447423997728257979368293402346763246005609471368473715238900506564395564859679492871595832447213337774320764845285831900270217809907576552429197146907467252925029441709805938053757533977816191820180236736968839921285148433283179514997927118863314565317515711231192964560302662511724403875852656075009752988719655004319222363273105480532613186549340759639007642795706774965019907967565084965308601591001635891385616640751793770278204113199159786099988049898954456368820487364354130525298132857947987295690576943872490382527079305044362665720094075031359919488316218177162194662144570728753232265105603963763745578556612880767068779994819852001687846336041742011396790097781897634997536594424247755715697916948399866980353085691508752317662495065703478089711025925578827505085185187521315573065698422505823429108569827281467718364304732488403668505147133923926565452885180432466232325476285194471977970422142100193209898845522705391934243397078449497593942785730601342338372894342760060535814947813580674444075505004090514506939713346747389633685833842647121651920783006647728154653903003104007107442141222661737082529905154736057580904919643216836106027008221605217617880167302380243190778811215064537430041417811891688639099449253285275918417413457040801625915468085010949145296500397133147993830286232122754934967322440187470071816472261337572914123318003929726563010942918280325642502688902698735863884184704381907255658924034922145894593659439452423636923047106129620114772854304343653039056479229396593484380800746470366441564739266596738237830631233440473680439055541594304045576145496911737281650573207187911205217902103618780807671494897978438009666454453623945511199979017193043535381904834116927412001953744448561918545289769080099694833209756195973984453673063630049990160920903902894855666176761719664049621159480986161829631866468707686181525580153819546675377382104214747002844198820864413158175316493678188936832484720969471868024959796742504991924021235293746625422132982981612401739157373775790432113439123290256596481099421043042638850051700701233584097800213023153130041489797740904806444848207855448364843001280850904195028587286236943142928974795080376195319478303094218679082819500853523091692998416517007771495366600661316780503765730196154032785468269739147221962538843513582208913122451702854339523089480414039158594874600888047478986284614159322055413947921549089653437574354526203880035308611531740193136837143961360558426013434361567080173623791063216305860095645284160634960771923188908459454257426971189700520535988307476459855639411508848206389598678785753020262265997813321402208032432896949276977746151473654063582239896829159629715109743238006959082747922605584955853598557764809960233370569759657521237564914064613174547574085829985708746112876311492710958334371255896585426804903463417543890410118582126710393497308147737813195009418433112113354478720072523726998964747202788894696134010924823399767216852563367217604376354954583659582766506227412932985972736553973003273209577717873609746862342652629669816961915361571669816874874206441709492004160612546494951278087517238056630666311303177241456837135524315096696166864582139293396691453704191391453293287888976552840624075270208426993999922962138842673280727769111572447469497309213834871125707458404299188499433277874190713203543575117768950903827456494946577369992257473488819349785139524684335343197599898282139049819696657197113567586107535567856568942887749784776451697248216961916464701608549768362646716014738709620648269190516195994798817831030791183683996073488572843788032632077071210433978839172050269706255575140838244246172645614341584342269882850173744947618060664793340506744898947303534542497281676152569936697096946143592119143062346182846760324125353323517563902384289297165973022740351641088446579761273166528706808426502452700276418639685245657536035483034546096803667907416648004522393564273320326844650379592896114478625888850167324922410037937320744781435184050167157842724319320171866837463578688397883399174468342405920059484918167896768958419333840599662863202651059152937835069088739805792075404224461922769294901917878500798336947168260738052997643641502034474413063789137498007481836823576096164314800745062566310176003446603335059528437057258771815112838924479167585499970631358219294763750531532526943151234331368046850972836973557926842089983374154575058802047940795292311938689029155558153374291034751536685615698756167218513294983496010703502746178429895571070576245722485079307429297455531727055475857531788830013806054746718780381626422286563376985105285708271787730672896563941921360033218217522750044188776385250232883816867127414345535393918575506393290102602034711040851068634622134737501332529028296096008446439454360413580665951560026062565082803962792249705146357521954608943142630914559405576717598279355752931890163942935784865028574270833444088618254481406914864884184635064325449012582989132199544581265681584025243883735817042802150407659986960450104678042363654332319135612918523095918484268018971584184288970097001169352509172998412539113073545084356422900330685193835171513101008836788525556356151596273323211915713937564681180551115603617894797583968436111576746884663805324630185960205903256167617553690126036650007210255559230125226441055530222486648198262923029328870852080247038488379182288964480119851941757493260863228731308865689799182128808849728755075826051127851156692332232966696847313017419201323443686771088155313417893464482328431770431541150344124055461555692520007761882608637943259953938300494429547751880518437354577687758516954287188743346964552099707422552914610226107838117381737711887803333128856120552826640942520762147845936032804078081815672923330351286914910344686235060397171031038376365562949611239284620749543742930087603811138231481569399451288438717514796636806041208798334283279300490040232809792805047547585387485148103615887894823292657487280718492561702686847873577259519289061099002536707844531600883847552154876089631613475959224123091734765040910753046430384838017280010277450778141623448101343845088913880799443278357501707200698305211464379928697291421949980246504951548562264561401288025967517191082256812564882925575108060915208589644820037921816434444128307504052676827279808367181633263302714021217209916470830459520711898946904912552586087106720549052506029946381025423676959482211089736205339002588267848965294213116907679690973651674918884084584828105739832638849231819468921672303049294002133126112980253176114144601222391168680743375886696668158682045590067671981107745502265225184926848099076082201464142276064812792851172634200805175330549782922587657012746596543728831791811784550162728644654451218355081852091426862173734538311831632647883562105955602152460777201107144884756450525627444290679810850300257666989975755766516535166057364370571658847768365904093379274726386232680931285610125736440078566941483205808361476242390772765749850293299307590914280641031393914387144706506620340800054896136350547223454498895653188641597427241193364983901148326125795075356674723469379910473279421194792172453428078706432775481492631775439873324770446354400084302752540099179123536548620273033703529087607348185239494669661793365369077091629896331400943579841461097738763352570967398913123822326569292234510529228496283013477770773865818308930879744214649147462970228518848315256463463450264312365092840559992486567491142764504759059438392754109100818853538538047472164713273814008910987584366851768147131733412861835710807940102208814988795030262415850995295925191148079529209556201824061141601272015508112674359714109561554552487764749967924684564014616140697104601145909987678050531203696415090983423364039398139870682007477040638778045179873729740248034648325747234806406475322946887748146025364709451235029246143979077646144849391929982673985736423084162116480087799827136703919900553191359590029131450669952017681360100231795370271636988765223611046854593805904273323051054280040178062799197831936586890685543176637041746178270992715358087470421305850214623477481923026161862298702770848123370619911077399685921146299552913151555239320556096422775181497594307871566574520607883514481873438240179472891319794954088268967605150677920208524892807961939597961457449455180966329958823593562801974773815915071647332882364326726170655419055004680260775357065793542739852792424984522597645565217819485358918255126035078048190935311801378894528022544706827514778033696795479096384106504175385293518761203452745309573543712745802562962673902642181671570412399403825464383484636211158256688565719884646447840079713444867915487542625671623311887303447336010174981410861668143370567543939808098498287325068340227057721127992484133812936237160481141088901811778637092145783878749575601334548535678608905139501106643760303555659744344639318614359156861635803347257739459282414225080279591368839261194833448658534267568636072829106989794131629005275556061878386252481681178868502344265136320792425926955419973529361469791238859238991878507957804684089274028302869419266710858656026449770430334425867770380000324729603870630545117379717368290725054828942517115929815805399493083309738366386773030811321908374378609284062056839244907626953408093639509675315014044377483306195640579493047617070945616807269778594983099883155511303043624281236690560796236388201187370259855535496179870747288114327720162868129964182702753127108708692832731751600925400259306430572038148208339609451059245516205657618810507923125354509931111054647635820997350738211043461582026360436251775757790077249071057690618386580722328446037246122785368018746222346920884855524675962163282905047102147318129296298206572375150556709155490077260884188427767685477845385110813312861617247186255856954715225734689930957106254266577679286976663266814335977009132497163378510733215633350192229447161967643177772791806863199638368920435519229519583493931289557996800014406619821837764658094040577601506157503595601453121201459168455378959315728339463822429868646740778873233443497585232255889105490642902043441542414130224665100313352266417773777175095637789804078804230797252641096596351504627364426631483414332032858549333855299665540976614543860931150172059369246342732754977819377319217215371919128625486132888740684670237051743545168274742273802614920805259607740725002308112323726294942516408365842246989293018719379947813174405095797955750570824014874207519784793870178585779750028794450863807173028436603630740109609574148645715168792424584400817951744386710381156048889194819754585015203468110367930756663319129018884951588463375402731865716244835838468379610115847477506256903923759445745418500592030945573844267981094727807161795908480612375140692144427429231223577876581829265133414665912167618952138002914369994640112048731427633032422790830140572531311116715625387532242498159799052604215944146913109276065042003971831274024051879107432416674565582968004375207175235900763408180806285983623032290020072752771945706148212164019927672412108879678795087574301005079438256728800573971664674466898315433080110981801050209286326321782656463205565974856580759342841357842359336657365493758650197690219651568012208186107235395925752015926385950739128517078264102185333372250792854182788862480557405204663330189925757321045607762342165958433447240618229666193484409375751923746554306517171637104653103091305192027775772913692719310472532308577036805894249809160992315204466943703632432902185468117616056488757594355255297168823541514350725978248817208432775883856548398823384236235170627172456060531452957876569190282558840615508040508023558551741759633683506582217937138156944796901564835681365890478962009875282557349506986026215366169866127763506813259986252178840297260367844824812037164326694843499405776560143004727069824205304023414407740431025967480774515554373714263263923949064293538600877421761486545804341738211226480496137874777113892219149195859107095756449441809935101401015176385124787943068737142672967180848860989660929394536792630702160824910996823162218911493208906576921459293652476003274401112365789636134442038364531288297244203577441154486252450854961445149177796699223536513406706465977773942688340116630720967438681124667248221854660169783110660043005360214489159403401988683729528251164504904477001487615648502429161870188220351271169731874155658292541405956561753454712760620814959344154405257871307186450492200540309333709051800845914624592754202012537175869965579945384361812493394749073524586379246029279331165821705184177962822683609796853861866709584832057267907877237952804502736432787880269107322788275039542572169909398231102528574711698121392583497842166504432693699950800825873130687885943217554042762199674578150564123947082359648438217999928152237517986960446446432630950024958896864436840177930780173456874222326500673759422996958161750769294706699396141147015874883518123285650065375047547270606603704053936470587179753236461001587510818924565630241178248072689895960479202282852245349336508907786841681013783363703975933893028458472559746981600095093671374093695965638589801318900907847302440227765509121192529087561722802647523687434105162792955317701601668871643911352206234324982943418716086284304169523123470678201528908446117176971489562273907227503960296183797953435502645600477402708210731745563976395308644186276836435896014928592736412001188991274704768383963857147046823775316025243941034137302060503226288250266017714550229450912783731309480944984903990974688821716156312119310575021477311556459304151363174845960606213013446423896534841081607954631093376679550517194333116259505548325230716299398606585443615950498640047671869085769275029827429408259291863036897890906291084103650098314303003909049828573027224112495081840042844158616024601311001895219432303261529755885212604311591603638315335237993883406515252016540563364200138909708178087178507007145828870121582977242076211753215237471131725897685001487030188721367894071961039641715002090915248356885135295335565632040965937228193206166377551434385261174104305135824780566738195315430054035086273949978127859709942475814963671779634086987446482103827781208810007326968148706352088680925887155642341101856984934942655739702920153653754952968934767382928318535433585282583794060022875833192747485817872447700098681283369342271755887071539283186434734643552259679828998086732314765770016192591344000416349219123958733552146920209114883367360865828343446348138078275072497475102711284748390278472598596806672968780837984800794459443599080607060332686451939513020915603814034612704471187075070036769480713456019206551192472131470431002887583427666933714174315162283939195243365550868042562089175819281828551867828475883468147754931167194801468059636818279023175673125142559794563433620446493229281874652652310289288989838830935013404392621443390405846707309122061222282847076707421887492352743600558365479235248391726479015518882913329524460013994283310360225088337799987499140749018382332977010648696252954645862921256830339470062929688218732650634972534037362282993661933222371331238435440258168305296806608391947829532324838812560622448111218241599567906281107309570144760510451621563097060208610382039349603761972178018333554643633390979082681858596552008101582308558886797071342280273088267589794281153627470907846803356629405017906758912940349176335971652400557258713927322926216281111532478290860489993495614642289456847139536320873640589576885400386142179009234481334430290749751432462909025942280171267148296801117095237403336726574038755231507563484309614002837631240086335031604035321470010681967275821913283294825681021555607341584437023515890063173200456957623507887007341030439734177822729464636120168581970129158359917899862313702788875231801435178686755324430195094881818807274356775543624108366619941731557026186071883565798945678963300363952825010329401673555812285724832404516093292749000153712229535465810650967557676505742804287929424115202516266266050918268560932989024691668197206345430346387063972335377709854984364272052435238539907947642352176177654807842405351325880380208953847299047844191224878762345007311034674607463105279091990237277715134232619576463110449692222188905925767142081673869876933242048357245534184047628136962351244333733479806778047362708713916439445037882481186634436422466727661620160871082155012842412200244819074726988094493462737118066234242738745721275264001171494916119688551380334420711428261397517648233058562750027541189522622372793978627266826219139319807526647511790357943948798399323382417472996048915287704579346740790826035063797246852391233523185267610949091130911048452321924771460142357077243404307265178327643434534465843495237684471772375568887350073324398421988626463134518363237839727140134522945948037223277434709609893787873031047456145138504910904751406005979405486112273863355954017378912570004449775121809421270388486018427381845291246491824555133994321979986936408878286152271773197930318058080037511289536549097434477841073551132083571459047577486797832008952001672036814417741511183229493756626349471221762151248895334338436636140915460306810849104378621863624572104864149279828173722913269374301582733558557176256437638079188132383814165027901098851150679987308444777901129660953938704171078300520864151410867845643692607461913151605254186015256654301454199534667114256723195888922478554624855763441290623290089322794178472809728394207609854524661834696071684187629265627501600202082500743454900680772378721295258880747866025316197085097627617260403255351370221785639174618597456179187668106221007492131178217330695174632085616831903134711518402366407608709473866167336672379768059707292208863213793169665534036781629742605241124666690392067955599710555845136551245559183722193599743723292815846397119339273989064132926296294711450629831654075363755367510525437864281494178798023650112532854193261851695317506016337271994576850322799621194669049352856823197143444637105150278574112206570593629833916027522146953347527206026392274225000107741551881219016649110482780080247906966454432250732774289482218820400461368893432277029361677840206953931884986083079562019746958739898210816673862106348063763757706641236282058962333974075563268760486796270740333673582504791036806460161098548461472871408951957758915422038961798033970594606974951954948066056305042916202994891079169814556053959469136772585369421644648075889037216856527753544470999455868804302270737847863118330307848441629207164370021096937850379799264249996741902427206559849366758464939418708282436246579702734318536782494453091335610152001266290280952295777348659158405536852930339826446691468615244973130012183925518913673114247160108728628609073810012517855666063261200310262158800901999512745294699899243439589233928953665422707517698027577787466067027416790077707005507220554526458524188449442447972031006648794201526068390715538301108007660100741103127214935538948047869622719621024044138872460824380083109563301971697337632404812077238198421581623760208779899886327297832748642417175636852897017197433764550288643567696393449214113987797232628346205421395899525068853772926734752029361057529657479891105743722811359594070704966583028714127848741475935140779406803327711875767012325349734479690501063428314196005195871804713942088273908050152101177488429974849147367647954114379300166264478446889900801417969785753093758127204180983922896180338941257030158330447477441446029086806798453654885598641709616444144958325839401616355152611169724133895440575085452389977665177173959240055516347358583276058244838041426661122732577576413108101187309756167352891200717834159225153116741933719434931244188995027358872237369028016049420387864092785053962659817054656800654797170039316762919363109960902263147864991211141884697564635686888096191772053863874373423236412474983097765897402407472148410357478845586799412606760539248356584879676503928034345469155613395546013767455933117806927365567962235996709616037908458083874301083595208965994038486478249588409372872821813932580982705065666737305710309954563628409651236410139826232590309553754587320850370853655549958804510114707065580892215915500745201736662885645700846511989808534259238817005554776637075992159620200908205831842355385865116095588368045582393193243060950357054347423748453193328659572554504003432421583134045075682451118555014369670350139432839949182259167394468646585053272578422773057558110007497296702819886029184943226517454163960513646013734425968169486772010245873810620789923330901523397859887621582868246311666566379534917381227223618782251144143258743591972685403039181324570651601915995558993076057127988802291123072107907818868612030059329085271446808049251507050331789533168564287449782867535585381894729901127768058055048204547428167996921595322527430337381971367042121857446875166966523540916671972460462427126728850647570487271342983143230268729673956006702338484905882646626077728926908319483454085388128638383031787496031729696705195077103962952830073012421150104015010993393566505721523228837955567593313354807578967204604363705018245819743377763049019965566008174708936908919016246491381188264963051720197773528673158147605504174975782740317528589821929534362957458040533268223632685737246939858226125439003924278162810131157217626917719824721239614736512016354557752647026625391359329114982849721083022777044118331335329514500010748429171963248413742153975066803110664352128685499703485349716922248262116538403914300560024676332396708377704917916411002347817257548742211911227772556834880708077865481470153290708276052605334424911538049550426442244252960015591829569222172290333425742864206715400426954928456603550088386471434981414008009665791454593086123484333108744599956316592980757262632380223641900405540474030854682719394701851800324146532462710981591479432576254560615130307850842839661649026100627779569082443078293193771053396987909629487051563852490620403433805705427024855044420221795455716430338147527151457829529723119135868509081770740596037153219727664308869424976773758928830852025495707861123197018677741010972830770149581259864760206852307747050425189672164835457262825105058927927840458895020590503408252704451748294115690150296523802737317285915519350108506300391941761789527035523727856485047242228881030578904647295774844586399158614908718006826291192299243435455228494406149142082714615275781593182060458009935363891735948598501438114748640723385655282406728410134431401625333375161393543885662882012176967424692724867331920880071841740094151179631292130098366180111892588109570939527382680603225293625756158621565541825614682323628879782906769203160302792909331197548446873939189074191355427913777397106852737978685510407647626804764426057908354961261514663398216024800953440315851435896205710549796653552813527805604592549737872286945716756967160554259913650784026936820660934637798990155934198072066331276393829489914441366237867646468948511752994040037226796717682717531844119408104417870112026115555045350984192168764495739692507407719340593971030730743150970572047285251088658229852803119540871848059915419062332750043890790711732589071701018586097072931825484337698560658384081202851985005565331598815060632749496688406929604354240978741523145020054806169311118871013261439798189720521993515302637545109123270163910605420030601162848832117759273906693584227022858151669282060428610022587814681682615961853840081635731096741697335340693013557394390984496328590743981833838282205613750157150752881988787742706807714706015591819735739732747143651319720319771707250358658500481435030366268545503274391711222848440118953455124786215693594316080171467727276644852855305724971584064114053391961171310507199460336230711083580074755128729349417930480831196778567037819123908284657993743490740655351552693954401491133327052541539352946334265186230247949200737545150935503434065647894124556823190965925490309865952454664791642729531309748815620599170932086190744504654278222918363142653860194644984781783798006687399597879358391053962853467161533351246943606191775130763248170044215790508004463278247918064567408471524320409428945359567601881861862574511875273684542388631684323659724291271114628541077582321096141333211778160346446347965838985875046299158800987597110969426815620083420671714996473295397422356342515861879642566978100462910133402749493807946419452052140643598642390428169556903393352184627174980462609467041687397587103038488902426198846045130418748243164485963845388342307754147026414812095992730033101142510960440987441433118057266235271257754855396062149430819705493515912180084284708428051171696683672401452303245120297804200456186555350957240897809360069299329772021273989433963206883412997448079442495112261454231156730699178603749758070540832712066734098137087339775211776210822566722808612879460574300612059871843983105310031102635185332902434522779108486514706868384115081822337177877738432561121519472379714334784509717676079878101529191589480141848558521066872040088986619484458804956426730469812397468448013511697253904335925327313310567121256512897194152753556293777917174721840168717001111199662081946946623914148268304561706417109352834922690467882214207111018932219798452157687035816565953612199140131514220895798058098306049009920763108370946617632271761684690698594042971654801327344711277753635472777505428709325442518356759120768954886724255749819901439348060134188187106335220443864953777517494728914507367806903016081972675620168490467220114826810513283941060382739026904226508568509348854893475086603566228364905263586171817688357517518417879268034283893642147062794624262917470429949206808306620878019145220158249910199662611389349317801736551429449301525992511099505263775915701348825586177018697576891284212324635659752578921025773055325494787795379634075926595599677162440739433643477340092835380350078342352374225357148645748878659008249437082108384083392162951705811054536784455398906471538372300784086421706927762457376207588173035441944983006067035812459964951533424913010558790537172180837796427616775770672990494565451334224731824990673510599958493947105410126808912905253308707242636525646307177856796762652222227829120502391677306353919376966697519956993698381470502946045307803843882595635842229580672239888684308953202525208274294860464954215845745348043915126060836637544711447687411428576400660159758894435013099788039872956134310142384720314948597548096732887462614390962703467245266343423668156843380687985643313048426281148522051595789776311213350709483109570464695960380677910274515864313037717428527967651249711857998776956152091556301609710244852031816947149491444952045103541348996927412192211426799851032498495836564122660809843185122847092463003850864343515039449521822994346255982825952255484850555437451174226237429023608013116954068387840413379468313526340076223302422021358304380932092074488072972244354033670967889359641110893884809736949862594797754359768508069716734196341962359009407986788232007494273244211427390873550738536694657694184013602208608468637169177045248066428203453432026772422821843434645044397961090629037376939252503023688847559531238046847697180101356559233393176046062262336858262383473768614145211747929899720983274946856357927558714487794231389501259546339370722817213214709887431089496250147757294993056104930277378480022706915966975267080378394811670547184381784281756140373530820591273543102247104429715697202594369692272157144494324010064562015749283902243993180797953764525667518397598211607683946432121427897362008207121830673534846912204761106659714923254664703176071743075748204314632475990337749984317574302443713868727872901679273726528329237186108052237181511432185615660141564688641424279885126928202829658607775465423087964049444492598238284813851962331793396045680644215314991833275886353587989050747515689395615707808566029916573679307799483151526613651659346923684337021897700423992495263103895047556079328645343353481677822510243739375839674698982654968150175693388471072597036040397829367522668089642822603046845393905676014452487604798115588245829312999973960946418700325052520095271769593250073182997655585226016298921576233966819810409029282878111882310590318115644933996602568647833898839319647991326012278195294104769218128005735018319032039569404244327930573650255432325638714251854998490569460902726276231811111021125671753396632062326033021208872991369815858645415680860931084313182252096301809023168209831603862409549083074077534880399557150904799617701601604297348285337452068622252810706547993206132528942421456483832237965366322462382868536001170220476176915046120958186558435766271642283545941946858213203554809526730862281361166370002399342582583625288099097871283012708142155188267002245191796480581453073515933373734097190746781650946529831621173661056156263925774493646218127384096112992189506221506275649703178701106429366300589486629584520077002770712105616617540670504812584567028003793301561483293619558049590939332081592069549103581730787610393110827380000667617406837851532519796227643853955843269046661524841248197686863537213541804891683063898532925786555716292288495308841330692737411676329647174281195846314207065908300294314144113324339198058804647362811072167380169359744782268294960834246630733062385542697264595944691331911270479038013646562311933386167661213742623864318178524548521882374959694097187783501001349925747075634725866471131994842349284050545486720520681243800984514611633456624381622317310923269353466651242102499832095854961658671807959414141129065455831576192907183412577543713942034650862717736434824341044038601270482085494643414682564467246593496656272316552271001546884987127966587187725023244699293356008166677565722669661006865967529779427821933272905086147280659626108767957069794324919002861757748454649709933067728851989477196799395542955375979015826792527696966501824754312177161123152070022016489243024875452655876083317694593371915330850441243607949318781241156092836015135961890559095545159319863072383777330853268264015304950178082494984108593765795463161047191132431196434232589174554284159865874449613288592496375879135917302080391984197877776377104223415223202536817862548145155712867281895029373160308443860183257474120332584636654973384494850996518556574134013993728765687464014520271323417804457504176955765305238000418885813799792123096994586662271103685021056940844512554766640440633723521119789165034970547962398318671758842368324394783203988828452444857500665531272618633468859672462704985955106457280309228827088079576664395887559290052197781380478797141338917742802962750257344870424547072064375679578048345898976904015013301214136324932647168499015813041432680946415552366502834845602957234176276716220071732153886205936469130098307279016000563889443682302733085596369391302590323593176723118993380532691264699634889436024817558748346948228656630931363684638106554685007260441213354333915824860920368545345200368402699020895771628491820934201326134836471112059441970765880753587943623677184498921311770246099076056192601839604362600587370584689789977134392046232595047235860937574880477056440486164908602654372588521976118315279316926366823910300980596110962541725489715179105262092697052887676425682560218240235179167000377288465011161797930334683606132657064709796378192907353285134466693866701317736242682472544766736368218797249588499966073367793580173335928623979486057397056062251764027432155005030363793968668243275309557905854525113952648601760437311219539653032963083869177157317691000506253584698676238943948424647100552530801717849060388213416061067723077826805606955087591010224035893923935631140556162873082953759473196428038126659580198089019528476187730503687825934801546366644909875640216045871561255924054134516128730927051835028007542739436375567279317075855516378969744975083760213733812910020367729359989736673520674268104310339179727891039043849598619053152436141016036682514397807079277993968152937039118362808403881075004441298108493602874882580011949284319800689530458494935677146367057114378094838143685802706617876127593968283222417445027064789392954209026231310289504770279414979566227972532772713349754634581745460874840054843431796222405278071159626979394139216541386549806282255367272588244988615130956038775336344741520319918819086641570385600063079823948140181762974023577827701164107283063413977681904723782627549035012224185863361249448408971414640621393392328119333874799582972151577361046454168014783824739515243788409083577346564717774513350796109532212943210815467811823605163271758022294745778079253685906647515845655108566515152603716744498263641444798806046190053099324369222622444126623080294647218125382642255246113466794546963694441074490211685045327486500952217380192926025595373584375589810381213006834359368623913875209754755508523567551033144922870794053864182551839527137120758917479674086305783192180610651578905136908059168177466812827220714582436659266326703445228375234456506093440793296047799376940413658264063441726727247735039547460082545198821075604794055728646431923635635162916955835643672372240790365148450009001636542654463908666677946882632971937931296485441373557293413351024883340817195175105173546953075826384554001983003655315048418231132093941236594283951347535575986646821783289829126363200172214968849572186091409296047648514207633338135005116520041890980126967515261633108757746924085953378440257143406963525238466763092454987127698504314162053139256896054169474876467985041055621542782075900240369157458562495572313200582427025940748894379490085207217754887581338293559999048147139979275918107085920600819431605658368997486825510134784510188989504879262597122322906122633465319061403699817453686727301734714039323445629166868550729677847235259919702963355022427894184717701245371431318923693486899582157524920339619900990977090503539862142440471829780219434664877266827623310604984595599017999389669952686207890919035096661052747251701574075684935763960270936231238261557199419612851311598806430491592104592937520894461690837294491544182343129776613744262926327724554844942642812762045842038210713784599599670503242908710947887266141051464240164979941528412772506645385258365332900027110983766243139935116296182092483410589551071056781868040398191918346300799365381654788879618769575964684228436657203592175955803112529909612515921041697974672187645951246163089271062469438025622968154869569420781066880164003357974868575996089437792160659908928270350493024821393751230043750503575537297067693690499559840941197129118837610254024624225392951240842969607811216512617380090790384697224027457757676421621485147499949725591149953344688501170897647182611199382626322494044747596635865214961272554410116012377480662595843548800739737999442693645497569453691325789150622131237635565110892399882223618350693753826813511699039413572008237553904470239101194266547453863657460532673365958553497686145088875042411528005838729183177135884449401062400229519767360021971931242765203953950547990278980256017299590450209865008190216305828070362266396955153859137492907448539136011182457741481891052001230066613274873572447230200402441644214670439892473508355679276508283981239589299586452117122393910209410903486512954128233557507894887112539139835248047823027366603631432953173859083184206919157641712019680338734253142101794200366345874384244763766755111711253601436677173340200006403442187903150698014569679657204602611692585466434897162727313287305571907275348369057426440870536756511763019000029794859486821876097056290107575178162346305185518470347596219067413022284972744890920076874860929925744513416972253760310344822329710770468886755614790036951720228689095197244803156415295659184624602772089448602006097816186898944990371163864645511899911334389263008233606021556858603688235346357377609866183598888769594232075874591319584327800941848926847599941112365003856526784054193764468531105870701885216601971753295482451929020606949002533304929947679599707979494533797561289235563746060618251088513258728938791753094654151152088305116618006163046599768297291421582769795867429722707738465180657350226138302648914527836446961223586799410927439523180469251147945799870647754578751808920617178401749703229207860454460282453811859602169260350637117897536934640450568947255789734442726385734787039931268270019200731404890630908698568481528584530951349852678582174091111646387404459110082836748413528509283844136194188908782290927838925261283157557838783555815003013061936531691039747026474390134318145474179614981927203280410341761994899777212167029295761458372574968640958581801330243891451264942887340065461181594947090709952879813799884147216588313444935625725332034469061686679916926339182811145612431991258919493347292793549349370191068332416122668407286100423943311549982328793389757276160643165506928264428033618166153058725601765932932641496748970845096648824453148841285048788890313930862924425574224840205746763079251566227878278301250736358545626443169402535812900177522906714327924616725195209919458322557386169008332279634819671039359804498939350719594321902566288275606746053701684489165607831413588418129562441724960115638632130129124093227986586937419370866663378777767451555869595776848971894444983059424294290575626199394589887921535199127563044856352124260322660354914918333629850371922516091233835925613837815785137031798178715416075430274419869100021496650841589322729522117130962891744424886022063054558199109193222258967706470211699957790102943667067305930557352772379244083381286534875774774372093391932309451504347448677087766048847470318172997510428360783649441401698154412301629449480728959806574163799525833548401579034733016123046299030572671322386520474348609954193384285811315070815541744239671164616299541772081460599190568648347697722572618506905185636686597849954132464548788478975314575684827551007985769099079126116238396539824958992452026621241933021933885563434559425180824465499901682881024715217264591057422887478740720833463499502728967946227933924229808679633936182363683426231944204745787885713577042941107423619187842869362889767284850772237930424209436258869018510576003901857623023739159815800228320868595105793273802586676680615749092632366604337246205043476821331234061532625380366940328322214757698534235563830527654603846251121729428857844621676739604753363408324253675534588074690713612311079481695023095936430974946776483769810483521556890215307200497939534945193702910622393184947989848480732248062228821911574992606540971890792128321631017178646970030040712455491667395676342197211203467170141101886227411720229573795288322012660990286257932415819518089620205970154856908274268586476814752828017241250007930477655440717904581595375793619644853557343750063018488818418845349082668513295319611531185250265960481252151399974602760529141995904664147614471654576788759269703440898967495817398065121978745576673872535207885765200512047123288949117926255902141552250967520715710177557104483785848362236657121478119013580433784682055671829029865010524536249179508467188745572270341292848866896816484654537583977207144031074779208145830474555555141010486249351401541766971491883954110780601277827144497882379358995526059726362607134523082326463155976860413776400557852184597670925984516866755523754913149679078094597411901970456045833047528960821811639021820326829173913559067574243799366918284314585741165359409977022581916500470336698739974560521629593895131851477772863361707142510376320426218570811871578701333611512664488866902176900330733641330161909208464614778126820965041811934398727049197153435624495005755773246837779311475844481950504293780696754210344783591088646423687057816610954301992280055289611192151424056797536051104254850612803182618612325335453935379559082388627915937109419227497044590283256611747732955295635579824222250648365173886684828713550698658257706379048464107017964744747764599400745158912582882940220292991918500444976899449832092356297726233995431420510511787056655236421037840789677110813544131988296812960143830450443593570903667899378077401150055748619624692777280749450261537403086793162310498065220811227939065512087002739648348111842906709340273135596338612376432990796651772108098684884008714231430122581298084634739197264086757327811592927804481068876161654379017647472733229482769371796322056421862395272450704940696494071155493171694387054675950744218687644402843686447971211742148637237691539478544857717210223430614047202053999419538690057277871024450778729261034911659823694900574044235143642149903010690980287233470987511759715191100421664499726447783841104752550516554169115648841484868852858398272043194152241479887039549214298950002420765922907409478506842334295631480099176857226678550295305035724243554769401624010572018379057730036029563795103727806840434541222742340399452539405333909927419603748002507367640803242442161263350616425519227181794737038321330151814895268334751329114975800910354328393526483793643473986902023593647549836871081581670196959620515856000213474728955955729987974787953647656577322484359662379074682939984779290470406758355708711985344906545909691139945570916414622768177722663485697274856305729862453085609439316212603230348216720141270561404868061037857258915207631755345572881822693270899850640432224055696042698658340439788479577857280142354166564120933948007204956328887936810091190194855460996839226185616393322602597086855249169450761923862357050003233829096857503067437672411205328609916710807165728806547122729918591464785889627968860016750402088929571840904336447958324472560928088766955845937280739035463612509850906804290475648166388546194810319449705545145998006395768221070526363028285377987731658376781030971948076600579926648784314064038881906733468497543123735639426259758477323124112512585407289262006578045991706059250734434045472034760714117696364543242062277049745597763852291062598892332582889388851898497930156699650543702024931537950471163626600485850689336779328809403412951173079174249793460719792518886897542632145786733017209601820365238086878056602327698540609905242178827505465293953706339295857146182583060144147003326490196776617505906446814462203524182358991525657090899847630925778075194278426886910852570714040785705952591133649436530227405260369244204247694349218967324421523539098014104981962627901208513516315116768582880403290800408961018408399879268338858036853295979187427554880311379640061517342731983782464955669434007875547466522214660789239143346213055898409819924391078801303581043096315341479452879618657542434296037424078252074909674131363649965203410077220352949429900378004441404265065127963235231441406583478295872775224062915954720481612178690223610512924485146159956637970095106660980803295092889317722835469376770442601151857829383784967795117898567485385412573076690302532311620883292355355807830943087423430587110547399950948518585843423584155955332689332619823121855299025948703092788485771715976826412942439648687498450924788320116777817111174799860467855685546205394979127676336436368254276508941505740479625292140985806481540275684768825289552747557434357734523089950091234669081979051528477910349793980688568045261083371330702393652364009735364610763817325062462051720949981674345428554463599827120100554322858804478015819320641200481469648789563450222174629755131848031524851241720850336160228081869410193829938006108749315006586567603664263110798942753828299949504326659294181024854553743204203761259120630989243181213867432408902750305732393420795974701403258579095710574898701135969842135555695881564857048202848386261378001154426616679702193063937672364074162740295609829840446578436906695605677612188516218457134406276009863620028206366764491412263940550994762714504708484815818845741585827535676795210273639852463263233098831650892390289214194052952040281280901047401184135703796022182028679119897038631701219324690274080184048486978992692410229610668678579715689256740679451130193158969249909636192941223529366836957397394383954272884409982633059398522529381560784624669753417263402082838901304592534739071745934103961400286838014478569566521303272259990934387165494285475701788603152272586891374747801266153154036606208820142131378088119902374768164588033164181857796616143516940831924601901017267930718210979458497841307749234349235941337566130290365403613455783698134649501950351270874599045022132574683788906211650509802476792955587818304368813591532338004068209558314424968404656102124752333353877414698928424058009359118236623933391404430417905728653748600049393552867976828331199879578144951844171325067413303465275506815558210971944122297032651400631971450441440517768414659196037634808947425330043369509948090030770228915943622419465261687750664990012704251852564135056986628081135099004820372529239446709939897857889742716867520665714703346551067880672244643936005316867940102059446256338090180697275258995635594603246802436842681277267889262936806316983911271926646051285775966562155654793789964310205737776834148892358715760999784308300160632954050639517199290498545102089550409573446727072150725488959874517132533378071025229219101235205612786683533637163278300972123172655156720006743650824339380192019958030411281329012838860525387151613306571199434672664155226053669479215123848342041053153823716844931871414452170059001551841286803286488576856494426749824430054048786416792910815718732283206451102938439827159278347881257958386578798190861959961965191452846285866232027616843012634572533859691887136624933199127891903355492404405068173167400581563757447066345072828150439140759445507079312996364796607412739214433339868527300263373118498362478655236436499882121227680038640190968208838229795073713084478168384622025160283015651569811835482164620197652026260871259914604916059607721156710514682320367378868115756174730274864546377105013756450108121213473700877927611278014850798399113686575039610463693347208571527327710870904135428113067320816013588025638854174118764006041722394508471801192640979768989918220373119288932780559683210937378070252993080101230365273795224062995547148776407301396710017279311409311333972894713678267657850472492027327993398037730041600459229233006068725622997068271088789435767288580420603938529044074078329435145749722563740472700017549867576493480727235656378769986725418359371143621398094658169834135552359660276361322293950053012462280370069632044175109206163172421466966860542436926531167957302563433421979666711606220608135843786430036147065474013225083736546495826343285652988983665779855428204332165957151729824628815056370828867041081933258017807229399250600663840508421017496131504751373983111739172289992316754975146583072807277087346235961579899566391971807878058567663192656546421092074246809237920872719870111944160650321816683366514223654591264799155868890919732726794422469276478108462146749572250526853341234790774989113330431955078549287973986469678215269238515197930000326672911737011768507851839710914228334596424913482455665838870451358590218445614301375572297313787758749536575173536503715266117952247107040421805030857466976196252463122285358726229454352983643647390419361788565873392763035651562389618719715252781319594028599528870302640771571725077687222313453210008094175761300846292569454262770413904617392329861659505494878062830167860937777603029697099890755885830957874184110487018049977726490306026861211372469761366246470676965597412256126077899560906348350217716522341866729418593503736667416840371344562745307379476706360277125981758878168596962663056793226480698654647531573696217920962635992943102347948538350287249603429618019710271216135087868520959122886508940967964756434719274985960155153163911650343135942857359562463452857317597092316143023215347553515374336506838696203435974700255526535825451994065090402148758201863988311182456215207040995120255594200546842883227647583214004602094807332833517669165431501094762213159104096258996780328473297480519581399975289185703354617089645115264373575049221279758613888383314834328376468079256499197612633316662207961211850833930144916449940664355887603030315768056380788111290292656858036615696306876795699087488179201729465910343632549039371058083359507849141699087174327172237695517000381389626677766009949766376042276327409360366158002986788701842994378203782148479355002151347605604581410406097373079464904309999206479246602919990788512582558029003581132518478383883644523572794589636824912029454122015542720104076001245493252667898913879994857635473850578329795878787275602004045114967658762423678649852844314378006121337462663777552645102867639650874773881165850923409337241153757038292163890344078207200610239065689655305057341353392577176452492871656692760420769460247964512495017519061497826097135637897508856921919990697742796501772417934754376933040315971698217957611098061057773566444570419295646696992767245207778624828594002354052384496037210758341269631128752904399918365207371960275187054906998391493739297617260190420646256666353430491701004489711922528709460637917298388218805658882901855369681662958787350584347462007525341322722757587879512362101906759432088910470519681691996924594848582317677983299223125414040399730296867723625549025048703078809989350500551359596618273843718110609625926238681474932943445551605541179104132123214105216207241379514713143256360402652838403245305565615731972419331659777186577215958182200406307713781194958546329364123314967434417543117796774412590017317880621122385274625661690586443015794650272148710141925397158799958075115441622182623423909931626469021504755936843505567330896785596515007131928496252663600712723249534237099140722999053387923918807542517717688076584872457836762334510410360255855290723398629378061718577783235273946833766281841360123743155312790987184300153849635479965444501256528032232478246994694010931652302619894605167399992121215064694671192271072773263767739527386698973760137422948101457797985536110497267000807243818161552967658407193098479147330006296038621838898284107766788539880991559101360122218875500722311236553092439232040000825021360099554575084116006408312813410712909583300293167126323020325868024233860099470737400362899685380642488182314377753941247630962519561992766263635477964142697770818897156960427529157292427218697289476808070549698301710373726674936082821363164390821954199877641036067414348056674409083954941154865813467479193842022883550618690075964924929491033417107953661856335311662259209620721804720100568920898065769350524102409698484413151985975208657013167423026850200593356711179209694875657961031715248174934928768454233108716316710367575640923842459120472443855296268811188634437663946762117292346368167103277620310869603773237293169887542112071904349465460464725986024708655221709813077574123841388635401328880049375954031717988239211807557188204409813065069680935064231330317400306886049623384403539885838457397202236581216668486696222807302132096576200593585783848783415177952836797581131413202179690645264626067894776639742336757444363473942098749180143368630912472995224256981817716262957422095337743555005610966299791971933114574146280898089627887080185359885079871127390582235893505267099475009996498393115625271103940378648293676637881388540930713119391885373159326737669340189589702293007675052171725117076985040378374476622448105078857636690481875218744725696013319982899901418927341261098607556514044955096025628139128885097796534942594936620679607265033564469274899510361034397930974416097930620562300383976809772700905332287979048891626146238573307790587069781327550045548736162167092513080544903249668923404882408515880747329830470893387645907780634258941483458812292796375190645116136942846887477959161324480832749918040919239545904252998291700071833994971500447523709857390597280957781779238226814506644986289095599017841272808412901002825514559167230126236942647781071052401236147961462885785994311274791890120104233805449244656894334631353445693204165568893601995962802923659150000797174993860041338293017878892625128799344365095466653516477689038419400438111944655869305715526847465459173391550549963678186273465833438814797230211114837624514317381506096846005095449708776452407323995060404484606522111895808127642467171214669089736021061938767271683994175504934925818227249892233846651593617367548956195461185618106438831337807248156124450189275199323618148319589898049833584674523329555237171908483258651156282588245842401117382938195755479432886758850230448029860273726416429375766093040049347193410220928514787389757690108715345055393946989846411805020082497816864992525141382592299542192677267032370951937003484882879086720559708438633642289841483633555758927440888947382694741955412888453175404340882844503234350613597609613639817138338006008363437655765845592734687648667394405198643363655888083340698075765301773780447096453992645658227890455990801807332905247997798540028333317047936638803249030036109714018791716055608682392479488739904714016066248509434480468294414066204765265734985649026136690020614433965986633970120117325893537980261168900353887406730919755596795828660992795784029166316420058675499681970123386644073406067370265097961761370994843026962911591847399971245021168986225231021212324377032029530755495733645346784187690597579229222609448908790583746659496561917584266222909928493879568349553626489940199268133401533354349610696130464355006751423227284201665702829418612483805769283103545646744252640224565331921820618749452044375728603230799111784393108075199125326382124159930236747071046785775425982030343385970995748718500481031382577519462352772255016441583506515820537908198265324686406228086164191627618497262930590789896513230211132979732263068551341984382368203657598250338249545859253291492229106103144688743578773327547325502476421994719624744514643070929564731047092298108379230147900115851244161621147897407568647834938752078860342376715084004299658384476253746446565180866952298951680780330343140488680273023090345682574481147033803938501702830613705848972178930288541198368172735800279396225045299901369695800617926908073348368058361319680240449379640519022182044220039905967873980894526103888983311571953344958713578435277719644012897493734971851402491661702214730105006404340204835273743239534298501377424894814959317313441148962692282872101479560787979550448891991430867526777933665780099778775914381938557816443485860040656756998931840472328384718816719203268921112679974221416737922754922817664675552754471111861167790652289534920355504466182567993644107607671731339813418291035825462874876664687186225005106550310745530183656200354320887483774218460346055535283541793229550147223113970781925389398612143105769456247825914058097062808598353752142571417856444860993923251515331578776496669371157865454992988288978615218679089625134596454375080705931770128390116645419389934329020260231568008642272162115122706330568039594773143460489364855483044965402515933259448651264047123949596159092398576686804582755519614820383777030456906869059002691660446604424281296868368317812288312265962456704993548849923758491332792576564526404156213967421247878775318684037846328137643965930411096677986818927601265531998534092260546233671497872430147376676044294182761738794488146692663915643196581100807857578337126242786746247033513883821589742977377866903464302676490556813179666284303147052027265063891363220691952894949225220623335723618521186974033288794907093936800300015327790642232773360454860542930893391949150311200458990630069746486446476975340240451468978445369220225657996854464101350229564181500392399828451651519958463203922304942545771078663513236460507437758524145301929339476193849763207725094748135332106687327504201644190368854832966529055937053607584881351483021402449342169987526844230659691404042405307560637765491218636687708308317791460206361062862530920157531596914623312035664496740614925521979103101624307206207699985603820022733679455151012581941135171920045267727540246416502982940140196773124315252592875368244294863537309981824142585122693295006699392775718355181181347006050020700135312821015417867461618451208907796803171689352684988951082877900628812988406572470798819418409680136861167019661855677904898701239479097143336350621562805551983795605850661696466484249357373945933957751581703385156947307225197570433881591405677002150478891562534830270154638372167607340484776354967238664150263868250572849690157555295072793955361574112153964738892393510714598782411797605263909698203971836034992845059828785663986010869920981918704181985266923059968786476497677327816696637794416602905739995837172652018260243628021879012887131752006766940865596327792318317157490067035092774642822570239820124095848721573555710845619716176130095567832511080300959837761083726102616953848114003400097094669018422202807072980625261653361738331835863703602484322611013516152046682925794851586393946246599588688782707644812406037428797020801391337133024947939000703688024958895260376019902469364120426178707905590135720272165820641281024711404595222351666881445429393570277529709233793538562245318927683004976985540103314743188101890579763431452150285325113324243870443705459908970520357199302421083041581407505307873869274282943479661801524179316648378469432114332757710942688428398987343514732793674003497150896549048106136843365583849005917265699030200338083645996417848315623425748640604498632504749481674487829124496068294464987312225560395176357670024526575890073078773746041358585994840397293887299682873459851591289901163506999684130674680695035928405398561472753673335355797683771631071834806659211189488378020310151503146247655369684071403175516155540832029708063675147551765476452538606330459124498600431329599062426583589349911008407614257313102485521405470781793442370816873977765720378989768494938509984613737046397540327063345203937342427314369259343303527296063283233592795562756655263482017367696005320091789665001889655368625287449068905354701327190491855792954630219719633082676434601670779590429224200422346901633197099091866104552097808703043575500574364396410196588102967016514770939249648428643958075457046287051135754415050354755139074523959580196288619338218434312682079624546071598324478455065993277374951179647770731352160326593611542075274331089007534964323682000888178816803428624977715188115764613733716623488226413899108365677225911653563384213705647420929561237307665173222411093451807539306322095441810062828567981138841228589673363426120446309182004654166380550314165897731662504268933348545080420504595895304095494719701811300652493440656602999521057885783021097128576560845140781732418944210662668959739768419536987727949418260271308381593558102528526739617666903673605206259710279372759000199998277811591120853172012081527218212151489067525341191884942748677292857891186908427026555561041771268083834220808869889491757182651808536568431397182592027280263356100576212140623605495002954208088876812027577479469634684498284353276167021871735164331259532286074672728790724124527713311200196282056522834704663679915841188088115377402553300745835637887475530900759435273062019420699519112128920586415132898477742391273140101939625459535180570026986886830536046413558996610974335221120242807759554850699157669487336804439397002026787109707978418199537190872998966011318553935455228720343617710056252285556778644024529049379726951091099378752440648975669628379123806641351883290565470272157094903061873695438642673663750127293901613940200947417972042077487736930766395213912923738517075667320830866572445515506106569755760337795428105047163041943165822312695557801715235441195760188875780963213711593556452960017649376572632560800685890449277386564281278156753769511185376924661267358171412238813647893793512709903653328746133145984899402472878192643673232414847393353863159721858487200397737438469601935765988506694170770063227995379177891740317802151409522033750759209319879908613346351272946056302854740719615623752139808632215600924693162183422839242871316768336692671888647459691337861188063913709210845622326135898977875008977875559500242479772186814041373241468095271872807848368597846772033182338807784313012126207528260143191704290702412798522517988807453505945955247192284284522065094046392250366561086872652794775291250350247602356586376477841992992198457856001203486878342234446246565546336130576808723039607654926776466035555896885972056922294940344910621507241185317785620953487628399327553615910149633010832171419840424709398953510811200729096852396318856265052307733194735413895460417220881206231594753992321027450664033145825548178433673658777515108665404984758570850632750183466078524403260882121551946640685601355597136472887605516846423514508171330577354766171239639360499244918874089747450972045886354145503149569447407526636369962124121876717057565386239312570123626349078831809071210992759403605963710885118082187715007088432915310507148764080863880428578074121013923340975117585973386733291473228705123044183605595118033070171131599049542982640521019080501157437265573640583356265452305601666761150755075774954200931077108959592063379226730285416705842178733122415719046343736173493950689465592040614312694811722354005913146656448211148444363714671751690619466883304409204406734358833917403890824820579647189781508724349010144460238064987609559846012365604120368421384921570208362629607455725194003931210636687420056322471438187263807369373162215797182192155299623229860997911674794588541446418855902127421787065690597098174233109411887838619636931930906042655412532442973133764531776510797672540752195255535575765146111646161223203458397328009802292368387616796795161852014349104659257624027817830289533403286852566841623362773910598072481567528263782549607892831085016632830403831169337761073411226497630257205115921732661792086932477939575361172837188546799782841720232436904650548374774412092746672770845244677162675201836557713520934997494782419957333195605886055683893164053429656387552228160222019265827357822210720709248302681731869669774983233161857395861370427846813152906819032313262449484881413554200133548181724922973839665508916855477217729726277832752794693598666257132929390051816298378788761696785019472483823057936273932516469261369192392649495221984679634345535558267670193288252175919868222623519483426583793165618041861688494896511809865654859993468190275210761440579554135005989862570097164774296825499284888298968596387792456363964408134909065991519869334583551108685878164510862805056560333766457369243614034103838183559163848606923224516381930334160085666562000504229280774193469955070372764409823039434461622091289668495513912111488834498060225601357776710096366742655992247337976184908870482669840044465473688733414683960931709574381262918644549988100836954830567173223187532611698813706091414841574233609352566551633142044819873243042961949425124085549055744864612164155669391885806430032376645368148244877292088721108614974232431909007816587190311549990306780873673415892377208738771036332554784614493574162125458278513873686075151524066032296021889349751351029190048966553803567540414364146025152713458940923174647053313991474921859855194545698081452618490928257441774231324487265643180390739707975336467420855504034914774853055847980849082654382746592335253990762478335891785987264285605322389903041985475321891330568265384268691224171153377111312419493446365131453105719747825506360506373067677782970689732244208479500896222501192850367667777928401363047025123597907054888214155970976429651199737040657451625102144354776480426734665541196339404074782212217364247679493931649765391977062249466121189488043465186926460285092560450963068549882240914849742270177357442561165340276522760634694014355988846617133415355903121460090923382200821898522568980869694973319598755848632622706634330659288941951737552285052572287828371638133682072857995169384913976377434953124993257290045547234397178709119043985143195796211840035952516427482970051386672336813803992093811155113318383575859314257259779263960042987066053362977092358101866972991358713768714321211495379514463442561055526614479003683656754691276491477060461113312427788762853799397712263724441922992486699587105047789119779971435520657481313129374647131623166478200815735724761535327821029628042668148354510274185514678043205037371942934681115863071267121241991453261925798978655358815177240196035186967875578269950923550424640152224699023297785117242338386092085327037875756524827562179529150338949384973476072778436612685612602507903248847232658551023760251697741735647768990569627731568003053729542421349720617433310519386870810649897597568948355369602739202154669622487500212005516673194453296597839850928328443171056055005898534753755847369229783934860007441592716895558756469422043006439513155609885393965785912681202340291267048441893699086149293352246910054284825518529493845804224956874237710301778812238925453967919094506809142553911164352887880323383952619521500166374366449274834066972306878711333341649834320380689278803506433098844542636252036805778687865745521004359303313061214325874482917089753256738013621813195467440998595456007412139847621774144157236890672596464654886117725451115608732114629575398072468187719539965897939918058204852269227151499415828957558594787208180359583173491518839763131076785269287557298926284360288947203754773254641395956978962969308011076797127909362317906055587832873328767072010695722857555659501424647195503378656953286142094483925119284212886488010317361865689945873394279772166302250029717072452752226832210809942231373420885456374322110408352534609177921143272849595284654737722489525098933037241896130098628028143005877591491882264382480247182256402658259743536755072622989518609512898356187602060164423801326869395976802188662191190625258605046412972350358712093859403714267150439031629175552617538836530402904069689118993379907620548911276023393421523483813704841173306183774233903781355449432363174659554459184141997804796259784695619216688236320735433074414919710963331188424270156018410708162862458879858256123289887763887241225529633361136169447773450497433513469799026157870644359293381409400628955604261127992846504485666808134821281575991062370301310312406043517662323963459265829296724720379367243478736746447675410677224592411300174542921492050088467684608123826096568968024275322067496427099855474699005874549832696249604363656868263482958513239932774708834884668823121762341056497869006712426207435728134134840333226915650068528060706724708665564346124441504553361124341841985763515697185724858490404638911832396959029160695361124947328680033060239457870080376825425724188283164952002246382088722839494343955600063928758244557166654060164123052190759953168867982670583410981165822990205921753331975722887567814082346360547314850095177317072855228769936361695886313173516751431597964742778145335948778779119232199814642531053153231798307262094449310137490421582950430914401551659410235629271066361326979484513571623229626599231216624002747876554129416971638477705971724808758778835042436067934795084340364723946609109278172688165714587282545848681869676221583223119589245580243549655767137255667042472482462684458007689055204963120447557091569018288973294558302207498381840441175070755205763960585349360226103790159021908835750465156732244204347261834365147832720021704974904382898422276747655930929349416890090572255206343657603892075881622322430061891066261660983704533350621133643144121548777727317434186765597410766180746404004761932745826063805421770928001439153413892701550045990216839223266418108949514932364675806417924577262763206716283404644740243142226170363812553223234377389819857680876552422811114307128016625745828263758556672669283823959376445425747349651401355796921398195821635301568624138305306358079362585098917360014787689127469666052285974605499672625573993485369111974925824118711549517117584831978803686940032148349699535673088840056478115891710394488191603032590271070959407950886680951337744551311312665851522027675362116340854456398362195253426675024627691818461485665775229227142539629926027160438622683611057785256701305938838492537531070668326029915259399893676342923737978932001463889152812591039629076375531275605960455885132503001749552527322336764424713804351953263298623743629329389829827249763785688987031960931427616835153463904208552995215299017760391838871959894628568992098359210486730265012976638161059729686380872999798175185276767919214976634288097070038702191200633224213919466424935263082718729316536050231286434244445873130720945212209368169756834591879765614772205426767410009106175226989679258860632883251756261184746584990968518203232506156358891133828437851063364455149143056755227364451880342632648477725837790043350680454405444081513992904776663630813263346823187469638042493829337897347168224564772834056482887462956887450046207990505243717153856750419949397424329789601258498330879579333919843298771817945754601158239226413066065061730597073878720194396980029272541381782081213158456021526661213023053447926351194452197702379785512646263220632623999014653863226681779267454681647956038631472423476216727724091906568571354288858226247307690889617118458690922017973684419769452295216339642797545804846048720438252251962849909104860791773218556234799102931052137521938222973830269868771681892917509384885021498729623055931230551400212983032591446010907925034198984396218389848719470319085284792020827978924462494223142060774946142365246262241119036826456505270612620785243474505318494396474416851325513577727108552975618925275112587611429143222881943706888585491094110283217537346086807644909128082257577608561188912984740983904153544782264445577800130850201319379009370097109466905280049038102853967501420930633363658186089120598182513919534396746201708617241055663622271048350491893566993991042288660998754167336538921061087287878455394083292195428100402588890463531977197162251470401697255399892808600962957311637992594316736885981788353460122882373656478798116213086355012837992231441688359393658951590464995338715391301860712792232508642990314713732587111839157467503971562656381282224878862848485763732318557519609283554264405884189178984895943958573067479080994321375477556066215187799401449419267996703810224617901813466670147826449909450994055051641455883602299962683323320009316721231354916082092343798260043286244526312111517943954697497456227930205278359911995343392746715882789844370464850653911197184521063781964332935122749450084401911620885732995605735403977935564947149260489876836538385514930472348076766623937868077460704665290150360612683522946055467410193700478480512588635725028504301858812644855400773237289969121745775031174347648668512296663006926845840268542906670550753172065558081290088922816057551038147270320792446684407343268905334197158291926655143240440568041395358958116302930585901230036468174279278882027204021132155394015665758764138983236735647891588997371266347215255999931817673763999820602751539625390115732199712267036178999106390592361427100057337046097971050501260687532366559964644855214159769603535816249283234614684880100374984963712456441036115121395469436499173265682849050761494163719011575692048691882258315794128425918473304227903073708763317641374623562248585494973016029333173661854694470208684969850165183584757830584950581734617001677629621637132734130981730145820016728105987501747349418567018768963404422738976715325095881526820984401041735705632934046557172035729185449749844301118447389079823204458561515069711247868146175022899041389851749200381965457033267808735192069556846247874338110029236751855914448106351798823203791475865873022241201603153459664462728520211904801560019661498868088372114980870257634584948968354033621639510147439929943243947189075961731497212502820672923510201565116890675481175124235543601950518809075794296944256126313707658007165963607377949247672225194792148106825541769750858115200187098034978803730804110636850946837314232919839664972709479883084079368303769979230751598524365541038319130149749360018042613945947112748784538524743778916035592216030187124500028291723360007271323624570876279661491039925868291793253959082521380254516116912602942703199789799304441601305928244272614381764506824914140154206707811538560810968270941807694101507150659507764158666728030855126327089744157035532616049035698872881453366754255664497818033931237097908049978844817582866660956637963728698445409771118778653785143837388947062372764755733801795048988078050362994198959959187733090776693797413912019720264065817742278828200120619860251131401860566124228656697685388442839544957552534838923205312886878983666668711569823181178722362503623340895838442475861553574007737907484458977868182966022424357520112715686502213667911612040704715451707224945948920972081797906610683020282483738262481279243314907752512913757531729865890206908450190917323891568875097465868285019067128675548603959321523351917021169837719258737960477779789908424682464437332080505689021191816426532563987134076859334376125000570529282688780495708265451932406286662404797147931775001559002117520786345065405399310906347511363665565190035517939126326394920576844580025564544953256182005888107886752715978820749743652446147228941328094210047623359257891990300415003285695353730606930107837445430942865461039954276652068745868118918830698809882411478983834756032683497584128274562821991262807787086160208270078984872600858863050014285881487366780083380064297267470092912541638460400188034697325401068051886073743831217467703794662123641194949886169041960898249141735320562423999541350810451021316010245849505095313514479081047939173647515970238277385447784147204432192704019875502251426802335191817471109316306319183105963089352646793623154016803476200323152796419729117390008828890650191297095953041196926335093878410800132826789764620862220533830733906748920926945000060414321558300310648295674053798027399036428754566504200403953956663407642709482849296767395574497524752910017954721582612578877815875289405188087679559900594833958104677148662283725910950384822771503277238740939673174091794435117666222898501070734855869934913605933498598427568667717703313402532938962901916491800623445132609207718157897884414746184882444753377312025817505550119985700178527538843705814914032591588799213100913320389280558754718941966173364638708862549991736242376458548972950053636417353190369847584674792795891739848498166700026282808819663222256025354603032501005754806711149977609414114106512023883341398731447074656103860819898368188117487510482475937370209246619470358535169198209352525005718724280195825867689312194036402083558695788628676582637351960505855040114153220545568070404676656856206539240298845291537007651805860955797057146934139845547927205986247088533953589298740205864868307541460286449243005452100533462935132766343310896176275727640183019174367325730728417102749108825487555906515638405293147147787336018642854770054843959942947721830410716020921993606173862338643894541552543296580328749076450288662239423664758204896852423032988475068849250629849063296271445261393170278170180721159518824471567394110544312788701651684055969039455693952910287482461939415871486287951700669776576534280301682722672249275321845600176620108094075528193930772514446466987284084611808816077751801032353533822684770076051758264530497623661494221902770333358143077835867184573991165577764305597622040043296872603138063599082427144534362167299418014006722005557771325478496426048267511213021121569091316161593380983579718310411946854834072103860458297998531802220683646511114643696682848808656309874471263335497923002800716127695540170161913705499736281638672221310020950270758184752638532338301432159444917717499021978717156051246271279792180382687504363192739825095943084214212789572950932484910348617241222260707521733789065493765456150259654326677338216148297572691262726600545978076153918896427964588640554619450213726042905032408498079879611616819526240244064276770260843985229924559900822343150002598748410266891805998190751092086896677124353915668108976534246824976095634033539668574576573729480282804289904917351674408893264972340300920101107846074394364993845205991265249190349078590094512609616499196892689810051404032918107430601831691908720244443884894037709224399604949768756729467043651249348726519437838320000315591666361134230610703742646235063114323521541058683346737370121618189165723011655541443280521009083288282242383673915382931247547908747726495374570609478284450443422902083460810075729221666220988111393078806606000719962158338858744151194948318804731564796994334773138497566172234983517358458229894171356548786833571708824822950315900873162185593646193011957372184461090009582107034443657327981872961008656228471784195077166188791693278292696104963235530294765060211626541916472810395177826201333800866220414795227096076109545318686778883264054957665392534561552913334089447220736445588810307029610265520420571916919839780401572286975012523148919994937443253002911669588663864354607067667861776897390906458989611897604556323050610302273895131902340751396313403990889006168950530028273400825331891553618279308691146116399276159221994445916181625785313949783484188906109578111756398473609369317935015096403034511757981663759170470459444767052611346510751319966094373324429301879197621363022447518751930427535642765965490555754341698638484737778141840996908803473600196336301477339677102467530714873572315925114786343336639412022133920021340301924265258494616185950915958548607777725329155214894757063045900128360177265851130751287643531876176762913865040521131238766716969961643409306353041882923127878313035775317246022480340610092566785778814010034861558248588503514822910742422817468316587196547110814928861819780888142314409656989745654930596711245795791835561825902913566281636917612129300973250206162537311666569411872516885032608943184741388632667613069860948917632597406202245595755982909746106861204861897772351591331207307752451330472594726901624242628962487650056363652212401522233230954034619479243602017405635925906272634619007380217144567762603440114205533617411933583382359688176596818186542416706698133846209892605319990716586902316859025344954424695575361315721052977111307526238506985817640948197766455664718119729057327318503478458836822761043287437816190177976925277551723802483746179013958879793603798989736616049808329645121282425394643825664980069792831955197802433163544578414391067642756711961760301785341293227313652648120653316661056415172758642425882424471630456247824535833243137991675482304308574762384200740171516491420197069418157620311532264654346987118522156593795944683142423615054213353178152328345640429861100092170205086752846316058474196825156966738684791394952899618022306831745029143737021037514215276957903910602386486264183538057787426348017762916699259212860064914930101029739834097485939378654778310986090540618222962139019083394771075307561223919507442411296876374149353660987368159352275829659729976725945182719613802131579365277770328587936847126936283094132172572127171671014607583888916630236538570731004335217191596750316433130431054512696391486658630489265962062143167245945096141216164088113939076704404994536509929251590498126766479520165924222237741459524609956752522508167943613425411506368053227668004629716531328617073401249614229703775908395888404833759940803121794869547185321479643989616663464266224957645464676963182614110010385892313958258337339648245714856724313425960260251276845939001373129798975704446712285688713032398213835718091335163244183497756114820172081150098207683737056323925336699712192231277914267459114603437685787573049278968355083409201753480094918977291490912128251761210692505411530859469411437688387569453501950424402228645875388988263256395476900035352784831512595286165193556162807935129072732293214024146033895939804316696367463537801214582728171061121988549082321409954327111461333418484342308990688145553143131104222714994649376577076663816084527331449974823792545779163420970235243506162665506197202395765231971079225411293134523958649818039700085146305221732213699070124457459655149093759833538568198764252052072927725113934866933046073135251590038178535526067180698452435216635363353774521536631419614532211271435662060211135364758345736159801535017405722167866324574021271278715821764883608868804420162459967874508444557778367441231260749514044103837930928811371249266507364126231583303014114225617706138278343193272188591947533989521957726558594096719301372660113201306502806397188831129361644227375532564731827857419732600876991643643403122290797340084685165653621605556203389588096945737808754901046979829539337553846352245349256293448725544752032731654826280524681075181744704339198401986383264029750336131873587219675538966657044285415949424470474886403504968086991884614378832813978901694229939845814054405338733340558619928019080922736457413164827212428223363935804618314043689282346719025372748729755407260613796251983917906061705366512094136397241730866966183099528469187933160165727379235569149810788833539276177958723168497724857082256006150491690150713453124629137150490699038577970066679147121865962704444483110322333504308440756102745964963758085039290590955619100575035127381044896216506418904013463236581749070998525403444017001852418993522935013162691294873014106551751253778659952783700585032841417414119059863347958146314939052862678010477903437193982037744339052892433041641068668162500316138530478426123567272494880534937748278419144188444702800829353963628711754425491333803855611788431608193341170380304066938879997999212465832965564229226058942359988938767771290496168278608833123319652987681732889911603770786498824874096386622464146653092695673738973979757813407709959205360115795786384837117188644320402727917276910252825624174491415429668979214799833413237558696424358880410538841011491756349191349087066327052654337467093762035695349815821621954048428227717294091586381038870834205206436976526191200232222778849062898008877627572208990249855025895216550158795531690752502830965390396450626981615998676599619990774417645785200509741280277606668703841258175420005796930379967474948270712745108826660960207398347130884750509620761721490535888106053115474971347849731184709549639173783748048938207711548012539538470878927612060804632958104141550557354514899366261647371218942920689407835240120150108681722938513599368707536676084155974574170094595109092928546966915325778450785591330871506731587121576226593195580925426532269707356354018044727499053144980367761467431883261909380796131563137974690750285045030411676057035835259193261800510395656414264726658316546124430881995369695689387682153171957278856152566823995272448663371485503681181931938488181925757024329519096868776128152955461790683954218377611014024299869097353419288765709218296778208984544588328019788011548941065055059785810921446822249581968023143922849268818154317975195298777810004670589093291908293498869607505008523645497529715776671107350101764819325606476119635098868352325974365153488718283426363756688272072898385578146348091765321190583811482823145177744733669211623696922355275072713251878285942109899890945419412375753378579905598729554366490989725142672979648924325463921002335251548973210965149772061058551114639784655673338637591945911776725507575707267223953005511178058388765166658692891516322277166158820299693117088258399215913982577826429989274838113417994367535008883217714072279224758877109119461025124206196315914336375592589393505956381031135376717417631461711243140145822860274160119587458476529130966276166060086057452373730393533703170739335933116392466687656377489056415727897776809565113617849413963765292306996833714292593651087593090961062482077713119329111053596738899845972081923110514175834662671206451300354449092565850010931758344996985920487666608985445428987741125899480517160424011642172139381623485684866928756905587668287157127789918590625074083101832600573693841225553176030378314906617299263964149662572549216579585200492970157006734263915764622468454093843511386296235490943667072419090271875343351590265525139728358727292623908550464104564032982944290783666482092435359251746501865151457675580550242041855671376315346960828792087221622095599497634214978595266434740000391377301556417593890694153427061745804402754092567883060266039096284583762848296650377283692802515773195260049470863242645157320068583208057567025212493580039770817279920546860552238217763865235778659289473321014870248032740353061953589354869771104293322402996200826672892574762737724509064647308876298002102314557503698676563262284345832595243277309100032619545348426591344484535256280246910973061238682265983633175632192919324770671915306872198563270450906361288899256037237648603121075550446337098441694991958926065673008415522911214935884275430056568755267460355910321421260888507091366950999270785069924389589182681449583073319958177423480865197000492536424363969549666877797096573446073219903275619800005250922008749966301525243360964764526236428192644086696381087945268261098409302454913467415401143038034891090900851304100655011755227148647791021268786377858403148840378324774378863196799287272011217844898592544743321505050133654384471866653271057436976203029359655127584629368974663883054904637342793074308930293340292043381293523245279355409199409039758664474276237857554121392206226165294379526544464775133567089017588739964624861357653598621424024010972639453860099889472961320293028442318497437767775159197161394381675096142144995047945637852360410558369999572232736812154155952350617610954514845860840186015670666190211841230127988069278994827650472582533347180094222046122660013651052695238004020955866378202700758445296352631586077451833290272474223510254424841416945235036777434035355993892399174830689410656723521230052645380271857372219952228333821710354743297760877475625886805790481018086117713079840678820654972452239663528917964539619954068206793607401669630802195293580268260523354291073418564291364288670943379561883496741088178646899158831400021751890397315728211350301884841139400618970321944795431875352450288336399857896695407511941350735951373112479989423005069350004824227503966824896946612994841154373366532560848448192177048310613003718964322184039949934414370553720212721382114519254765007631469072796309174372700497889826953180263301100939363031183150291327777314509085539558130936643628976878719951503145415016001071682703962064294188536056785322636343512893897634891927560565864599187601090198280206832673779871086137056152709029790612893968805584419527924977520914625211421744345061910152913760178211691282673346177658849430481928619512206800299591203026743888281306872087590115713990050143963456879358250795803590289191532446584742984176612465107731385908623484915431044827663735743375187108417321822159294038620643986076125390422554933092448249736649506674605465659867175281369400788715570927625759622817519639231239253318599030865264506619891157513030126963579885701977128156881780983445089367810181597608408666878082037772811891064431340318274051172265658596259875658309080909871298378402285269945269176706791583736068507633010927916817648575731909814062615582451713602163407002897905555484661163773032750703526443045288362560524567637796442761898317729901985364736126537772997502627096999317734125637781268789343960062184114136267747932895054885969337880655725137024575336674902983708868504517502233324798146664530760490846023396238770980849417558981620328001297449699275228939530523782759137757826993774397206070376153717538576255515503380822094378929907135966723863730569203814296848027957681396041107538021582536941267740466940082566400799816970826006505542973446850671486730283666733740160194030356370451724563282795145504322529211494576408638000408073849151669768600196680751762991760825925072932839543607575136094107061167811080408438566879551627795865497783740115954988631279704231643781370737901523942094959306922453766797588167148254295071365977009678478523252734144612808270671864658578316435389730103951071629794141733702643572267424183488119321974654105280169910320366538432920832789324071204814485512645859708858716123593440632171141437227757935865228081994225376606215011777318037279697497721282819049926924451538074034739198949778123220529132300672123622849111241597565646999236133898858214594016861163996825821011632153371832300638863186566519283036685629264952069364070507958353029371989840527139018921694858360890413280227094201271094325739969457480382533484154678979319125678363990519657380378887025430198668289692687448462141223419555358125642491956877238876767206081627805240158248001244968829080845604563340021770775210343329183397814639587410588692086164358361315508258527854187226243050671671255958682973398293431376685325815955456089250011619785433120308463736225012271291411943555686417457870124725629195699235594412826204225292607238485320512425902750720806332440340155793851120416081351289699930759004236383478592205256848455661992117749099452164387177596738032879561025614938830860396432259883863828600992813136460574056047836363342129849473908541842685482569187497847559439801172667108503144549746185612110504090744587496193935782752852484229309099655185754465651582520056861273333209781567680643731894033058730705857427325471444480594203162626659818836424350380285495583290116498272572606760316512122809969056189210127825199425563998386586787495765205138089844828993401046182800680946318620634719086625425816810940480453179774483326121894645471111914538300204365728572159826008079807001625233519824017274820473850926711685238888043566082008371474001914234634784696554258449717387459210671484796458168993819121909395386370453149141170269301155008499625232547509533497149186459976202177545023727926625198617980456685376163096508691713597927692795789913143738006922265764559317090087963456641386635222704312727227813494426932752059562375223814044785061606781842881866419290005274735878239645818658791990877946842974437322528731186207007367652731629330491238171374024745339528440945216304475667372975209972029085014723581277476968570285578472302883852265244747192140989457658840230359525795331271479012404857296208940879985004890262614320495352751806820943217992759884536555562623360886562875990818807180469636728973723419961236891972338062687133492737446138801440467294384347674410506679246478648074379155967656652819106561399885816913476024944571959908215297629893768952953180486838586508718823886659402177519108919668347572729087169070443779852014878400120732737308228472064046100849782719875262636405309445386454802067657913870505978400580505988788541835270638969327827427760545545493592821624201395694354537359993970638242746786801140704112300286469643261118966116171011334779007390948959933116499472149442301477887466599967484336206004599005403526141306652267177482447944416383770019878089229634161702749299529758968818526246396044705469982297073961386413694404027445548136548482392290273144298154861520401340973881309398356447188282499788947761274731618058333059878278910711889868434601276594229675049839986642737711471081048007431186252012041456418587622038317878802153860707881907685327184763417419904551316164795575011647364665938868319391698993386440035135278486430722821782288518419477636583070893449570593762023584475013634725250569030114413431094214582296993912414774434548798860650830886449443931616067261310509234940106679863541178150863024201568986107656406818074106907088958492439947064904565455526112527996912790956226833039669190470210118767212768422461653271564138961408280053183961458245830801818958232340591210101543611608052373027177813676105904117275691087403378214899051358401781019153794782096349984747958608167925706536381495560914384638569751518121726867401984390775101765423694407508499879069849994206744985575038324495329553239295437099017941271786944871376087118762619997242307775896548811209041429540766069455821378215006294072295493368320030723131199025562675616072991405408760556153297667043221531142975452414609674015899769895740662191608839952864460644633100283259404327645800695511863669730148116697291237711857515690718203140216267936199004271134441144476599644472823789307217500768525855632704846048354247188740293824492618265730663988312229378651394288106852858550114696239478258530936556394537717841304407481026581188750773808112776068895448438251054321642002199771177846022062078879788703409885622973669685029457149700264036980247087141325260433411597781471553613835857018622447755120472591890717622401424692521774142396458508663948412925952186927620138564596414992462536148296439819165520330897001471394683462249589701459131547364544011120404589477992581741188940842655586945576928658607074422656326393982393479982693236765831489615868125391752437385281614418952483500357773734774650510209876907592298621856120915603191693012373002241183518174206053926914760592747424214924650904216840301595527420782718115523630270167411432192329596626219147161741048230322139671799188426741275416974920282595107584096905961378912557976799303097359416557393359167137128598232273901063204785489071458198097994958919841155323846665237364527499513540222608828507286483390149545893186330647000407451063421852497280885552397423421951222982099933266548623140692513706980058099797183488117486609745089391243510640629729305341677114971876572882590756117582610393556184239254048041388927413550912469904823946040519230014649046618474086714665012367544168998736531829725517283214934192708782159410981875937833451029170566878400117889798002300701189752748124263548765495329823577229534527127634118370251878695282881788880013338180243854010686018162095788866987516616284625350656336855242035975298878080552397430871977680408017192218288662984359516968581613077219989610691294865800577403570493769544085261558635990059494970392560702402823234252929875973900714088297302473193406616316609258833234831153918768673140724689616066444684205909046082450748229240238861126254258787617950472272494404529192948859120330650721736778836723565115366622085511596285115971099018758913126223047373639078775702574068724910578982175951839948004184716937786750652730728713362816013504077030852135921297764766840024504628258788856986625576595281812919385786200063414524889411237406758094784662320362505820877914219890210182960355668433559006762037209544537151775361535709870848444251411742281091265512261166210480774575604516366177021328801865731893757093237000190356723956183325471985124750683453934097655552937776188186199657193692754920007352609755382644647959487707929136347010389535041042970341232941291917456958991917020133555197945715970661983434963635638783195707955576571500560432845448289643884641991762508474357032597621614032906764719583487168576665008158742928956465692556831490814857366785395237472339033566113132372290717401750457780231991643903209706891935922359564302201839036632348421439149307968519973595713422800176205509316028503007223227974793662738708767842628909696903483429165941115307123921241376052396731922357449085594252149954882394971528389078697253636286576905503443258825069481334334795103158095028348048010966336636144330125423758606687696332908378252153411801685447306377431623154315513967689381987978654186248946513133765258074715553315197164703559073578972866140910334227088993306360038671013929023235648737979556610811123209205683453723974748771225536379696633794477886481993923202263492660629224758130747580758932209806361539521959647890468753327227210216744497362300202932303355789006014337511384198383311764563780363315760706245990327890196319395542735244854580294101931592932877845124657734972227364555064397389362351576502278421404820020864599200105754484870573977081104964495143492765778547806211857791417706862075284734942072326549837743319434070040390485123739149044711344589707430893703049272578741316366254155857652335756991701079911608784207316391399806077379153697629395179017703566064808259778105756194986815067748289473087899546253235467856800905481620131168447287632473235110308393550160521281402603391479742168887134636173440867679548025725800225396097582523751371983602947213509722257666868565886943338602938023337170592078788224289959835974967474058444713052380790395391723443564806510479960317333942542053924981295265513270817411034555602841650078931672529736221446088126805329456544734100476012868430545189228045730611839749459633139142759255783955948836218520691989381670022271291107419354045378114443249082935043567608416896263183886900823842298622210284073711166975098920341080120617088857511339404839434567608415600374603201000119842409419190086871979563886185071577691977825515370765259370924185648654325006194296450638348683919827827046952965593180909746103236585827086447287452707196061429242266660161980731077983265707459350493872398304629799397057392502817233538699483021047709181079769916775124889492737453772092669537192650609884918327486575982495921193538284140001454187896050682809452793786520930017787428202895286762031179802573744635821307766286088340803486014702090864541909598471313159592457936566137840988102213300129729925376339890226312783852255178550714478246609103114065468686577059637475208999861872969155664140333036836214065616320599341550762533417400459697420398215874122145744912247454291467574960532289294096628972091666412929413404907218548513625421553406260449394150354779548208461643329738501929681868719717537996444346858259701741603939500486117458779710199559483302695179654754613548429433443393479582134421597858672151969529211331159041942173517123340032061834652810403859190761968762075289563416043295171672953239948519540694840978591068278447430728758164121372100841481186776420796019554865026530466034293597431700638569812675156033641835021742142459255930048285666444944507377101415109089063278278227029951580632159211803573183913195880913892701793318319314977054822306906759814239461978215899159012464765135088088861785545258098780302262714191259025847529497923264341941463043370396025366128471204154701758310832194809300456345409859156141740922786359096674292487241911372165713793670628462998651223423901616295337639727467907264328677680032018530062562928007506080829536491054428290596095900944572734493826430512010646803033749939198806965903699446214470217513173352466137574264523565943062534649177978080364624804670662846044227869084573760420931117699043971416718301384491248573495796913135820938412183246170007322048412558331761350420888279434353591716031401117806620063219961862047136936351096410887899690115066346680554171571256623374974863489215228053830719784174027247805046113271762046678480883097653295495238908594314159815338566680669088547759949674989912253606673955260585885307412339760567646260018453512149591221497535002460432542296203758327975413073027189237201996715484968289874161083418113657410825696609368861758512270550596532910603315968348798319836399515291819649048652677864421068446195387699907559150014504025964831307071444977658392789314212560297804660605075279874448788489845017100658903418078234894472769465955390167509148973188683878707358597395184739771394779962556218729334190586686534639757826313870777227213998312105911558892167887253029635783034536087524752568727276358299040894221073843732161263321736421967027013115205096729379825631390935343422014698236297616350493232672183376811135379575861778649512979628865381746106027365903226602873571183187785720566098604033568741314909029719448654362187445602920588211416625880142894968981791895719786494143083314029239353528665905707763727783762076600364378070772350817071595076031425056475483006373169681218048926930108078385117767387509011761334163390213538977332679901021711172057189287398603419309124828340616097540574871887259344500815351928279483019500387402767029915271612928733519215133989774346016464511876254714943460304489731109025326588375153688619653892548356440954630727594098578775156355655383920631470583370887393767039830491690767068538709145128344848023828993399977335793248306403866200249443979474619498087822582988855451804365117002518574400990210514741751640854088976128172167349047786214071721494777646456946506589227393881595331254521205897227429333245849681816090483569632463245950693286181002863292093798042323183479686267852138932957541447360331305953377347603269716859572654978922782077880862955392761061306305780800081593243980275864684825128632994552333803907000050267366974940902653169688358500835082294010681543435822764073912532715037756638393480470921920169282436083608587396307048394600109699823545559446453707510619246524749758902536513678159682589087430828331778220004153142786634069593512118796345443929724039874656240777666143603914570828151753984565851234550345973564310594291110707928399067338209474175232901491817372068601582054373545239470223881858697513866189919871050343019095155305147159542881056712814826299278475212022914836730333915205102949070803337682550408285333881771879136742703033949221639126067572584261312741913930959434119593803557078508510482642599731005570724337356683883903844397619930373974240304258166022582044707559379895810537682700625636587006204768699810970824345311783772646670239176259738238800676314142857658530015713053688891635646750659610046677924893909765353152493286475255108716551376553426162648284665267409406541272219222348895848289893549454052461319970924129380970897452269983640195576800013808212106742788818160579477319310992253939476402254914899510119439833206640094242574819663827142694682866439950839130735760427502732847149172887036758469810323413854377227875526135554680772752805193738337676617354484723789922067220600338580912916246108825547832751481077797261769828540134308477867501528016822602033322768330190165811809280460622079278794527884136047835575732122602029141102361441261369029686978569274574850880702532588251803598569943492361992180407781282279210715796941434610155140278525820995680191029150827568157315257874111562161722432866840283860945061064868077903197853812692226733887724790329753177506161412955140080301715072627271296618914245474913162313911220873276159665905320782235483917492332276064207978174686401824977215624511192508868171258998938469986790736339075798059311444543464034232623468330861824270142150873754113108191477481865442575879711359463300203458400899206032228374053043376386788958391848091353160462190213625829598295237373931439584304428462413222083141130125928337770157295021924244941529831078096279860907975318549253316284989681394451877649706270831690180039860960273162562176194806694476709549350781685300864792857910212893521480958605058105041242228507436123990703563006443142254773509290207914528683871779045226830107272088654445028320285421632574573770246744011255859424368090927535373534250302928840752873083197075592190139099827414000398879479162429123392780303143944175939594600112268802034719255017547874224377644439697536829334377541293514423587451735228974835361434659543838519602605502999095226508854849929630765996966197928232306948139764723933911243960674316920741131514505895548704484860492274413674767841370382371262250473979726168464358624122535961490681901671597513755042935634466026301602390208913318928479149033546895761523512612562372722263698283317275290797147089662713564842722654871744871413492548007560318079171952106924154770439572947348516514622788698660235659349481261523266031880373312561125431446206344393960508967175520922165984461857574042018683388868378040354607201791898973274641667206736653187971592095439132604707721254831939268347020234001674515795129002811677124845962764010239747018756076362472719138102363294425514264850759314063613026681399474654757207526141587031872912940719836410757842915678647401756537242322268000591446266181564126107382246110844489461506232200293244731431409449367380077123344549687985193949595151920964804907917896988707655901657868559170332036816149445789091830279115479994814572010482905658812971738549196226164060114101692547329174552483960268842996445611264434295785633743585149673868505622232516013847934207319207856718111026134329023430575154929181805331009816673182281046943799538816200046442509756854268020388749115765459887533978693792366199357636721598809514021855678778246650660968456973711723168431475908315424461893996403270567530034694009754228206592126175141661376995558305322994502708792754444642943107251918376500619255669366102474137275327266739848427891897329479515107552935212892283113212391968934528188007531985843799698194414446611891835500566665892453340493164008109671135347145706911814030218082595512308856299501122919319382415428725577396773605131660191032138444693408593072979970078615399645784024266341047920248374373577846701924185930246853958751705963851636194093524805674749609728922769581956343949546300211098330563851786254579202863412165040830818968848093255425698541960282598206260226186816821810527055066150924157364245979936206803097169763882269845034501273588432369152260988807324587257317982633284720311641330866898666103245769563788673705185360858698136121639222131644389409640851515188451209279902427359388385805939980956996207073684983605769900855341643370785151682382964704730084887480372271564058570372831540140205660478863425686802728536167868731199245772662256737373895984307272006664152581108337890473911171098470559517630824520822268585283129808141775163015587760355338023195184461932499761549121386635817004551198222801638534378541899752491410151088829964325146700401859567945634728676384001374130423273746700403526562215941862480475683003382096002278996815642810001355222489856258734638165891428748811314571721045517767808350107714747982952855531566536151230153440665601738918791912341952428897608402770241238582371541395109309001117337987384809611877087345213554715643699143472458125226685500311394491285051836382884433970112016443751952917211866486034885214305263213772502420352104990775606420859871444986051660298091244541295029342392972456484392867456331679264314558168183399102563715023519310446873132650504011280784081204490068442510768330565494587661678376978092377143392727834778810443780793004263572644110037274946599776336086063037416950322766414882218740561416826101927655138074935462162301701073989718659133110095721411389589498477402566326025300338067636035999237437185280002689975933996468815133519223560660760443072577548981405239556362436661955426469038049890291508567625608458165155667479898096982907173015538408641330797598987853899783447180164982014388715340533150441377986977694344576955289712897358994439761859203042877389976226408035516129568110464990175984106571228489632640010100215677045717465944058018032137765729881825660753463655174135976369117733491900480412000268363583384836833643364501334529496376966258296808001227338968610533338282377757680003315425125743685531505467147644828124072730288091361848848640808431270982749120693657433016967273971652403793449206204072597623058640499635848861036367483380188906939221616982527011168764944724883282132912661286880883239835259684818582680135166634633438237218843363112441102318029084734444308946330079878020506371015085222847855814483175950087002506364596210069847916130212850300590824157346062408285530001328766333820472136885468163777389849068810077772706201693412901447043041532013015079929669045096317442721636689713423770375138256297632350926310866350176935046774964345324652509170788601342927916653271425528683325306736331609773810882063360593720508102005767604292899163930822098947745871411130079005454414621176301029753228187110802773510690987712682247038839724167823643305156855072293192847280616285277616598451252340850804833919949929758112689303233369093869266835068663708695424499978089645693481678928889627638988316645490032138678167781302685013213238517666658583115649030022985708517404352464687841778001944193044363259735523536985954513658190452574203419373901338090641915537633588689870693435735342146723060930295760867438081557921256242105639755658616934819471160776172229847455456664455368081799761455328246618074482437990358073099493881697819209059455746173301558647819991905216611806609193323697567584103469554342468829945707247296378058013337724751345035993642026268499668121076242208084942762958636409167423455301595993447771985147826705584266718335821008717018355313625215485794597844244002261990623361786469608981784381969867573190581166214117187463511300585648990968192982986846476195291525720177757990557546604248429947138407680908480902354801376311657551500993996010023600484472730819709676051977026387953134602748367718772853691055604575874680181206062013261469522356906184779035945108144500803313024337294361995951616086716168533604130985443782104021309583642599658604754294125611231375436322221516363217774043968853901076392953419466744841698017814055699229532110147988081949569819795359211751059836004982316570006857800938150185669467134436576624075495138278068387787780203960877519090556622320387654434790222477808101764216768799733953499066605048695813067881302633523902182220913701446124815462550101112568825404828401864322361355269439929945068114313482213636751132573623254516609250669315975124457784718899440248671040876807552761263116359593035177098510872384072514275738878138655817982232037080577796025387576363301274402970833709870106114850425999703790908450612318601054814473764737370346442626779296884727728570349561260381244241945583060827454503686217983465478230725482470065306803297098373231607928352463350417804805513570250169974367683491174628182069281121541382582187594338203835484785055177989638429562134995341501096249270191635113244714652961252718399949362524678493924492282233399152699946417897166924490982540129649472911611006698506654170204209401543502123331552846174375165636042086192426374771144818559717347778489968252293716423703009997390375662659103461593109406659344784069787420677613342040044561345899389745640318253021638099518076587457615709672673474787478332721235072497203959434889172935848009553206737961302761867052352988444915801661906380551331326748522020198440782041522272359385101548143518061428702068364231042043134209679138202910246440890561488491965844906355742959882717799951682090005954832998952845285768880872855103205760636251224580375489507247007561328573621347293608451820899484444228885855085355988715877501386363599873590945871149785399165119686706452896139318576045843529835215447738737366977801085706796386794846255492102438660873562516076502728332181646576629666983707255894916884633220625893347946493026223283005401744435205239771020462927446800298195853614760006951433610976228774085618498994469616972811458025230323466223673867612963066100708748886702659254672882056350125040975834374433097760951031883955282266392008917830908030854374747117757798729505232389923907224226296109678540303175739235466846521261370735359793617541193480869846417483177514865120545492887596856038179741924712135846408790041630613582337587309571554766395731789010710454349108746653916629702890972901736583736148928292991698452562433185224064783184057245551520899715909150946345740696081133598859606600348984263608139575943605194261863700311993244673664974981876337340379059508723140784087655878510457752229173057363151811168045054986236025678014263712874632244480762386325667936694009624236567768667371361384861181702347443789670216293480603189730125840309867968962002753965884104999013741655013196649295613279665681852106668604091136400324837907892959720962846720572897540803812122764984579787320524187894383802991043266508970930991166698037935409008385679924294218292245190180346459020475260380691145969719216637388201029860271839451275083406099979041209263020227640986561116739188729975707570304275662216293000961336092487158577387039554004418108576820859118860518505417575576939397051213691910479657163569879966378304679659468696915783304352343044303256464989713192803364547919311744881256705368482093095565396094315884956216541561629001270552432030022027109577653687551170679036621127092942863677080118414783783829511159368930247297231907371721625250888142016925738405835633479494990553728465566711640760503028777834786462378148989029664638845342306703825254283506777661946580329805728410433465554345108871313623361209488458029557025852017661728980013286397403039442321595103188280836411499110037793837001065425055363737296088960246325735830613007268498064603706642839990520109996994874318260407324540180305278915695392711926015930409604237489997392228642056504054201345087692997382769203365287547937606718456982544680990669643784846800280062225525858738666235976591782867677843356062261486367781428340637492825122010956321057457489194330695274672810643690922040889693932335919957649253031135037123814736277875059048166641004058009436743605490331523809989147752883978156319022631752275995848759869886774732710674634683457842482607086619601434561635586920432464515898268201635331992734727615530486183733426429853347993936086926126646371917406578936918521550248530319368591376956066984414726953072228265718470935702818657656061813238388188940976935602332651240304154546881404028279560770483320697387891050241622929903765215606199297213318415190962983078361567256876271718630670794052732435980687441416065823486072838777918646197361261115233765158549609796042098658650664182871914307609307583633349613981008538356676501853609564701989175503597678839566727473123372075191607005099283869002446287459037077181977181458613264273134635899622022472912846944610165321778973310125689666193263813763888429444082698346511719990647185283410271251691347960721143898149847822493545108340048068755948366390515987417170574663672480589771400163120174572160514529032161929218235337042316523915712950288504634566764701744414945409143018422254897784363948478063580527435571406939632337644955603593168893733522592703049964354663060530358927937071738804475392982562023967521001168180586474463998081984643590729484435283918630624885095867735361442906904886284252836415223385366464034847144019644638194188725590812715012904815819690864285217326970989260736406170090037002963177627679810610047409323145112021996813627846209617731115898043788829802068404366872037609342314212609127543259088486322759140009661981276531579941042753798538793250626792303348747902829994252478916976287100655449403676084322984263073807157507013649902248078810277275738360665527782635871249379333587003397810080313409017251107878219198183355614777128685709675628250417540853574868610989362242863130139923971527869964962196044393404718327408247554729967622216845059793168614758338896601646906866115227398438717268825971128485625361308522961019768175664677328396180337685170221298854247346932600420248304805983662683664660064498112960905070555752950961767103961236788713564262261798002374661415852495164845101263560780387363258631581284442737402584450870464222955637346699360973540931469431710690447474074278617198298957058333508934757798379312918418188516016256176615148278065533807078740845796138194776783666076182520920889550899188156235207183096794702657954202251102441056590193671582404128674859846283511846564522198983694474417427621683353316522898984356219064659724157718552304119881262743661253549611785258755707199888190135641001707830643913928156244713328840313065517347804504949042196674658693472856795523820276331387966006449338833739952445032838074355805360586577010223912093083500434784222184940045060787667154249183251998529731991734921897226451035489072579595665879359039085333247426376537986713275858591908902233785322624296737591995729582141226515630315652345845646145289046119282393544299927142211893829200693880800323479576429795807824448703581371700833306629755685715212126663352332633130573340816778808307942335633743744402093662298012143775307164858519675152933011068784066781148928386649707210685091909815229618385341896508739734421775256376447406574143193414360127385396282311970861296747946015724687899842221051644902849740192318176847072911766735491967299783149620888339599129713511561672944083285869997744114803155864762562470626790455639971034540501876759257869288031180345091080027626770490440012675987249844307458797281697780693966922376572578781130213687714983611972568155789244692804679186811448499616326976064338910884336963611932729748845643738295222997835081678174251558913338589828241302488750296642219973926158909012271720016263846684963883456397444238413275245966371218222613445438093991649206627490175875787400578049252007341446947560758935316928740899166600286652123552476800484076909247867346935593358848137199778136710567330577320427356451089282304437909236318017632776625106186267896137688092617004856641564113019374341862421131866002256679780642011282800791394211315632789859351091345988309308407328636072693417301539551827092877456534616346624520780104205131222619116214866500527875139621330539006151529075425299382974001982919017980575369739664647504309968840112884002444189801576925999676795971822891174888279137102331032800988709975876413635848209729350702679333536790103576593606622451001366503890241762692796791743108214108585752949823175301226961367386269284335100901829559841519958669140127790722530785542475353858383890641277728138397311958010358610587180030657459770118917698470073107786622187770682845963033753914069285776355516989723870261825368519999908888476501568681732410115482588961148913538635591831895666436667222729317888907922407932054298756776992074193665325992815129667810565339876245396721602123894324967109372176746200334131697181276722690839212828805851290540450358473451676275799932154669396546729786595161120292558309634716712899667806944994628307398819347115667658599816704734941858644072100446910616009505155389701338675186444275168168802847933789454158675162713707532772800203285708826034570106829258579716001712871681565826894747691303147805829326849641259134139139210035004828812884034170940700078270999422082201248568050389003321846182482463232821766155802786482575383675979060419892496110003536151397079815926285023809144023713196538243054304415838610130208482879649446535440216713560441728068699957248993899297210083503783828378864396901225560354654758882332600255027041492798062872472123826347934762728541108612813474244734571301612144101959898683718445859018965758193325029258218775483501585779706373170770080856754518320672490349491764887489801909962223836045655793119733961491646139527849049364184868458652551284553011676100356679840016160500037201797427891454473205261991216429902392305449812943483341279817350925973936712251376426231071236262171464182980914059729956356691789842874052004589701584816298478728296545459954244350167349713004650795801848376531919913144284292422360288338884276967175485571351589509888941833912038794587841972198141510864425755551943337420531259882160236968511036912263792295645975740846281336379231608557990455346453159958767698531943942673791989326440125057551440562917947207108389165525185864730165651896992182749719241846059659249002163640390628415364747841270246728101326801346536064878275671420656456041592499647212454194202095522724112079897813144903182859837552919907473037876011643331977111536500485540849454124820308162241591255752717270689057822195922204606458841559075803820375951493057495227687161726450230728326229308070808030276536223359769204023824203222776675699594310138513054153788442818257612690036401723092733347740669844881102864531755747054662785710383881656643100687152581593966854601587400919226611894926948940661137421102025730522485496787484790774636182698365781738531268491666126452445866396592699036591095415577158621060643014671989509947435952370571268842674024388271603808607728199492227233886832532648105495703138473214735844487564621263134339935465987204773051925401229592478872098739159120218144385961410527803244403634993917601521844483364864359221138581513124934151553060694346466537027916334160402147382545021830345782583599978014748938543709493823972598790188662020755860833977599307918413448812197574549876804385349170181180054589230748496172698472395354723375368817256681154270195923148991968804288515775821288256198457581097541026127433692730250071013365058377289009212087618962002885052683668341042431806538911726209859288693914077329961996702189641588582602026207986526474180618754767020897685367857668515226604850918172199134810419233737092556066096847281266078480134523465364958482060501002748486933625595146119025520351080533434375243307318522621432393558703518408100434585275459702393004331439019624644931989662817205963896432521923731198822723089106286050609438038269175815403733695865243080248150401078221505368010133958511319417383184351115930678282983510522932922538903474226116671953076008987854643584067771945053646966465099418050461129553212028005843707481094426784856127650599105591919873404389012217688270748969969186492044956105615762324170203860232001183240206901215770361802319223307236520199153200047487647796723520798343457148937223736051686758922515241904098270054018389504117912987462030876405519531396115694425450636823917676020274464020050666092734393486268055335167359398238643135200641614478826010274325761091181345309730383924507990965388513598751547207152286951138532619157759504176848774763846026410393625185032419315582940262724589482653356478944656055533640824778937780692526443224345241229373832330358878547070888101293655918851440377835990123541939464460590243155586225380365135111094645961003643117951378793204955898769182077964111239415513045991892976603838751794540396834748412909651234911583548057109390481905025263605658920928124560920228506046356662058287205139852321230367003010343900454173735924549340208070395364412113561621844596964905144062414369357513432426311370184141522487886070464963613250444190976295328002818911613173544123109634295517143792878688093613011790205630755185811656607658065324772672402997573341491584319400713496285804753086651354312559353726781257469283301445415044267641368144809207631681234210835943924213597114686859798001707058488833168365078955743903736536669391509838707559799103801613083938720370922015757775105657670607487093073894259564456745477061324776323646657017856769335805842987432187162594956603034358653333176579193768190949708159167442162852272960321597445276724958134317065473045614230992519032556574402041729753188926483777742593489810999148957588351636693582688530418009558926293900000275789179975934809820199689362294497730229656964273716727713157756208339541096304510898522307689022606858990462159739441290305654746933601763467026754343080404714052803973662998232772963979236897609125039163768538469474672935089406118064287442554157358116031022603370164938840621206259339434065869554686306551592504412961798632922645535504526154430378300904455908044370252231252677102957001130880088090964759677121595815481958638099167554056743988974604783241540210397924628853583240298415569904347570753733093635163758599378296241370068762816008920624614983618875900213715349444236629159439049410026654337334710599847813808362636715772432324437474751667989158188950183686290799715812587822570008360346517075791932914896320892815903388926318054209455531503237290464564597023588574014246895102298639558229515599361257025150458294087845719623222805516326272524692227415350534879967559541139635561417066478696228851611715055040591541752822389143672830569820813143025270122846280786815089440527904292443516859831882821548581197726265354971266105592805588411927242412614450557715055794896567794631454670705557700637085157624381660875372247727375831926204197658508077105944810260569927784033552568883543053071515226759105041134763755496688610553676604660492982826549685174251258785864101636983938721456862902793296735167669709164932340649652189339262119789122071687997115660426304262425301705419348149725151098070094627050366816868731977570012876467391773304303669782211761796301308096139406405770865052349011033028456106921437394206314253677818688785289756820065127764081508208216501191688531683623845544789242030243612094503511874221230610595100305051963147505619422662529096308286296160049315433361707606394719675567052854254969435905813501050176197231673392831837205908681899446175761150026361614228422060405626140125234945362485157785629869720086575180225158845507470710795129862031192685352477785487615251607114448732411302711438465691539122869400372706021539495318791570618036619429366225311769384666743653942785448687929270090501234993800884511062898570762710575425835886689284898094084764266721041808967340576218953529374279070730682716396508130785971774378092132775396826990684801023864718773323679082280122962131065048041039953369365037840420310819873297664263847494083504481579374172947620380400968482343231601644761954700239551337287982830438612580756798840938804923563132595148869129463708885347552602700454025042614838809459025780895948600730431160630568463406769093514276991810494165773676654267423943615268272224370153549631677507624426532919688904157477961236967516108278681833502023086430961163556670745968271051557675748889779364806819389271484004924875625214242422826050213108708603725956696813079869441300411482802712614170738445315958164670610367813819494252871911047519445788005674460169639321286128506335228883735518730380671616122467605801997592909633301030870536603688991411181802479204876448000653977457695649810897683805094499577316259858525342944136476749643404942009767315187353284289270173380935922607805753874161614268918350124931509548179939112235845215238338762709638213211414646379062523109523661402323244222812797227458093054443669033439034105748086162526597856370245892328207201459629544843907276454425039522612686273033287409189873680703852419715918977389560268244442361754779086889951751449674064939350096506407013039030830527211489845315465442027427114436314783066720815487575806718453070481658986223859212190459963175963551947686538334575369126530217506924062002811139366973645805261094319544689498632355916367393338972118439535322956306951774177598596433344575880104781403713296005453330299200400167486288505224966901388047088739549324155302882866348635968931384573528312466634511480783975924338956312973881425769856827434407682773711963096659302489923738799980174796002760878822505953003783792508112517886565743230913029104313446846699822056933196397073905857854107740376642856968526689507029439963785961238685845488690524022617967290309222871392016385130343574640988563534362977504367596835707001825030053350057376230327795559338395999473631773304845135182710056487387033028257125291062292973656881809627173212707444624712697342263264571131575530953822979331322137561030185795675541433333950807924603196964940615761629593268081017302291502040760728800618111488940476201029731705451046543192649940164039165707616147804398773560173862017757132281953971704410968787421091209248307263225022456128440334223182705507559746847114641957489909354886104420211851250967877589845409247112407348394433284380849973939083378013854875366497471772599467713692452884757047699940485791361642392877803267642788564775281657635599934809215244164330608264525634550850374935886889246229032570106051774330998470014310634008872262672891646907096013668713895991841338935932380244882405002974319204383203307206973605503159478075814112935470150073335090167693659297398486173248161312327006553723216907672023104511041328982884026361905877286891965783114532265992446663356084860728588975902443308896714721703320714221447737029973619571133133266662442233449896802233552136210250902872491625217769374242149135211500222142205352485569589858079175267471407838599136050061337249258861925073664177419518789384711971344889057096506865028564736927599722396128168247401988154609540126856190416548621526199272454670549562829721035871397815144642087101566273917482950781899661917095606877488314696485696950482707502257665805153404181566818701772002267212777155047733854468148572537177057300356038968951850127615791003567298013126518385297460193871799236441622190977699314947513889254506775113310106632206132894049021967778755869336902942953035291923310854004519575752018049777121800797543474898406836572850853999983553019363370673182287582105320379762725622668848302232551002164844391455200466325788398799771186144619895994564239142469824916070384900681606620656376803442481904906393014696171056723579808076578295957288606069472050810459978670954579282427477048568254115246761939538142070177832738699518448321529609598388790095576119897875300243644174985318373685035601628558622629195025611365160651041372009327306134795392155105440813358288267114673004645532870639135588103932473614890878752064761476954078585412913332769989585961532252993483184202635828064788633006594309714478697556942615526724823278943994547257037351437605244029511666545831910009350543882571547180860565366227006836654175681096695791186374197388550088711137548767381711860870310743078560008352079304139645960251873901765614878096681865723927576326805131915035920566346322524811460539480103912976931507615421594593499673444328728782657579648368475055241492841722056997898086502430541520924598202035424708353306102592461489405151148502877585794373203542494980212095280820750925433238777074538892505767517179584118392191124844002208131869187363328429185531739005697460755385903971126314837148691211283792426296532932069895767006561331965563390288870487574726208145696613903487205146012045016248633007073867080727927717425846959023092102289748570245270052169652815029456523828142730965657599321145449236093797348547634618841592937403217463451087433740688604402173215489469083985291633568813493750938199118126232368872585449732663323750572821404998311511999369408898528268651471606051316656748417135414613770836440723133391321657289009417835851573172185067683380978723912162333737672447404244839877067676181249418567931438679725082472965506102053687168558836691013156302887945888897114384484867746386232124217590620471522452405968760851109278714625122624119933095092318929544839895356930327815545374423169142924995558865872797275014269469759458262739951395656597230049745904542271896026567058254586403452652536213107715798401044610784903186442581585784192393108055444488537255334351795733712871247300082694036544974307983069642055214936315519605648409956675360704138991685485438982218129732516402238009296609132119554925512170491014434007409444642397810087506796230047755551911883779965617191660631684676274510178002543352464730719782494947142447931174414612983686349412918598054319795523189066777401501123568733498525032251256148424911640708764427758158043572269277877151364404269545533558250587531251183036554411000967848131446514700438314297458420931575563995193495959407716646186541633877516264251734127861120179985472785708213366382300362383492289435279846593003157824286797344604661651276025251415276667598121536115415694621661267815851151128374356906758757809624909984172712283971536050838565154749284770175540031162288620994714073993020623794312060643084442527293565908638109635538688457982676667399513674654960758900297165775748613308889863158041881440110042045431837327825159534285368697518966809847350921552837479403041071979763712621507160610145048836553039957178285085332611358249918773850488223049592426920000718235318759517686105432321652686074035383920974942467907533381350332508289323843281543654329044669390392037843299131898972173253628123827531068898878419024627179343875541268359904414792400376289950660174207965320832899353909267636915620673331426117619503523233954732685563088239416498438667871385969374229928214935769697953352435916450863261775318215089541580184490795372246842560347385841473768183396946032177178768036034161997335636985996575724685477702510501310245748503680667675111716335184220835284478566853715706935252224846084055879154778002146284420140036979095425286443603780537544615601957052574942299013057786512441032290081029038705644778297683209049029929944158579226767275805145385885450509922750149446704052164382658692626708765278948502020240450265990581206143535772414849493707805940294437968652341766126055262791703795880511226389636822816223411015390846750617633091900286315446017548726151451258965721314424582663807295774604639620451388205407662873030450225433054139681392521797088900793237072387650604238230283140055350764103843955519677698362535841227388820887682086545456105407006946425601181632268698642152015840454534015148402980523289105942666117267535683921421574008255609017767935488115152589133464567815290390847961372497301010618842491386943499837887408807881846229959773248642238993749004494523843617989490765087883239019645967928723892047778632789829340719646722107736579418562686175867255890111735371937445499686599609846184750720503919722885152567023439222334567002435932765599347262001649380598788975095795999311910944993513633234360762637652151660247401785855763105483912633698895135075189665079268447292727616970679105692991552923095678828092555956740528403832468546623113090689426102015884099400055641137058104877207830504524826453768238243843206498593714556025278024631272859115100940891188241773707863132544353288712180983718381448498826647053763972905648115362423482122506944052553986101321446717347417769428594320930692987526931879104621254487275464748861954872788729684066194809606589818801038829071805118212102369375993899165476500912767467869953214333511172814839031129228051913186402931073095117941271609703968157587824602801566641578361937810968872406928400643705265915801323020674348292632186855385314556244156595786850030554351111164979463742872448778979068845586095337760647015958994607025193133986635075462038587498352962707745035577524194162898597870468601615299696766835009601960769591299589787035647081909640331226922499923207376735728104225731492256718560055748267683968877726689957912252965648961463632525749046869767702740796879227180000782366883285100470644187647186151918110955308994187635043268623355065193458304853811631280979823640720022719583958157789750290916601800780647243012226792255217838846416316794901535861086053815561524186050457063627894684720550691802888111101018514403301491305709850328462420389531514636162789895268838621850184112490246916785574939112674761402670689508134866587761627941738888561891269078473914988571200322839937781500806693748314885047178120851260457589180770449781636957902315198332006664686645164729616931357587821313947931192199475393391207516819536886036114484006330661703138238560992740643502794210326264699782216297444667051762357340869403359089107558119689433611001273177671833312582653713365010550600816194782454203352935913090410032967932144443047989318591101759288039407694091823416561355807867254481834389389294474763314136771367954109888173676591773267119439331313001278845055595519182677558225822849838714423660040126079082592991430043665953165528907976083008052383106095311841807246795526002769209468039235694751286991516559448911107802418227274001360997503117339186194376782718584100870906123137873189324387375012673581016690176172018297190479731272463492311002876539333693622330509404292298758758107737830046368379424292234230493276809454759644664551564153182151565274907149596357818389453202894191359057831359997531772001149890778913936630449289188032743531428939661569692267656952558720692596579785614656510528230080103749537532441774830557185696657205457591125284714685602822707337325182154831183169535223011647746799232515539610833786883636199623255935812113256219511242424858578961581023464894291458847035814809608048141857788223304741352993228591427623652852372243230089824827498817912121466799114489811056212995937321930930203770397346711011466727721634612488459883722208606054327337170410553897724827438374560652709814633608456932509035964092713078512473822293467160295483303191694761512579056802198692168267553372296909236107067989405098342218725483871145908176523164396734121095094149893075402134593655356001842708626378717522413726732603914806847537862412662608879519471228632308309307294868902631813253297017363298794140395687525461587852910812902799411535774484453421327301451475364091356447006590493878399417295362219921660013942660377624254689661127861548238502957820820794437671847795434768498312388374711456753542569912676413466738507701201994812460702559965160823789671185559030561815103986079969596479620761798429182539923248340740010513907112908525023075929427744258417172985898078922554251438388441179015627796248167852088791863691384242217359915211685336699285313262719751654479711563665835204288697216534324687974301955942582877217066048863932099504022187013019963392803824026230883442269935499355807670683598531659523465369613323058742523957633595180193207701811561371289416886779253158445068608833008105055518370242759599618652558047649390768385353459152316693879308830994015855042570456351724725744725062087959408862199654168420754728540369521336419087820471557159869793804978397539116999563845069318180988554488205318717635690906690355946345401978737094962064983485002948872947107419183616768039199833682732248437763061647913197750166394899314096559086774241815780085328067567536113770053971307435750614298595929365015047879972225523556783649277061509681735423543443369580407199243629257691633939407550877437134780747632191135978730391507756264351186074511244854493931723961316659424346870069688890760708429485293027176604349854716804009145800861397025659881019829018146753224162267884507478016170147138455177613444024848950564348035781434019382755976708562917533425436111557215590268260596688766505255162151690886686917554266693438728849236670869094783858309882785848874075539235553045307563110866146058912586884017932221013759974832491828793562561210018239989936012149367639341080446942423786589446716345150359596300245457976602977189732180322170428029255926199527707142791042106601216148873466749056033632236750228648303754062734629857106122072555780283903582177992823463782803083705520192737373048625364484687530348783985104024028515923716407224434248615536703143806854934942055922959686432251315848250845963631521556904710060974738393445152793689932037148265421518980666716150320282317935187536755021727857633192078558939849503976931571499860525996209574184112169930509900629450660192272031537463257860038585445951701042088500432834242933687944349616988066988691101619638091515381081964661932982673387668850027144693861954638639731411580845060254540846690239138977882148250835540876053777718928142065282179411374766634810499144985173381318154725209890703802379500143510467449184346836524905079743152502225809221812365665584461854092465041741023399254214310746356646037378086454380367927382780887443943090836616918646167756431984126578637009308017150109092083148310591578339961382711168660439246018117394330704911144841043873785016536531618893812918796671690743757720774331519709392889459621164782408288240383580337221862563775444184351854093465726470463410466499283681722445967120715687312597345920375047877387906970048214837565699851926668177741209182283730276892875375054151065352885644425097727601568603002885558255248389906983748367496607079778923593063082764267596719581489161988041480584828999068360623431502247275839266100389146599320946641819359679051417771177625770872524329417892645811246396310570454905584669530672545964755711478996339300022038773544371414355990717213870900453583799420240202112035142355989588084109294463030871463866214651126645825553266437766816533544121754164018838538664188301026711593695305689140417318727999560705332497329472555044136576413326142132168327669228709566221469157589970113125231068132960815245538763358601965880855879942814429627844943475510513100810872306674053764839162252550537900897562047428443463438031532855845010395195657794794126621019526678738459575908367045520048446837565565430377622241548084229474079055604873346520293122307302163867299044516175516346584997443341123178312499310542086300441558658196380286446150616403479656701971848235631016237220787870892816056034832243897608327836348156422037571726251327949925155096417139755666735359306471917304873917330959577195197125907009513400010432471604436056729145371279431670582682309968325952099726238107273251981530652655683335236431930435530396216003919787499787197065446342849000691582430133419957598215918877208543816876849244823844823290664536720081631351427385576167088129168360371304151105218177740932149755589601731415661900080620232924697769943434384126648929040717676014945203510564487386116287208789131154141479007685408178026046822239437660369595449464450621656032080046906376819164090011378422268539966931243377717269693092493002386164341996457691648747372107048947623927621470484832093339840211493061489242503634321437192658851065035951470361371679068656316504727137712525679548379817707450174390154732080426626791133354575128664396529683869745604291291604245017180544456561907180893583873510255333610132049043389018238634700412434525119959033262991192020397957878382138816299307011389273171460127414863123868544799309340998100599871988532630645828845068365064226963041937321630783643227780037722478904811470125962664223361486250920108127651024284958497610588453420716254362466431529763809257112237385354592566266433594845335253484427174251718734802985164375913226064513241806153633797900362131794797862223597327010476765154043585413844812872734465259454950856007425832983041454103635519748839039148916838158361799388903008155998837190422205865952887277744708880786056600345612014571013505684903407563778225881042047642971189217598885787108969715243975217736757861173618300489321162148278059515058110218412923047467508264247676407717960902154647326684625044871019561014698838542825209601906280144434402967134040144329760011602697788488863243157018214740777000072330158797797451832958091401668782096082012962144165950798198383585902829715450629076780723918807369717846806299798128810500103055701730517430817026133605820168359873062035026259858327582407135845838989716653601726857927888110502545029467626228589984759199554640603514098736814242504214301177325503407154712035481817752740050289700662393634818614590360920276442220727651847438407976804955857050362686578186823738518254222927459798914276730478266541560251902364538040557731741392863049607082141767137487191886937988838106735105248000370799921933139959668062538304237317259274189692827105956933578785051019534600683050837573348764575395568050269718391900747533968215509185298573467953235057548219375247469935693280777091970127291892903727220375536420494467298053197092107917496642459379364578806880304733460895261031565521582799173830315228336335302507012812170237029283096740370170821063223646729283524588053458940131934321224832670294504292743744321152092410356899332170267796064198694571061814187027221032085373948163391491156682277291552131673521431731090860575967276057653014900489582321288779773242990313309660282723829465239477947166464625782549612252904084443061594676802739471971116441771304295360431872802212416266415029746765303030165053547608023737027926129868060956149202500032408204324600096875053229117357712992622181162632119801667893401083705251328851751021814006816119187924061068902345411953470642961197948814749604657207948662881462253960107203680091908597260809358055260092435804418334259034577732149324508675440424874678412627221460194929350356328335729658416106032315999010833819926123327527890364266879122019262478577745060808511410941576295918991186835141686680977551457836875541742291005833704460087575135263661959283316356410865964158247969528700955379115990815227267091689108115172683184572187889526122532777300987228591926078367916590816169802473282075271240807685003618558390958466708920659866330780479487940693608155544463254776301483518515536343603921386366105474533582985386216912525630513224197709307064914140503765682381121966720557309347406026694725406161892862701511624612093611571806272157415566721861154066634421612641950628743530820200564788977864871329699675861073462364565951627923566205041303553446477511877986890119004570398605230736221414640778149799206252240369264458640556220430941494002029203270173811228389626744533571025835309914565998214586318663614903149460846001085807157760850208197469128677368000927233371747816916807831740380293265948646462215866296308375789795899916333847403642651365521919671524012500254929806782319524828732319083356556843322289887289810829405895692174927428355214490659776325640155606377420130667607558969779348924847922778031419046339936350086479323666699826972959685849357981298718598789594313200478949049298071881062964628666771477026278869421337935679586120843291055836118605600493564562110195623401596959972403086313629143883658995244208832129119332141181030670396680121192091999367915002471362286357052383514353585242354758126455366712293122716003072341634078339069066403773413733414882743621030490290040233250113426143347666842386991480049591774397809616063768582625080100532809987861179941230015192746032649640868209832085566836806776292967928635985933333838394977854988964246734949145168956422079459697534501640014523925207343746253828597463244114028549625463901392141431548321837613168725808689486419235302251957585720454895337950397250283957187298804568669054685971647175058000551385720976238034617997555156692817107917261085739904274944646474633236762521836204272704077007378637289026280295904560399784625238940005661116925598678228396109505420528072004979432794645529831148236913177324975701936502852482345220869469681143019517213393939413677035584413503423400781039443726299520390443421378122941421295211740611551050372665925706755853507117655492955057659192088553696494854147329243270031401958597152899930769062528528485390374798268777149175010780986119189362939645247447432415474370893839820837584271591007530549747972701641599662725501700197554360457890489005445452654292894609580557977933513766327204857655742003346310164644351728138940866530945077833921797877407218916467102557917870959338372037374669666037754975118703879122610675989976640402016106136699802402225534510021114881308180735234211756732457639817285453873306054277266035712861013469184647859427517800267825179256547935262042865617883699292523185371096472112289932490367618426990340743084567352432699227195471785741299621378282871584978371350146171220830025510508783110468444867886091473393921883069848009867937970480836293184951011539598982030606827113862336655839682333505609330575165879571799096308788566905396523322361008725724475267099772279140124350051326997216737388980335279094235201633116578331008163228726230777124695062555822020926885776546867484648902937427507994953848224757554522331416839393685520323572430050453733091177235903851601185500320795525112214392398534701142715484097718591007686751003819956340866059299689281481574226945789037843661384881685651191374318177767795748468727471092545399839132776604117203193524140804377179892113720090313759707670181330646810407955727196378008302915314776539581396443169387868347999923389616753837432858794135003447524971354619271715863431592751431925139859267120973606453598497291194499710538282117662368610311009127550239313267257509121510327426149139506662853100961076690432514590335955149974203731959654108774521715080642208670654448578584719012395378663688963085887952291223752757254572112175868064569166633577385488153782233009401571876568323260931189354659446815661883660103356344728688094478685743943386783634615898949727361154987114985702569568357914997908218026384573109442203297943645445450517314730622760626267419649313650781197893488506103107280430296241743536911381660959382022055642921774674311881825336425943544985360908667200798221666350440390838882506322317010581697143282940958604000436717020913258662099408494039108085729278274592077430644875614665770694881542710829859636539935578113221364829091490710878147497167670810193676203224871674796660676517263153875553226786907379973427104815372678923188667408448025281532342698074179916995819776730616008760264533963560074607017608208473640590523036483718828519622047842900505167405083620176423775085284288631118252492935475718273953610676692148696088048378242427240044556716966933702778654264443853729987893168409106706332638089681340841991087293412250512801025336551145274695843199266056255282246379973795096284696224250799820705292606616359599207144620111235512834544528375756481216249600195991904683944305257998740998530282524516459333965871023811437575623313856271251624262126693230663634777804961129513321254789456050552296557542819771352692639509795795686141662307976998416229797585238478824332122527593323402923334928928080557075675679620438150471098013770806715751959578687378527324980612447334963418678143239868410058796615344037584130770816869825518882664066912587289742486259195505464002983340268967462912469036461938957541297927701374263931127714680389769204703544822503510027673597292359249751696507063283807045177390666093406713182558018362200814459350928685917725484181593541613170784844995902022943801301772814606853742743411788178450011102884247940454831297665405120381096387849091392323516133307026634628287888244931168336599690655438399759625545782972300988235282878959176437143342753371101221367938217297530427746054210648794727659283703710884490106028485328039580121408038342119619371022350573500306908178303792106104062763532942202301570188137085566126898157501838037646605553073233838484777786403587976787946014644782459401954048507479729989917139742163686501720381869693676981640264045385101215082044979246764507791454653423673559624935748284719403171846589706623234239379637551249545612619509646652262508602354677184323291220025846029425649824598003373222795797938053428946234214154741018227627168525986284528307092583068704734925304508798582023174178469439476389977013509269986500124237998871489506681425510222398978532726195728490846359429639238750153078592640558619332912171169809110413649274541639865350008725206382952816307058878872294747276903407897254742311195362285835525258440250446215215005880358465861115269226393009734594491203671346586390614243878233689836996872568083531563604426986419507229046527431572929943475563265922019696505719968857209502381245083030415889397633178976975119132717739846013931275836394792846562869372826795932275885640989735902601023923772819413800247859522500945189355312120611680990293171055111347789515965022010923886363516098186027426939025599678335366632160018393567376769287830870140474875322209411222291242693564145030135608327803386277174410755664653348561833270401688765031523794182360082429502599937582731222366688594722257969957338800220398909857699334317204634757748408196757285934578828716253494320279644246311623008191449148527511950034899703510724478518697876938584080055229179905885718102888542901125680690657937118331421003412331658505925976276097067386389553603669830919953854000019145969079254013219880069826968670320864552940926385691970839888120726279960883188743576468902271027677848790072212744992424084623752445875175487145476742771341012830660194035036068760659113610444449959447089504826732223595360456412438585454847958354275571840156504429945830042198365314389301573978014876686568044647128656108325643714810246928253840165870637276043730693091585991597688133837298805959147392150226730696993055318668336343182698119245059437194112226551240345659042741123541313470667356294925295517534557117899931756138627426478481855641055760989186093407082771308970791268108986010979939209225254597551473805206711393147678509354528621371238337627302203620850525958766989949505878948833589043126377607418505067983819919656016436330499708420077656661187035276757300589892769075910263206950532371850352861519905220398212309340643060490850745195313509936257167020352058914141875899370063784658816363519330639633494527604433726472103845956057051759614458990427263995741000191667953658085170591149029307314690575497373485253964346637493804024070921751136390065729246493181201105176536554726135689260882299550590957000392085545795246439167655965060253656396616643281861656047045079525900221138297018162660372268544129300651391067455494545971854202944521886151968605940103194391049763202600155437155134125674778487742926075005123503604890594939753079509850343459222537674870122080240221721118093405762115680194808329061538185054188307773087618043514884474386304021235249421280549829540412266245190069287035613733321440214106541899397625060215658856254323890921420291527923258321925579601407152104913289301344279468769142687136027327649427071625265374189622440439713302291454057552930091976070182544734654400548272341558883996352984682358779750051972931645891873567645494322008711057372661270883292507973677461634696018571782245820886566507492854792844087055120861324258019558240183015711303857621898323274211830333795157180056343206582337446379755481964288257616984141782890297966445056167193695519714711298895421889829496662873907365317611648027271494284571180963541696242647223211707027941446444194745246169151718829445507497581881409037174004330927761036504465679711452188708697244584523112576985468736879314256807137564284342696971311910945728310136280794119199489836396806626324706700630907329581194163202524981144610454040533195796498191304080364150149246483501490900148449142570593993199923607153075321754540388505208877134929708963309473809006336216528639976131886474404049596519063325925239542871658938010480004433567950186649669904202285993005998603014074740093101252378869359378935101561006621223012649877592004975863497450278995930339973990329579049107784698259154874596655791535419044307991133359824303425705809838985217265270279383049861485905369942329712645518301200649028177904009088549485065559506562577129472688808927902928675132896579586580528209728992723630470492285993454447057771074275110060041009108640871606234055616290767106305949027566987459391120223177029602137496951255945403760523323599483716705592448639619652176979969159035910467060800164100582650251844910400268340599469380252556207349000011656290687123201922516541730133789730247525411162312897198370489985176125237060104890938276063728736780414220002263631201492101667089184642190331371895525423803733300379351715259656469513829476875721632409163624896737174980261194019543218726157971678681402408089668980852020500581875640585904679339269926330267642189260660828326739114493535729995983129606202408738552225265311733271793746557761495311410002972836827048670493965270424956334862235076937852396042978295862314622165244401163741393508627546001589664905696821742802397476016898909298594781716075681456301681997053370626975214445873367884116853644515316727545924582700028897814532170420385423623841749009204528016121410039295204559695217377198884820142417444238143740116270926611059228894003259849263059793297785911984114994346504103290259198262550313871208029192403717828206321440551319528296305969234348624743534520909533456377030499737088871024428815627927515483221894535446695113197652275548753693464434743679252978794874077118923720214419000275810877483209324901263160594943668759350053140523468260016869902753955693073060378684546296353436287160973483051102528318939177271924165991248454054475488642350723077935813388194783501501490566607115961138605542049317248789099375619683011770595649021213227098822405995162405331464242401077487880173693764368134185747642811960271285010662517190673642110765787697111405931106771981194353939094859484871887148938905674944899419065891438258407239824515970103922420093759765707160037039197290691600115051606765259249740906463861505214474822215336834225232453615874043583758256912484954081757900603005503749728578783970028346038085328314982637010061776779398442992305201196085913450418955451785238234099495599207436927661548634804079323779742164290292995833113531547371937499571605685747177131511566578198782746152710573315713777220155246789551491074565170656068825203392632180679929930502982648924029527508844577770583177968852466708684287938235060085124165950453964173459374175662035572665836008350788238829669520393787514575643742908019387923690908342144632834956860421409401089383455587893102300688503435000923878513752540960802979457213457881070500442665890414568436087215817501518758358840724198031530017900323872836672456698545143064415371069760633791927977314233410635644880172250874274759833974382798585639978181074383586497332898886232080826803451964590660173555441059157757096854414686298832068922587886030427164272305796867222733424825527835211553315511899110098890927453546941923035232964092678320102974692491875679596372173905544382287343250520380231071143063554649615159901795933428053567640397173599726671393236762837087156421171981065862458859026819904399856148266340407988048267421433643151172050485048761980020592834289724103617537710664960651950085544543233165825495235976852335798886318646676966085077998988309223262672185001190607685882142497556044762835650920612741622162021038757589513194699440365989242534286127941248622246036814314270507326498124629441304283445467962663648674229528943940154377764375658759727337754913162603167990503755885309408309072213838133188405201718902534027277800359512428858923361384869019748331926678880579951030749765149525925082980818621190066142444572734327982764693690277011705057600497063186009412675803054525189772819094860449392162285949160143424023625491543980826381630674759266315848775459297517159791759720961942920582064645111238606875000884574406361749598398617372749449502363739935008810680633198932699250967309846306156997605868137928467811689124379805708546698173393663941751416829087567185412130986123716720782919572602048535555686466791752272155767648004176697640689415531261752442181832124060156445142570479895640540988023893182826073034364526533542567003415654496763834273542636431435457528960412628967309425245842988767917624040955982581745426641861068966426254786767345248186531418284962675588595029363817763756828069122959692245599138430758986138190933991376329495903211169244109892163538033360129142376741272806096275252996206346524746050933230304359676474262901190304617595616995822608363996618877276173575717725556618040822556467777324088249668738237366157128387237435111228172982544853976886183982130465749737328428800149063369804569058480301939166480236105490559238212838262713532427925141877184713967816320238197841754596945453730898338774674434543697568951895197024202656745923958331417862967446965494211124754145693856908756874768349756841081000844398613190970931318533825517125870852863046910002419371115969639556041162687303632802692671956386904376545948354540319468591563929060180747664437827076014775670054559128057426724779320242066073563369065547720436979985646760149969803938351367671173584641136931432281940135028612155168897504979327747032095952757109297455814190615948791722558622317042457879826095250973419051647819146828776344006068330916316891628263566322254252916181352111530711664594427639161925265667853697605277728539288580195149531035426645585134942627703972889977902333920911464580183103288061146092454639722079763821963040311408357883114099239020012450471051029653066849960560584597104224990706703128093351763523960189500326144250758193086620890773552342350146985318133768022147045943410005054128092848312870437481890995941826840448769717138156510136972330163429560386039758300767721649628592939963632554139970605603892794973618540094835977931890414715340802629376441887978940529857161196679674482277891640427430493074240751491990396275516183621578439737347803135064473910367828407599084659922379939458199294369696264801629057973567279071860742710422858601365456526648964379019927567304875249654514987183205655246807740808121020661957003261261489848708989968679329162671324150647500904689621675427924034052006703896453192315290803461737662284589683404001445094222169513791488971010331714996322774730732083134745235925502267451871513823128612286595071629586968840518229102505512432476001274941239575259253424494871745509886050873887646859433712586065533463464400205763610082663808357427741628906783245290804426315705338913203692442693942025848385474749527524081132438595600732719724137670933052982889298122386070854293348031793804123682213903339138162168695221920801114522051563235973348375271230898386131292787350336703945755311846723721123094602899777199295592352491271663435126992945795526385387895751644374591224483615191368640893344123605300837733128830041401712554666091096935967943354552329517537248041438865130771398830679627211959715818151485047423285512051202105313506897964261784563996220606185779946371051215771729659603492888063493565928700645729858482048095464088089826511906358962856045759133371712638003587523476310179101666046076325338285299322790756466561318583316068717757489009941464793416129936235850531753339843039960442374087657400509627166364971919444458015202840090799538184748511705676919267205493731393184032183460573563372274183296749346283896715851987278410840982867983976434604723575249827439248728417304003045887962825628160959393137858767617004433092183520021134446841645628884014231516412868572976324937041961966412299360062755224628424756213414345965387107341195156614769007714078256078948441961258701229528097487106997919575830301912373442012059308655660281418979737069094578749295887924790357560879328378826229353554598341870990465126760735039862780349361921534800949084504616724091447364671954377625554599605259162514231788644937342429340359981342554074137786562840636557348149771173459171061820739137282692651216072303383556808260936372234236554441950020364832416352361851020773028462767624958672946049402563097739659330391946365710258320948778541925341481824114664917526264977523236596216878399796815044046786106940715761048245134787298187421391092600324170413762536654914113901092019714942281421044371408112020337539552258462374780665663078592838041432367185017956931020793666193168624660691190799438508444381258072026183548228366709569022556277722997511531411551630466472627305993345541537697561768546275223942395334800212080870674325324531347728383384690021794627837399380271769965975430531261620564641576843760712315168607330693144770472415406885284736458985607952407490661810937474493863280324236157892097133154734460559624942332952288764400967247251264529957621044351492585965294768648230923630236497656211522961220164038753001129468866354993781796536431004711594338674467562824455730347793218863278760728706079680982688574633575480794935965835972629572365733550151377082772278928145628611346541470160092369733936998789029315814663366285730921738593955097758283398235814754959899714342192995562755486324008557563371936200654148533083171006802798351770596192165941111874943478436411682099086468959608411574230084343112401565027886334890180111181725855045657204901239029865281922726420414652099056992273558206391393984410410653291087177158765128628385368617079266795572023666604024324980446922745861900588503712184136352150682036229191152727235503016107636179673039671610009261674517126520478005784128826520495717445585897306078600841268294375991572530830947696287837800764629729037229282218060011894642907844812617891468875221184059268728214313427402554777982804628211205393766506498914682084116389119268962210010500115375023944449568848091023423100661135145058568853580671937903000753636791733552677763589232891750484947448105254958593062906844563005096394246055864182576131091333539907610603831788873216959212353191175785187678912929317409414082082979411557869078163609956833135674265393886676928950908583266874858312660082826720745258799111167624388983740248946462669307001996729005143592331232334877071358700541470773829709366035116960701600092915003969933605239249899080415480897835149871482326605676835299222911210896004125839382959861206484404827147400077284535201605466112625869843167037371904910661765320064745604526208682569385650220388248874024469238748883218909390681456319057750092117661860058244919437944034641342338711126512771126025553359590980487430835244848878274822778172300521350637501227610817795524228339924565828724019327566685917802648998829800871412102220816355585914864521789621008076911676454053966097308806489577308713310223907177590704428924713496501866214982207731250707531137556465920450373890786973447257561867934413477557170263237477028903310947819484198772691064590924531911389864365295450987984790040592809457780123537046026780486665367714850373259126424942853287122402412047030153132689741159499023086820637677554747072944676452732135051543770929492903776875792963823873223172997101800650251265017620367406640837323709928442214250650695379690720819716174332010957961314494490116103229004780740612693764122376505069801916815843015189594963841899322004466311213215270457292522654093405332132292378735683455987041122898877570201389353247743996304499445965185001886622941569346274306752226037967949016710348880093210730826675555298754060207307571457035423374465327257518986445168315964182398144622753831660339449859937233634704740971134348156269991935256740723078127936267684941366591899178482591281594486309527400998169843221968636508346408573237817373621489667895263431432051474292289817734079751665961330536799984873628192824808595922857963340663898202830533426438637031017225537447544554084512361739700259547861518101775265494452100748511165909862096976106467883228101073740719328933605762122375523165411564466367521618692775370465493918331582389400742921393053191587914154018051377149085433306339773237521141266182000270030540601223379646965422057339277316815113645718636483085537568125117480931957903613969536559180488306283799429806982318479314149290368898120556039099957673716338023297247438581277641658935398539733123982086705252426299007497503409565329805408932407710058463067173917973352586130022152038328087485295476313161287496869371426564641338638018175834060768363258086650455978087402264825146561331911419297709804139645826628916631632776138139658380157285797621642730274196810733126016701915265077758306721399002359329757635357649332662705191164391026880862675103956062570880332919448350246230698348910213638755611735095474856432471033011217990590534996578279908049844629167455799975615985415026761210074325079281589705854574019492297706281904810696124127590598572198214298976116295006827001083233590145587817683866397390962444276054306437063401735809119217341515552106445091679698194317747192995527493485025012369942575419875430054628840076829327275064537881125515930437205413481895528136246446167860566513190641614380878050600572774913422445811147094333283181069251448346203367515345602226053026238920196717922062531444935021514591528802972025876266111183564437301962025219448103939978352646672742240812575912234821639404904238976721648908485667033207530295670831744430861450596865429126121421323577620731664944610864021998742487502567244683380364923681049812055072897837376985272516173497435754514549780226131438395819002062769893511041780569230555811253914873667761650061859304462108246818205412910975951152390559189944940422793498699658872079187097719626295095914695014451042948362866784574241870060288273327856685131325797101904720031222502539751336044376833224624033865112454885180354826177244280327723799961702376841150196282986811142507649616958627147937144426107550054640333221576652730986626132685252099027280843594536435970586176087179980948043169941890580721873118655977135542826780168169285434995045070436255934984068237812807774538803113012250419049206245145017007316836320952194485478904735549480828670290115464482993366138814561810676553538160952676365180238173029335670171971806861436340858724598262802004474540412088888344376669799991131380960913882487536002366739083704830562516228373671360334306142000788376310540381483383603394308945124853919981834136446150644030652566939331365239289116774053137668833846439182017434416480851179189366730564706732138776492774681804264447364528509565049218673797115911059643236628758503893165292046532382120652396810130010091429325620229130676172799708481443867033412597997177372798144271195449611192833010219407839108944898087397585051875080082614256011481750169272192992456310989305656180992495745053087382405709408424843263609350929421242221748601082186405939838543831643145551013774659386479520939313271414448232942614606785041653051327367290178181346031753768077546889435771147129243675285457566118203767573778085379904891685294034278945507582181086603791685628283399066868119765956920584793107363434520963654583953466002448063964150009887066003573690896061663973531701413578011799876372684736827800849267397865330406034231270100254703326667001396517891398303708887788945048670519239265575008617392737728518453706347215657750436789563746309171203048286944473833038650234539379854721472552367350966676808519642394660630167749562074582414160799763821660767009365949607825333702900944375165225287723133108340781953669027157998757810139595580011317927419559710053761459050604798285073883709658749549969223325304897336470838021792988263802320977489118228399003888851147219452175729292521988889519005962384557575795162060938248637960105316395749034461213399138280325979311045006704424418934246786869140639578914687286571355644916455696023562846877792331129367724714451054829669447196944546570274554807593252404899702491849864676285742616184574332869553058556761850825225032433899788096977379087003176799585153944717126014284121442501277674986876699898683126461264362607812525315392858599324160134044468296978279310295299738723955518753113249179764722894632426956169014090673719474335526219589153813167114410490549514458951247648566027891165683335506751460189924915263547355258206354930534222146765873549975440956552455853685745252883512566198502752100073152781370929821399851208153637278531432700791517459872814184685228371815793146093032655733462238318613776275476674846557782937800091866832692511351214940138912528100938614725810094055092017642657558366952236044681914401371871919421403360011382556673225320697710160895298113213024495314458259448361516866849157723581849692429702418430565931430428212692710376435219590602311993293827355163306458707645170323493328362946038811255057529787945355071492206054649006254395145962721169072824039098454962119455032348989648457885990382486458168732164092132735898270674304433867477664828529586431054520159302465789210708465224568300131643088077239611869314346165707650992444783516772017875183839502989073289858109680652131448029445736367042977735265093669925218118868611503096016062333515035782914878875306001829649690462215056532387123727370347442736706824610538503721724362333653957770433015740409308781187645512131390692843225757007961489548773385990518970574382611602410864556026177841014611615923535852876437037598093347008529883628366331376077454296413500379568015692632894145642893925715757631336568254957415959163894713159640615401572339053385107561271090737879089914147288793925382567358107288265966792712260440483065616281295916273998873744439144276185839946484368506591641806911709664755377463462580778934124243191144655861390880163928375378602144961337225749935875579952598067290153950045745888457443447717897477171256620453347713129604622431456385688862097917151097543808500736327251922950045305520476465325701872547943212148669858048932047360548571101081510086293062316051581743802985933392656560151427624625758272891206967275117444039587049144451620442262210855113820671611201160229960573938192617112761175420956456985801040041237797212485266984264604355030496728727904163708210582294501221346078861197588203259595269964595855254684972511638541413942119652332285372843663307408089041801439739556992745616886950480917662198840317425148082202383517280638941742376370091472283300168074857015680624983691002486829736911786978946015722753250311442022787686519696096988436631605048736399627998535292184818594780075848912198161583007543143958456689600863788309406675714098803528642764005812254757290413491580197628449752484793138690567411157374952256740462588168457795690797370941043513976730107403711275375566463137654229797122472676376154926134256826358653913005429721191468356660612030119538706056033228960567932425822569936108076180089325279463040869517590772089973233144691049627580610019532701435145365395112019009991859556747820099520380354022277099558263194477282704951831906577516517641142954859658312762469177318596915323828376784676228494927464741807408572270332665973333549502149460906851233761899205925114167625482836111152835578235415573968833299208597595337202456528811349976427690201723221675401407050910252836262348696399255673264013604143360282603734079407818431307558510359940535325609974209816063705252204757363845926702076236735350346841117547844759432990964013276635642777193244333599805354717573666657648195739683214803499496471599099666502087424289254128741996034074296923621297533097434495071748335550021549150217971022825430112454988840236337476064690291982724676577269251230678337561868902318887276407558440159304394963867186441485527140284319978085845395304922334139077070117040907963582659040688002448787851970905985112799368601135413479265174037966023689989591651662284442683330242364264864442533964435068040326202205098993527200723296122911075775031431201147475471833889549144141681857154608206903518638027018008752333029111517878871412919882060082288399558096799839106362280352231160440264284773871108559539729802379615018206587454273387120579079610999615280328567155140144229445979774252728803579181083761010752885749159478017790533793164169196092722701346999909324271352017325780464500142279882157493284755646060274355724804222558566520913540250055012062823590255184171056323832460183716605396909200189452792445702684336215888638472665795210185197942235494563156495240628551726461195477548894236577785412555617099159600352202086324623301857481535040752151533131509023395238299420821075150289009315413604141182625266230335342611802375966946056098701535954238300735306627583286913467444174102392389948824074109610424773107424342856099403184831238560149468130546621125273351942429285935018554991426953690309761926582432302405845565894986780816118035379923688187315178488433723380183187754702933603520288860228282045337902373577158134867095660886229970587954952351405705460197736030333438727339448494350042051037743676791166828324744891762067741223049316874986707702065371244760283927277551233773470867011591777504553102271976063972767648333907380387249794083787236652059350536638667278375028528024347660071190129894898807175767666236469182917807197991208395271328192731612935405630794581381595756156929909126572597141143555071330316458933950615072521679353363108121788832777848423522736646313578546963349056839603960007134525456870438767511201673154853933644841338326260425716292409225200978997432440464485576865665895389747890508459612230466207293058630086099270265259419607388904351379495156102805770663219952126562084490696874208176467305766276538409098866275803555793749699440152412437725984105033835806948574094412601411978216297576472411249781645957678577804788182123657225039538670666783253366329065206535358236783256618021055654712081605675500144690946528618150773184018238034098879827453862659497540453411301448771076065370848570200298127635221902094531960568252619844442166846634934193798756448573240842773839215622517733366453374970864248759663011678464777972193540123441632403943773179855721667108568760166872380381086765555724852510652782200563924324597890366616749786927581428381707760509809913826752703832731703900312873536422384773633101901768895154146303654933642484357464281377410639483406542413681081878043901383232559079838849600004458750936963301257064920608210213214044693647709508579736360498044929085212449173544110857325494857445291865874777396537035349775512830342042492946294335977865160296433756099904585129322384763816531195303443057297376761072684526232814391595586781149984501349745753902750021798332601630289514463937374232916569151260475587632780452613070616132338286369004179077102216623491694322165565181006670666318888818538154467251378521012577911126030599389362160581898718490750173296622078223241663494068507299717759999843827147007190474795560445647368561118633406729284088794877453838782021898651432038622558038365613357267968105700277746435634125944171009232921283275692005411241132344270854315373957560035823194604075215527671516324236474897325989066266011031682465753157216722654400584630302549063459969144101500794581367684218843625596206967561141138653307196929622705056801415119273959091470698272813036658986873953406472325927727007733387062523849567628026105247716449556824545191558515900837139459467062278132222122484227815998107653314290349676066565547518381712148011783262090569166391965642546763861732567173132903048990122580572107154003305590741953731130619106385363253353439078058736334650814385548542754795063487839335604835877688692900929116225035067038521406436478733462141581170202226064192055483499327200711274262080130723714908081064284446332887084717283379163085279837022788538808389565753586815481076892560943216800827705574598970659135640455322743050795856739481306793744363458863602408549735143541959906226000705947047321429861569677739729593929926937435353517008918285055569379696455091107137112769241362549794840098516019179213126191135308893767772702044242881210012004015057305451391658682323248152180318491744267319864706485932021937471122483521356291093029354961505294206294445216777440037063967112140550911017046308722418942849593162581649100622270305953492474791933661106046455786776481259735931351779339785297337650786322380125965262200483952895299939330853311868980827819180336706688132629741484685872841813557690216211666831935321455199790298480249133211055580451449271301984247581098078586927189449585660405370591979413297278926759781222049151520098031357157408155997779914370439610717194051013375466303055806174531264245311845996858117268681026677828532510913289770556921409170994448854177765600423489130788618471559912776592769051634145271972681822476682969039577084309277847618277346096344799729095859536274535081890838661200798299264414124697292349670729616800449947735179340150510609054446461247692640328322720678605398050404774168274331280986353112500260193624306153333310807361522154126327750735943673527993043693638962266343138349672809757647140165886279563218892657159517734695871017465147434081907397100911200261671530802268736280156526336581390069810711329745178618478946550267100290296452030196123951743276540274977615709081062529353771865110784836935995901592144257588130001724125234463029307001406877295890450867946811841485901877000145665278211105634804872471363360521665759172074219090507642994020580561555666307258406077724384910317849035018410645258734622942234064963795712924330140385350675996030161888560417186061325310711916980136468062889844508737042709386047143853038031914584861084845247230950879690025523788907035287284239977338370511255897362479868103790433217872056308541936731443227264836498490107453954044828512530006906573546845080937628257044733484619848793950582930411779965886882904057107585233803388957582125061926394966286230531735026328476761879040217911279084244887176218467891945341167826683881421842843476905046764977509348597951331540303063228409909777655338023662130512853134509393853392739757803887218753486037044663282329484961944228047793722398028171424731330854208626752652202651315450017060486960947724811830073489026045940669723940256561348351811779631888182117787835288691771970922421054978064135200059542007918706187837767083185172149708615112043747522027972014735826076832594537356213930283168006458131704021494701280226578722517420318348444581048761380028167762151817691544444282744930426327721286932456858180874310416974710331969364223068174211528446994313395791873694616463127571207276770681695817624742133344146039596254755282381553599761611504250559831718533240893822325666019234979051917275008245980941572087949838467277162403025882865896353460803732562340533458182977376695801445669076702678475552824404607577255434566743988897448359218439482581119326706249458158237955804712112587295807289787537033867883930838893848492856015238359411234492399422781062844075148423590320557804392831905666172204363987860778082714484227110290357540316879832836121248926802731458776912101618881204913168005983624862076350065311204058135158624066896843755833281558357160577180731322188687002652900196712814696195038467318013915865877972754618806804167456056417791386822409850770195202964068202601377040942192179419316457968099449212336880270308684136973365080154227717879657533837085860234040763863070201693610729982769376634673853289876003339860453010492130601982427099627522808144935773731411336314686158696426176617366432397877887934313215007287601864911057517357486108515462784894211443691094489605600038979515769901392123158861502053209707690061043711021163461156357054026482964742715266794515665057809149997771218482008626000880475438032097481045248715976634534925882197487229297974225168471784661178812380192952275361984701700683418639714718635747626902409354658399702966214047630324764492490779665641290879274981655475796243176704771429105554739553790609724955717879166064774814564330318438902870326493667023366223031149285455631921851088165383266520189853501211366908169086717717592962649959449971561616251973199703394163595412967001003015632406955488888826998116735759716329232628964381957342319870203858060173908686042750226079407158782863040682948755052738812010022220494177132714603935990315088622943430775447713280231354150620379700827559090954099741771702372077271430450446290489233466400719588807519079373358325997938366403025348017866912775614243337351499975090437080545737117508135441632891751324641085954403249091206558647971018881286673472377806330310689707056621472040323543760205276858010193041444041943817195136601401652672265683139570622259630154726595913137597415239201791340273114094432514833998179164226916361766429266104157709440949052308050532702222487097463057549344868398276689362084971343823372895649279995400542565554865447708879955186846992617990552971315393492923416051803945739268999758241407864512579661670318882994672423312815765563552018761616194783880057894923501307959962844942002338763042035312972449907275035353129833045256648736387580698731829214493967968745692872307152817929588971622057656265039011018602689048165069036102055281152496366131473804368267309069973576436917615187627258171180910255572624336959120878823034085306139354031300108528150720873343545660890653985112862168090546509394562499197269764902997410288404562263121893851272723097520911286717332408842258911190137488769078559710134721057770944953884616728676379562331703993912624375535713788301748804740248975852811921017428278152282267867586889854027071738573903459893497226364614871213305469304558522324245175759905345387559789467206646275048352248787544268353576332677384671856537116547266294797576452213877834262403426173885024214069985971570472305105341530603703288361515221027160000933636520793174691898197439526498978517182059292391475047123861274383629480900607133737589813850368214750346372260675330172961416102688288057234749477223750553034670653967582891462742457281246549493918179076058627984102891085657529508984749754207084752659439886893490386152967348835662973116666049162888796465859756666886508588478314444282904631345816978247379487324150492446175940006265084016280887467392304707614219631988343906159408495323937164444368529280531531029735356986147051097567322479917058682285412426111107586536827233344228280570785187400030749494906299463107064766126143941228861735452433154690832267036358573885721958630938508619142140731239548721853595716169647965616337805138475685625826667560821991539199112333795452832283037301405166139025244146504888966051630648314522584047692430582726681907774640082772507234615227238290042149238964620577165914568639061336495231653257983574905128995830294633846019402653125132434079842093457235265760777487312508475331007881174714340414332095772080602274190050110607838802328987533954708014654038998960173363636884568695101444732789517462224804575261013795820930578772490058836847796840010658344399853704358976219482877970121746756023120549507199142981803654789266982208611191940129036926627832873271560743164703536897801581085722800238949847993591838515385091518542286559941210041570209325038153543368308454909803942508093294040874143918736043773579451896729827958456255705723404989075545555213012924222110125219134741155119162820120399170281591959772248549167403225689638899745850607156186083963911711839263282162138588428214770272063985402058178858936186334784315084134905274862791521849976525203412846801310869713930948230658881086897594088564470551924959313567444568571878751489862637580118294089690723115068200690006528424460151506508900045555639467127311725924110089380353678768458967756012722995727971832017754653638682007847708672135607333057743069870052367243314541876450386471124624210773479045675776082734909385615649316948428138300716862691292728081901913494832594104057952787422732542309479125953063431959217725943003021125758570809533827255212678765641565958645025977687735566553622022284675274158287271320268109421565654137465599395680302508809433278048856490649540081871361133752141795089327568463151546006830644389097863496680894845954303484926336145681021695526087617142020765524269892358304511474176539801771066974226080384895099137358623172060075206362909534021380395806669047930891658601111323893915994286684810224510153787809638084447741699365105773041326887560123920316311283360449478374003005535978179304522231163883669538659047974733798812463703001761625765189325186779348083156542073589340367439627854645219134194933362414954871172426249957605513642044261724183237213904503019606256052082659090078568888171413805427252673195077790989740064278124929326820916737973622938043156588509053054203295571104459641011372104218029131728019437349975111805145493391222242924581877494843291670351116684629268401654581314880477771790659557923594856607564551799985763429305949869328502847970587271650454007320611790655274046556705399697061046885344158850502490410587561246979440941040857721685345405109470433103762739475605379974360406312572831580858956614608295399470814202391779964976872242879373504311956632131982868808928160264605843717083791681826506960546217820854691332368990010803856498547482451893486184620711086059942335667258327051825549741605920726749123357010711897657260457825794341755195773113816877715193671738045872070414043654879915132065636187656209002140089950056064772403250668856466483230770994052018922501213715638290377042619753098063489151328343020681469393605242836317087367275914263217796059812857067507171663836499205776446619147990288847099488126049339816814594840415145167408150068466477107323455258500745545028594929101878083944400298202199820042360533606746828753367558464406435135461572698957708995065384405562197328163424812278208508993671732917546696063639096179062467669295547547038871368428113402352030108392050544973288507345891782836177877429064472431698916756009471809995077326146172410779496146667944693799586317179260075216563402300078687486346125007474139101422958954506003087742726572668896290543327188391333043942383134700834089837958544787468171030077718030628207497687466123592156880157258644352505114437589905760565322259954161450050046823083310781937370827056782410850289611853750732506448087402900182192894796805647767406676143657819486470994903929038514992583334497978629282413367051842283966110315375068499988845036405619698834682380806212306964478065274292612559082933099400751333814887758589875492514603292463000297654391336027556911286350572378204837795816033516252077208780882977153849550118898161222458510325914344752426541512012396995515036729054171420020187538681657556671629149899019684761088805528375221691559383185310763684535249947614817168881141131891261790724414450551117014955920877050068147225225243160124511291438521024327484275915112901130289820939793003868860381947363174225968057025999045003630607247392867492273770548410330788013607552130591518644303618074449725371164530713668840023895379692004633286977181744146920589473255734474097653564186910447236319166535888522278655824664855918837528708755422016712725710232816088111228216687909755637903000154514307820063790567427651286409024433452634983812023874525755389092687552295210596094298443919599776730417820827693366242897407170815275280028974203511262759568905045413700716950003489276570986501622812527876210071603973711256512467334238677973813007326601828983101427167702147812565674539732389331999511930181937607507437144691890536844435487612579880276947204152149258860305319795776719031428073776895848904127268159587773175519031258106743370539909491723192849569404768329026451621661923039632478757410132406833197665207112252819584247983906878023073661151249393707576618048254875719594364412319818113028328567808428135371846937538967486335453311491115878847538110796421990851321054731893158719242400976513441646196212933148602859799694713229452546725228268055697785504594477633510387488740934276615078256244934824105069408733486662574477263839959797044942604801108852035762939464525811014974888205789889149429222431679395728124569478894587589088991037109428734992449876466105170745298795591199524309671516744924591356253673423930819853745287292552584561357825416425370875316788679575369323186039623232713861319827286018335831277496948592161726635651445037193628733732788987597168639261269367274494194748213904006799848250180871424049981396228816792577066530043109807282022623419013125321819603179785510375140439676804719399545246376625132151951668225951431888777646588209555663241030968173097928019007801314795199193622240806925402107555743608584290537666176004423590540224803432865230047052130004390717497159453777717525512657933268696447816084520347043758459663102684593840643120134122967453491823693479314761298192835847965548105491483622372973673143625510390696722065746594389721166094730764503460971647762228781158497008851626617339397724067694137063700623984172265050750788836172694409896396596936339538659858032706322500646645273686605246035476131024994936618531140126213683844222699862501813466612676442381309517981330243580424302562516721296950589190702927221070579548203771046440072993102521685026637105533407533713807346849897971101962638780374867297007924987195014401685344025168730611542647917110030376201734457437785776422958390300357330731636939124991426426335888522090378564308101286914473803958018717028518363965567051222615571773937654682625221900008142898372635399310676060144537842699067394211555778975333404275327899067362782096080016691026286606480070479410574004283337793032620682548078449291959444952460438170527033113279036765300294440466665387788434968832818085262011938020861887101829018062151570917579907324102290816836908657524051726073382446204066185286485127869320590789005690773544308243759290011945306884769762221905366531761408286272025733975155147473104298800399608361196617928749761241266931873587119145702507756008944935941259528574895544523344717510978222219643957091470593262716133162245851690424082756107954627487833816266115110732486549760523238619246600862828098912711384247303132396819668300638745362062465815724932327037903995024373159346842654851741608172743959031632337611676120973179776753765249635253357235496807111516947698832413473771641265780330989742788329099630095488194367598070865112190257683622297990388276735724266006494431219274867690300683811163586856184443131754929565858508906301879274258291910622844644718056751541693875106685404419783769436931658707862542436224151882862361765122387087945837922036791085347200641443679458354371060446409290041454026665736202379870268417777589717157636869095939403269727309809914671514494485487834680957493908210499002369552460367230303097717287813846576092541990599393253030505103264666508928930857445736930719796497223947979731831042422340704058698199357578580573337942284363450726924275889173800813661141050104709559246481784344257469177502327996180435358515288887962160272973369902920835482047995969011489347776589044280190338881237635527203957797417284455760047751836692560127865038162101433934681379828259393002606846900327203176890914482024908455656355022696312411336783007957930678862785815992411873355952736801237103480121585357056911754002958558699206309845521472728435843987143940060299106183981629500011921423255806464095559237904424769805597626621840853009724416093135181969096361237641277503012909088338558442022515129993583024481293788181907246454278210233081480485076249322609560904686613534354366225230528012401285089074723678509228501486265116199559014633980035955688345973470714651715243958643089166963181504063511086072314095882896850386499649499823347258280650358973148318879347211011273759052944553038427217284005222733806618835306066749914545612874476921629504767324015751808481290790071870149829844472241009948223558765751827833494572216814006667409004019042228024683185839217283208994975099500340987839048305428024460533840164042703556390225434413226823876619267494795625166706929449603764090051058375951883365081536871173906550293894559437965607297842354254677076778743101241197796591273734012799381024765939295601723414235147633714300419499846718914123944925245928049581629464883146431434900959024930529125958578146056139221639823568973403654530536661961731740804276276515183074639669816204272372431602546909006745705949012460128133141446387034454168789410109084631268760099341228724245118761674546576045281003976647544091690046763625036728206698088156476117931743425339288850996916341808306027455951955672846226659248952350319118616901878561814937956178267777033636428107800916492363752343866930289223220496406805003468824199264014825251195764717297153079702256608016236348350003449946113374999419679907175056081376142031399284637827691835254131899020864110616327999404036586021514981620959505846363676858111468211271319622410865586380418902819613172202900422198969234579221766296971874725392965470126055282946825403949924351777659137717876515399300637871436634969800322309928063447615368486778679647408053783363997668733097159928677456384242476285591837599619175592218027449742106602252540387039332833586166887055076648836400395982002621911965906739680459821079813218303554684647470513532031717432603249912090462583567313936897722863812601350353620047720275107126616142575264282229576555723811410629759849307954185295799800274735953277666019369201611184117278220627823309610258064902987288592466309150043311077399664933717986289707483705400045990156381397688560709062462496980448539640113985393698223397937525206232312528822043288805503540002201010339594066289560392095479560348300165579516175541819978322799032845025098736806416487668733355825045381748024244818758645875596924713836170619835376287774801100842721471143893376168547232218647293457415813383859077837671278719072993255434652084880514718299667933727435501505167255388329891069999500356114952953173654265809243044146919531108101331220421509552206392562225699271365664768447771875004921574454499894436577778084765179134819047800135844762025008968561997437428721126601117231823059201364496278754268421091301487010520787499812585847835466502014522870229868560145853056015509576456008347206437229492579098439212974360878763404425290900180835560470814718930246828735752490581522732496089957247588425460700543074804467825608133773626015213414284194319953431173365304960474827973539895143296405882809314671057147338075642966607578014815371069626968172362132813212431791095535421062923554031378253005430529923821664275319263264666024659113375408349239809178025574062397716716595279919793399100660719197012288426846522924407303019680474585140083769913943592401451117216796963392240898438504199666760793198784132898346758223791399746478436988298817377723518213457891612704721574535602219474141849887050882958073198895461826690745125418133440475058999713478040058365434948778514964904138350179608740092612926903487621284778933980441717615976976220891514717947890957326729515499183366606120978252399639708124855185032159006015669553142858751623043809526277700730191639603598515347267181277877460941961753107905939399549502241728516099213391170114421976234758743584822013759359365806863779575061447367908615681793727620346447199509360280066510256454384664092791404811945320233547294439447053589768278914078529659745028328549838632537917665714598920719861936998635723027897621879802509871127321732726487779386038406489522636216252010553023723487786555578911536194019312309612641564993427249957550125258166467076623213930031014571895932900270342774139660312757792266136214887059692900366544970479899768675869562900667561366931422237340655698213889360364590632680546177769835400797327450306990376965666260758790424625014539422724482687842305292424988251584118947666172142449474571607792007893701357102293000622582205250856671320301330324294435088329463880951098519726971345243356179616231351288397189909375967431493713803451430958970901088876659623506067821944454177117404647483886558549352493753366218060247217406770956780906517855124644031831769045238861998819920373508565516208929361516586484196103233937416220867910571319112105770459674763012625507637994658729476276567410817207840858999135799404624732762925174311256551684913511257352188544855086603157789364385286966818848590432987229452768398449734937550099864167725347986553085147657722819239760830141539560614128985014762574977593581148653798654866894119305240935586926857268368983769772115209679548501464573557354784998584238545234077238229326556552936570244685977013844264870689821768698019062539001337093301710004552574974828957652728677405206045414746752722141279613606193881896896126207105204580126348402969280242260284611037189671535311071300707487094250845186174824977467328249552605300163530894929816902063519791263153933288947081386952642471265570314438019406441384087126596439719541967082114134336029120405799227839205574400280394163761187588880697995494849369054999383406597974322495430429281269442565304154426599854993510665198630560186528051026237556760370381650966772180568172648071656080307610958768933764940229570895458494292061688686551078579086622458877845166725644123274650503626508169169871780781913282437252523705882635730642830379307467642704851574123973881073262198440590370853548600262234434548254159556887695722796959937148449035313380356044397389963510813791591939154185401587506543661590710896460004250385835106145988016142326677043545094450041589014884786937203763651020864372146130859636542285467794324106450705599044297099618385750612695267153555530572499068214277303152740153653323454952915095070884659903369743413717783035592553855504200378859997175864980959594621636890150326750843845014728763782098154881165381307125036997350596195524305991582707277174047227237810014330498715984960977817737520151366281677934034573188267223049013905685616252364993872926138953513591582022201037097917067141805698363721716734298178639932895175248645238521484318842606754537485403915145940181416412102929030336284595345130387514024874157457240984482672348150726164070530513296626474607208791298208391552340683610746469953407241314399263949801861938526270521639284042988993974171760818845209144519294689912915056651925250537971592978544538330049781086453210512746072925330141643557335343574705490300371043781354625719457000815945042471083642577740397499786119440579623639832056051210081928528700115535302565265700307805945903713531871929674301043612211794756799093551518970439320120673373653417770820078646257653674033054973278792301300407733101066735889113732964261266668392749210704568641417544400144833282356913157426482181351701996214113993347382982568317834431264604681013519142978844217621520177206880761225175454431961655216451235375245748070485581531886747938101598286205873728691850308953611696693325390843223234775786953126975835520103215408904284152111581058641257444337990529267871870404645338862833740001598663899849667385202910224267942902160691508327043020842120947536675955837877950036849884028786284187508475329141688255262606639601683962118788245899715257206692273689562006870655482955759535126115597422127253755598633430036523746891096737178914187084061448960825858895864488997511447304030535719518691097389370771854291729458944585686513311446420938343970363624358312760021811690680886974294947394563245663120545370382331889824011652249201705704310696986891375992942333493145242544684601041979090903422513398927616686849491755124202800962988913536204000138665856537166675070802739720137057810064827944476856109690035957711752199699243465072865738487862285323182382532759055353044700567372480733057533956634184821351926441149060843395161312530125802063856921588103943474310332324433730779476628790339122876431198540237797940900087424941439509835135376875524677792382461231829898289180178845768837704457359114570168639899683650030166163536846244117118930179491354304321743195082963106361709606693212646323653971100800528979580362015572137129919777887272685704921969869555714899931780028679186599512457714415866530107110531417169450619827820210069439668665595131543611169317253812325573060723102507317820334812284633037130572158697980017790195275367199292433477782971336397035032501195458706702987538886253818272325511052745712087672007605990579906991361961897742030384921877651749737814261793040196209852346523806907556241233786104729115820932247621307253826947700592969130162386288812851479853530553245336664073284026939564991251722771476637207817502658705032310309938310687500404796867874673541649818231128137644513810411287146956526254310172806894873799035791757881114844771146624060279337352712422366194391599343273480853662513805800385659495510458060573876411829969438029223610429409094528353970237173963854292700636019495238025423029313143564963015461275534249097754872715335766447935308960962708510012098181834963028428124410298822152424108857538023614334282830855728256582471321731850888168471608007245605754384483173615164820034249814569558910741597824847415500255877344886016231596989035845480110962991539932876050600812988467749261871198909221513581638024964399037514721737703832421254874105897483100011911201259129268078308599549993082679414098247984403035787219581592481162829419384280170214913045856083817571229962993303426799838742423017817440063187198917160886193778355702505519605388534299252742490193578680315789447868713483845285380401796630972505378118727321344052584546912437371971867786380640891934721192393206333225232009957162494517637474657260577872937513475754871003516230603876466487991258032050949625620072524486938481575850253093789457522720964596609370448273721154445494395801891436546923477147113090017958524479171010864170778047636785845073056245155862179539323934147507062063336624656215624263143361652423045948255215914559952158982908389492540685608099837488165927058715699621770406256587452451942355990737418266960373463295482403274197250871443483835791311613559859681798504707113938575886412785163268207354103299400697320319330250334297618016398311400933663744071492328454150717536577091168758832828444842013361672909366531798340889529886813953373536780548882332199717470143608332134273566394470451301060058673116523911861038749039166193290364893376473982325347842785928279318684761403583870284554059263722971335207420423881694828208609949177550557519603390817645991185761252567611492522905780540127268458817260646964583158660280667547974991765548412431224721127053000567309951708485081481773047549856046427929788849054123921104851051335658783544245426132946130853644961677971286224620032190109495495040118185663566018567247628140652605930877824841485096182568133387888702848523816032321637118130460262151143694726737915250527195076564266289210865255082755161290639308922012849321416889182877868802404922045248120215695785286122869994947716744237627217947461883291319417506403843683700849720384788560065894581847575314691063037466251153737781452885511672313237475187019110058829346971161197863263375857182218805367020337431438425033711598904490812684708180312507072764707463903116770507119908368191283502704566480683073374575871752207552719169891301643148307007917406123798820482468802561983191545717103435283960770781987807296709487515045578712832205875215625139800899620844555808967755222335247439417442479271964566757332849382077759458128441406820900078334727404058892497884658356097024235238186127173300293029617190622851894032532281405166051562213260839004158440672126520789406906255342276382140510417245501287723688219070443562471745073292423837163352287449580378438407358817437921676715188218838257364429351442307457803695405953047664504364585985463690146654080481149184040812116497140850362402136843833243963384479178013512030167524422888291812900142865741458416225404048963392620029720939136159150817468635992833910964052720378556978020520390667940111006758960429571252543373378006042910288057863506854509797201595790938386703028846429780263391601536677673811887123379478992115888487999161245045221564233166044907524945950239504766421027426658879924339167338737055160600749126003479826532906476602544543817512802532053682116709818687901943805734141264711653468103587229599874574102337941440717577850206944723992180230465760433121115996365160296815484513688992914058069693201531001306247687123915441064141824343103489446648870678480813002753623913145833301052892088584850690475344849078485912163449122410841239710793806648696703806190629134498919461835072952403778666008235518476018456439774842531095722288908987586631894331023367973177606381289888769142491803809286267371343338200150813034285387863748111333839711119972383192619281336900293947456076970013752691574315488095716303177192956392104064458937884296225378712332469769660442777726790358422747367139731878408318209523764593631541901171949879663739233836286701757160618440492458887779748726313732272779479386915458552332612297526463219729536120692909075199211904515415736663054482048756938792725166356289837765193934645767948206236391486841455010405045403178302623227092657652395902456514592681569965958567463572665428326966189832890541342614857092109778233715008088656676230571193815966007881877237966844837161157212567088147372418430483608883047603351921362926470404262183500504941399003449598539962861099403878202048847832858661260793385635259724850491732884328701568639958390495765585872036043719282272740610250752957192433230975633013546201855422286438810177809830657356015428642483038993031805123715016458771511521850807993380690249005746917958538967735301360556909162865129159524128907096803725228610894160619623595846716130146802902258916063686626992261624480774586307324186672928428085936738479500104907350024765296517505251820991210480100342021014941340580523248720365857613580710314578087494938422591034895295768959118328812961205307410233098769312291772860839005508004904385085778549891492417488543127270117176190269678102460987147093779033710027603124862776002289530159958775471667135639769369945977416346176252276018001810977993145021631981962259025767806403771527525637917383882700877615113492116534518947506791439759196987343230648830798720843194922400651565399661561727621937503601353145691267534410550939694474172062492275796841620664230079630718964488991609183283134779094381583426053140604494882932469987908105192904422583816024284239739511457966242964286657891904671577857578028012997056353723185411832885234565912952547799318285023084554003517119367997603470121531953699411700121621878249552184600332676317487115726292480463210346867679806434193168577823733217001134478829728694674830439704779031322319863458694363586494117308661109870322917705875852452155863652224449761417142855819345691617321105388665303044002295060984785507656748215095800084010899478686564572047048322392621094742186009296374752711261079853030056158424547329235135274658475058974184933635715338747951651263174638183197940475182634812313085211616700619223897243772240823360214056473995092272844301160557277800731986363047406899968302220534258420674720266640248358549900591494925101736182953580041337880664817527770380951579534359809515011306707078510571785478281998371858934235505884757693415179646282147598212191136652001822182495315460445995045698657910485509234123632880802283998806352430760448435626332703468929130151629425548072159147170341949121708190101724176582649905867325473976338255107459762271317071934373994705927920361037572629028487361482237958951138016725297425995052979482269299652125412135866485576566075213173574967940299736186905275419765231505204617552047761701662528821306436852034030280616603264678648189199683026382688488570246780107276363576849279419786756453131013466700389752624569182305242367517949918632799379170924549391663577394160001883949058718114974169166145294918396366012597622726771005718075681266756036545293972606292872427117208508789188931974800711678663422464129337415426648229899998348628802783115178322833962545280681936956583627418572260868609680677712973982064852585452232613542765196974888251775120405080873687733229085497845690456936512470515391014205161026372082980679424426158476124503305215691826972780271964552751131145549538750015410539214325254365949506068104469638162816067616175889198966699521120967807658163051450888601243722898635872093425709617833792744474858102326764565266458192518518747282371024529834799920442580150893427656808767377588574148712601123657381965455137306707780088636804628813674867478013386622751255827340370075089426863280385158224051214304685760687484115142543358977098397232753261909164382325951085581113839048746776199160592670898815219340759162452562237601315232348510524532776916733258692664720761641204907702979266356138824210900358598318250477830196514008385112194187269389904658242753834071419146329626420672625469616500379466044160029601182662723923003915349913723038460235821914187517236578631286191899103816339774251535404608522407041821512596881132430798180939833270141545781132190772645466851401230037266107440013627468319609314464321934413382877432086570356122658024995830832957618342114800335039882845505755021330120779900068493433617737717469183272749552238340041416224159641811028783074224148549892414327779813072830655996146643703916318179597257706753927895659000974271518895045095920535371621240805526448876492568406515955390012905967651806185430392069368210192239958900647767006232856567451901523123494465561217646306314085318442776741794876650605475801937419494792408585946504217714934128720923548200101648079624092968984409973144288668958158963859371476692054763141540783553111928829838455954888750848480881593548569997267319713432247403205946679868448364818429149196100579957794470315082415303430816172301937377057813652157944195025475956203804663991758904468082508744801991444674416497715008343034102536910001237461659012774617791885378925600151062772926972256134715933613889085750512417973897250441032195552795587673682937576055608903527311333472508670620710534195523491113790911858729264784723342841461035282657273551627390339649553950438387836316149079858996086927916799516340893140810238282650984895337078139691525710033761808662735332006213305050824778160308409813902345183263854605165145536070831497312676210740563236076137667257699283005264631270650910288453830819164391277791998984801644843515938725428790330587133294881928702705824483387542879243956907231028879875904292466060425000693593469120052049172283641866524547298766969975791470511525246819379317197622585595311441880849552169029872290982304150407934915824694398034928105998751766909274541419584986288076927446406594686662205254535438783032048448906424965555568515048594117543040744204517033266541186876212811271942617142951338899516652205847598249060617322640903655053792194119824171475956974057313903336749469219872112184193972153521075067263341350129377955472540083658889448391324432479532468703549256461136957763329009816766398104544959579875158553069568603470955703417437502009657581775861778368945995871462303014872243408528779894117100959482743108860665248416126176177508491495995753486570115466695880561513995159542363305454097780870785471571835074805598430854694645419503909452386850527021859202875376394820993149401727469666455959117494546079129708382784902015108490416003257923774896508795914019100490963462105788386569208826892251689719434549732501124015895808957057536743526775428183600836078986690658070125703151639466533069052905166763121454704657258156633729314826497498503324939421271952086087322946619328980590802314241119421852981871349740644537615705282743605510342937711277401778075747340589953993210616653413811646245833464843522891955706291473157639753712769439666956146640216967460327037656400756933722656336801076377319749489735718435625257198035033712849103638289055769081892663498959682728411432882430580388121110609500685225399811773204575054337230349671716218322750490021221000139845156651783766425952947024073672088203113322736283955426320509029410655562582603951052096555215913592618429037709558790903274789972144820861605222090048771590956835258649821660458433083043182639168027813840408026132429234694389123483899721791926291535822954163270562440002161541266051668256860444398761111618585516551417814367979813043674767841497177302478527891683232217115252317139482929249346785591461084028715007910807221303552410005661208492492278743210535783232746829435750235740043008025225063952650658392716093559779702466759201045723535352294549869311702025787041549742014413484819882849677283718512601219408240384535188270654618950493896907017143879653962550913036310549489442887682428968787045586581793314361431390727281725642705511465728875350848306495358751710321168095637233620438662682369614978132810517855565898701164985159111581143268891163171364362366559225664031269601993972726643274359472290721366608503974762917930153046085981973023266707321508819990688546879420787882188622280178637077566157562608936678705269755367770881757594253414909074918019970520823717050310683740149940049117189330062135971045204188471008719660400942197982390562837947454015582908183900666200828470650994907745894906547063495300595983283405026898256602173619421805451669647995193389233382930585252526411191485507951945571312648418531570511912522990195152522597542590195186654793665660079053003443372737116628687990309913054972722613491387251786432358942585266481556267325304935734753010896330486132838266174798551396090045067366673986798018977424386336591864766418771079868786090771678970359257479133631338716234937443828656495737405005403328356745975347748421084150968899916767090283990415943272374219578497762508286784206962278468744720981446461698068776464068408075389548027224003380412189955913819634500567477122628196487240842447257811785245224115035802922572147031289575599598831272070334654765365786947321099043845303697951780976737639769375245221256274515939684451827242876940421197217912750993855211500687095486653282885418004704105703273562748441451712429648673843920677883174314791038364090227718288036087790767849107623541493085261220833234719313770536451624439225214368095771287492769122842179095995062938644885768917688191330731176575604187236761095612267340476247490241796936389460409465275158640738047427908482426090545088474828951708177971653840784720730541384900398304243098457903353161276652662837672989698149907087497087392610806483746507184135091406886528956483200352711971003890329681748812402970523248978404552437622357937472702745350363425516805473630467387273407581497034017598911023651198939263700207165796291052990300211929538309397448583294028522862756819928149985043210641707933218008263729654095910963134157923265794640583956307576683352093271649030235391987797597017879323781616466657235655284681900305210140792756848932422983321037895851535897961919548239940526149921441677713720874979909937337450577650011045463947197709627363293850703258990842989019503348474753642475029259536778050761613298979669034829590208453108953702586131345034770357745230328331264709735422467956275036583593722764374419620123116260091244080174136900136926396694695727570408227718132073662447615197175337041003648558421141486934775906917190680659241716315786722554300241500264884587319646790982881717203594788922629088381426762390367152236328352077756379766177431229328005342304254911807919299422813644806357256794029447776387239573350536917226046193661679652410278879455126422515785374008166407976939046197657283664160331899332590146834440633799694079078635632178080623813527206250974265153879686976013672480843203619749211343741555060425048816222051235339123968981431105494465429644332948296052601818575850019314482426106134809186247072063170383419593530586043530768322213458541444316318683767885638361092115460697138838033204597573446753500160274437442642705908011453937032394213789380253186143729523894397893926509689860845537873079753076480430664764773633071638364335507415887019093694985581107096612231298512552107287363500506985991381912306329033918885277273142500385697063260447562261857021917579320413659047349813090040318027276033202827738018861384974402046968875712628049416017071066740069206370199456712812412219509122498687541149865296812560446540143238557919632498255818962024230189265387017641172396730738895131175850239115251046752464362637905553840964203862669520696238332160341591815205856124912289758422462485992030403888894290911942535483612766290048610016686620136639697730909056123065209155788681382022199021148223802501790100293441906932515448979951303751362527271736053884766552148067698026409108681018814530272928711960958715619208514710338463028256471397480694512349829260783229917608904401767686226408044379687740585347849296165139052028509765364033926669958693821854312671115721669339697720026985399302527936460662714378718533361099513201255474539273000608256048321720189822875187656455713975722894530625099563714524345445758082217409799173548648594724534243026999040283853845934646983666551672883582147036729974724522149681794005420190977628410943366898045509030434900966083701490404854179942999513088066372307131913819134631064153538172471329040872042103802911131442257246096635857323264361993724059058820842491474571862898050885903174900926736883699362248419666380766889621468103469312526301194318063576464301208241016824556199715590220294156077460654969207993009895758172104811897102775812407501405757318759548105752987608812655494761367804500243172111341048169043138373582970415510546261798457600897463057999411280088010540797902350252762582283219221408289509916795881850008476848216458660338634763591406048341800716758619086379118256547052658149048791196045148621661755968422367479258643494561832619486100924755036570918737451069524800682047808937984944799356115738396075457476670068466785149013197669107419986720081039750613589623712762519087475338103798847984771191299416058142338686870040624431162915924704491076646742865159145002918468919301092962656862401136835157362301157049508456636674799092685991191993702404925346408697380286823268875535066681574362414913029571723154745854439375379205250645262914382699983562238607915726157878408837873135332445776083932449371023847146525929625714558277139672461398893058541709908811567728123805398318893558163177451538486590208317382804981937422911596671445732030034695818507757689427743898325472077460107018240109305406514640463567536287233241908916278310855401829440577158043414371547466125308812297258893464427342872097562754037038763003930370264915973740370580250387955705985243427823292077670395241667801472464598473910580626632260816240934809671582843946758699730584090240518023531501757758877325672802801598176257200549529316285526616732004709991778393263261592538721887760565970183747351164455490072054500517764911152440688283094180349591644214261615594283116925006883470952523411041922463859792650414942906503210756015814331266821308567400549688741437336190713311184268672280747034831296267613373475693216665635713032386958803255155070160916341931162347320208288097956223177439516425488016327379409871148442692244177071313899140168998648176394609760213932162857345587052449118403683716642810132201890438503646887061832956380169414011700720791330255937176390248251849635766033911634992468923306766465009325834460334053563040522314439275050578877572130589495321417166911697443175013542399637835212526179160394860729975578664362698010604169384441240082658856033645043964100227010523647134715781924431652249110952143051306446438371240039101026093889190348035141788077180117484000835894584089372308816486135357437512963856675075588955700926988365163592096806505928214545446328142027294389914362503201409059584870874688210906892146529643959633203778018636614473876527343519218591886040991864496811288079926727056887919132347323975589143342336623214222595809310711879194451641517330185414547948895866905379282525791223299440696582217589275980912376742579468473466219626928870927232888872118230545437245176292072826770722503220081909520048320681153225761454760266664636141874239056489951747840605093724707648200865840617552642833317772644792259026497868220409751673699990811047626798193717018398052115827960475388476719646911644384987702981028789272074810622636108127709060232340253887537502228125075697962683728227321943385319676795473266411301850861662095203105496432622662701277625259849709279971103900621682411612048033110158993578227780501114044233456108384898422210573607119119105469819432371047313836701805818619107848516901438127674391854403646136724133282753597070973731295751009841601705516006396419845429631238506667849193167960514400758563274106302499158649237709627641849538714167481633175121988713402785298350237724175191208526427943577720913720168137137746909807786531856994070841764089050592393124559684470613067045922807877987923046170870303364805798964241878475503843683562279450814491664729440964419577896613564141992396643624641073009253399134724901246746580683848709684831929195103050746407444099142338850727301194628745839103052392371073179779180813226629505147965855272266764329233846217732044188580842174129173702875929401670073265259155603163262712711056958371845304372453230005222671732153006241304368383343554387789051538686567305713247130416468586882378494763292445148296254313589656516319520636018748206726496427989547297440265592143288923742848454183473288699360829508163456540531833976942549888697892314857119672439160467190476249370454100957465399111303990721357176621062163622213178056507028234910704375442748146186041918354834112213810379698996192987288741957898131066324312082786879024084930060104737542577535034938440613273984516040264042567025611998944056584756703136386501286341321883934199468101256103363610492805489727083660081704922402086090927241383668717932445419206584473351134205789636191413558284137188529849561647538542112454471761278287043571044534623640218832031963508032262220119626320116747326908317014416397966083066814407106814599007866696181532561248141599411201686047491822631373457013430787685303510716511632654563695129006396284507249034224341473992362225534823040818032074588312427529200234277542921201253341356784309287064802757797878661191142017451856569700276232843153327729807691461832928609803543706420451582121891249489690451561185718423097534842301447083634193125109460539029479360597658016236442908544824645028142665906212856265221715783261698396483486724666654846871055381480182475889333000017654028212917156392203145825387045809044862987578288396291395682120355395012369553325894732270094260105938078586371338349348009925424503319884556861020814001394819644990536027606853483811624857046881290739604764068746744472623390169153279093153291375136894990794312169393678961469522222810255987958159731715740047083520300048886600657778894944305258302244498622909304099602131763194901161032914875216594000090262421814873805531909301386631164805888513248318273700150363278243854610160622361658946647748347054683362190782792255220762142729915416035814325985988157530096659062897647688552579022948192489228466837726437996442178817928728993901156934775971090683489196383519775943371211338763370718313324152003279307044603665942712431500955468751304655349549379461786424440576298641480456516524937028880457830044016745270766650709332175637820224285630145775203365999357477172781301093358874565657173496213070956968277222158518321541924361577122939196501962758052388063165067361600134206018646637602972086462500843505218077274950661705855343556051688968714506745108555839118461215580392830063329646189020898795400287205584257515266923436950253226385404432446322058171995281539330470711095188035456421443446521583064091472377429858956392713805666992879356356852623230061232667120366962737787093847200516383762959421207684663259940573495590041038713998343261574541588969314475638256123257361536809454880926961288371357893433589105980893520305868701140549163885224721185687535408632553789131344059899621949895905011439726225845024018806631154270911965218583458983197024341663756746250949001471027231798739716267794337983445224640052581004423427826401904403155315531596389817855212827190924199621715381266488242202860674366478997805432744524885494338571017118405655598527877327974094153006578770527085803716726089114708059599760282852649282148867129888353141571062470541125801507367832282710505907321552287885588104246188031427774301858654526693373317044284737774090616870627602394818436857731942929722431795066615919262796088742503096007402762990562327055508672689802415247286102024658508395487357771674131781782442152041967920365129779478405559370190539229840085560867513438581727074696717108662987761450873661718914861196596427353105598827363964765297605942583342590290558312349763034692837226199587774074793541696681553711591830850298674231670370341537642992139414437016144406295726000405827944304432005681167688226840301087458806573446031673085614123528301613337252498978224429801443265953763229164614863641472714361279862851749832813675466583146055123975004838856569393397314251291255228537028022207343610624188016419859532859724493331676913822512628639294140755112722620246692523961185755877982843001097977919025083763442272794568562621858095618950619012600269795857543736318068639290259486820444071248693482498169930086431043041507640850167774142160405677738697831106835152195553253472554214370395345149783130827525465998494994475934869158738513115251651604401077811262781295223787103142401347766973576578196142362072523206863009562909789327391706138147925380972809483255091812510608487156079258704868484459125405432082582127126197218688510164810987687084391573756077214501468715837738528348128367779888860601420875172680338063740302215071897412297535539228518701882656298688627821806421561320171946218686285817826935457449070080510323132611383183332677841418280179309245713144741894163346995232293452677186966979103717612146466749563247809953865650220271689005316090732864424916764190740349846669537822994936870843512018976841861033960746757916426632438822476095227126722539862683128236288210153165516846192434445999516470684254517185712508972861583941639459800100429710510212329438782301359905183620883662737908775111323162784165750309681407621505423188561025906343577197331972329306367367710856765499493912540630689354615416303078675038417417947071374519208354144743045289359713712022009657107791130132057929925795570816187807392317309605039901469035987801679308021076750982021922952537571027730806762904214758394620674847915367250510575667130036214373295095571258533310141606453354953434484886684229343460716222183551775937395342600464185599293323741593382579076678350476271585843109543797774919434285442947966499733948718704006348874875350048718416647686081295284359131682717020915445771095201898155013351810674549197168913170478622129944966945203007540428471456090827090220001652270969767962719123762393777995671769758839682388125587453812197528886305899615113337371681167258155639728904218773508007659807964954520044771815751747477143836844330063127778414178123435604086841290578182304546141779346006050861318393819584170134677760306985605826446258232129086853969801979965375080184162016393303163352254623039584624230928760782030102733755908196009015137097886692275421789559447362328903351942134778788560224280613985401082621600974496296541240480407788336102712400502087126933942473729411323519822721376470592776939683859737577837542987173690344956735872653904762540302605586778776618337364433293703945472116463715846632600054733098154340817327627300613667501965250907253914478105452825058606983640069757625998090710671227454639291325229472529962697303216108711538946842368648204318688865560239155847518360863726139215645796642509348280911508769019848221858718444986557511331408730956331101942566810872901632763076788934967080722657381733455790645827191805766415836088705500348759278957779692333832646548976482783946258881288621172532291536549639208421907082078005319421369801207581362899963883128522094542249083343416857545984733806813322520601267400197534872102081421704425736987691637735789934177643053483095769520978277365245617985305190248923529780021679555565785803677054440332364710232511246075712103225728131631915765022082601099091233630235326286517972184016981044846606875108034653805536751812922819892799462297855767217049279611845978451914449744199129642056057362943168425806722711402432967676134438984942969374314714542049435333236078441209447766666124135760283134953438927819210531122022272102625203115416915314696901134138627638507290241351236389419498024699076164145949984115555979074626817006439373568766237770529527795311763189155145749810892490350166027030597696745524730642681265460950589988335381770226404853473053706759300969102691180408832277958891504623610186926363089750234532410770613196910832287072011937230600295463807902413038255163387640797775655411964949256239337941195990119179064942194310162557686187706478050868340178339758975216922443581930379764070928360842914868269310935859383766146328966608793617271620578363934960910967002987894625669232384581146459469051183452899236401895133369419123148249376380691071760637827983012958364314275562488871600871984059944399044711723093944269157834904535224190967623065438706346876647347256730919333042342389456576891752653995045876877570884827130515618528667900677164611058881671929111435466871071519295526098889675061521253554279835966132248761728611860734411286076684949409648987721084597571293333197115169755713823292692503263259591616538370301326146731684798768147612917020718870141710650109957650700777470678062646519199162281902062679022621631240165526058304315831827087811485154441334312647283100453015480685235825262172427792076812147591940574132782539823725438796292878190483547384751978212557447151292097810139583140354379332936894551654558753059471682398292948211985489234231643330032510512419787068666908042977687817520940703439613751937297479606292782923870459029453737823217066713481905883020063795823035314948806942605394859508421628662339716994973984537228935676644569687999528438976724298516697216187955243662149318499518956706913282483960493840559690325400038933664738599110867445628371392154571091062683198197535741238026173038197596462457611763400402966544521966059037965442713118739420129562098612879648003613568927314638709835991214479644099385714608758256971715863249518855765331140785591269357068122210773054506424835428546199451442699895307148918688234240942831402805994333639766206890663005912022865772804933413406364218218759456939448154497278243825482642403085571488550118181199866730909571728402898266913683434300305778819610270812801566041124835988463516965320938490797387551796706417862629748190357590785451045682502059436656009965590783531025050722384611472234003328851958731842765369730811905240112220985588055237393191870784300266356507856971026388686069253766746647869413909141848120573644266301115546213011639528140165347356497836322259489454639443946060060678251240303543964719242832802433657793517913095141834033781694310628456473745432328912247648024487452076979749275661938441333766357750330222949082873901581984027907646032945092504045578800472259726031062828248529948988037479977115874001044277127304852693850150385885056473137889012826514220932455952348390603655729641295225795966665593205673197164485657061185597818922913299996884652626112761421095744321101005650583582107769907216526457567003382535828362804873300571695787877463056043546763899201406572576543931080195466004319399732415316394086310604204047803302993804386570597668541001235048805557156810210643766496078177362360371653340667280373584530158265014838252665477151256459695257134985842538670251953053707082706437459242077111056994479007146162766759763707571889831217350530031766769339013249565206650923447157059582386624229887389033268445699073373439842798862727094128893196215435471375365874695069957808109195187138939484369173110183918405446159598902675012042850962944232703724270860730005264922487861202820584649437427599728451867005710426112712787037619940411244698124080742503943590725346380933453729822479086872494896483355616476586364145077836166860158849465861685231497589821666605455253470987953945802266329160659635027049022986861454151819266597565075135273613134073805303208026683066540509895264271903091001607928886369044844959454789165872721854682738403523010718303432533809873209853589419568133808638814652201563502641570795684033234219855087072266231480783230308863058654014807650825748807254745464084522578009443215693023765382936532077993818851376536673551873507372687168259430274978976764024546095085277490198293891637378270699406646789064510194543892069171070913987901179883322940826834098196075135509505090029176965439866624802366735860365605020086090779491587871751116704188899678606804932199279131557980008297882995549087624190180040464154657948980043586628584157529137178378346673092484106298089822422289498387341151941528805786277477539247341475243928424817718958367964143792170593012038939976218854057726975468915395548604573865360695057828642800348953740826618218021936276992015689801225190217735164453689931221953997571596858427950618693712584964224444174700348472247639791499571630974723636116721414128446227529847442172201353082485036474890589133581881849216949588012844526406602477335279875232751879242621225926736116833246658439228712121634561847467923113942062692606666557079365604952314700207079443104200148655426245511914995256315171518363244425821251346091530766776912149557156468067583468052221536826645167599119488549405705491809516418407125530389767574517530823640135956886925845920440557508562472869161037944569571966482845642968950891602110319092024367235698125037879077794239253551077539924978402377478169530544464133323278391594326899393917148438757553666550264802012200809758965110890209890128052074672904036454225918103830285613024338615145755377296893272666000447581998310917106649993512071031441923386211446160252030901577968574159032319963896302506425199217060695045742692921368211853162937492484995902495911518811293902722989153030499997519060291963911606475524003137379543170585987628225677245429248746334929571449587992516710187709462257814598769828116370687466653506878427497808257654318145910711331390500757802855315712060499156497486605073796679872832434745617024323814727573221343879397799337878272275693436063751201067647983966544385142381450116428437688968935407375823163550933528194376008444191022620459627907359998713846402476272787151638181659125741206574870050878867942771630471481898472867703222731366318626655333799443355989725993482170731508428195044358856340344208641441944032169869881562284079295026591066484361998541818125549086225824115961534575534027524922972198839702758890920765539329031301506920327855285852119152560457540639917298269876331614376004518531787403685499213888067649491063252673447476065088056748566857104496972792017515012751215233267762870338281312970346588748690241471615405632856678336855108409659746119263533050892646901882601663742022742098533393884744841590492842798912461405252918896669514054128971141384461593431899766282859735090455711642862605506545014188128382155840652317550826055749635113697717684176439132033773742101865954227110240679507063057070777328072416467567776981040949202712865968219565589296163568538836698533793847887730542314160505191281387325880187451813076345341669973672356497269205343923083577626354347167419131593079257760048786352214736767773516431584386403622885269276100328026200725754983009630534043011412720029790937108689772371597924171784371001341361396074468916400052502959250100677274830978803441424161494878644957289334410699533966419709596604001534750354004283725168566761880909470628843243205562792067010021326146682165037680776370317405604841265846860242133568686142947655542942251344777136448975655242221919344470101390694915961960060401641748977619094303236984967286884037162660171976771431727617788296586201660988303100533758541510476517070943584698869272955999392635604044165704798958913012242525665716019428526272311706076756559633013821606289521604355522484471257650658997165924688341312668216249902400932708678647896971495516864625995358186345807110183437558885341371457388670404737869147776162963712287143103757856129402290950413736220850030617047322242294566499245701272658457305978430284294203896752854119851926152636590486255226140044069459730913968494255595244710749533697226312380072232134604113535190007424739268697010631239369637700351017354357750434961153603540288634169597698289784487907957881647289776427518791379220777690706679439872392522672992175621237692836128033243609757644501819936238277516174702926784964665631426017860904562200068717506443142850458727247379161327121160852662587607223674903375774919396622508517167516622106831226431567450405217399241834763082439644490550841634091986368006883872317932108257831521598221662971836276351651885318604053789026780649287570048336415069142748097339426648843763845470613825993354791316191932061943545109474353451927093533519912929861883357878185538024317709021238294911026681648010900080209101216294270077095448764937374213909483299846542546319790515633749287869988462995416648165130395835530088996639607201123186087962733756303931026352861744621749892243556992518747387131480846733593519072478315119114243291643127526083742452676594032316797142061854823307739086711300405259624373386638116266894598520501785019598055880120728779033195034807333622734937707204941010927700136297915987377761924230063653403202961032174863717349649633495240077471903657359033300826371713759936406190958595076574074457576375807056998408020811754894228597577377548980969003267921591340407222638354417821995797061204681490463270251181042887920335240290653481013527173017575164669379803056047219687494483371910301721211712372381815243391474762418067271409024329005679518375843778835965972429754332310224496949652425788638407683120821590486496785742495105726436106979024950168611422325618321103826150671004321719933434217141157012897968976314639354128638140073577085409554512516786830365669874060011251177763037834977394270210446663530550720210311722409459028311135725167488690760265305823332665299231787926342483033544278613598939495639627360049767765649674699701917542246269702738190388668578693368137979973866238680797809494977195886755104633361655710650310716912368790862066477122771590738062313851157401883913828177858395151455890013564407234508593873702497953200938093818778710398908601242132770762734724235734818256808940653689757252332650642159841346880276354405990539415537955292407804459950060278611799009295406661067737835411561244714785244746920007339195433482964099923425421696445650326870643928182758332737763512602006008862940357193266505875066618740542520953537993172779230461445263154803074103159520545049939702477427249603886670910001424532388301018117826551321241747470270370020360089733872224705470387786562476414097103916074836936810865744124488123495170894193531746147174310888793461909137714855308019596203531073133261973127180028169614762790513165766062151049959650890534653223168268333260549536221883461599449648418138098106504031226349258268805438764796813617544730628764992310531224421118377500797669934850020622256437172343487027389735892627126481158779746447525160546781790716361644091358276930891437330329182379767037140165512528842649188376509231653737378511088652068282712311325712357051367527112363415369726927317965792457615710840228707632793321936091409462080747926100983528832671900722656759545915158578175132003904583975135926550486322661790008397702851685401406621260649656827308761675114479418135026894533459959519914213511739560099637650129850403283937602097645945635987226019571447095091651305106026213474289465439400132524729047825049686887812187447537317797940453817038936369874559582905173211956897848193627044656673339888666303172674969350466956627232065902066626892678691665469954234557134697138660995713077762398722104789867868839979564949071557213111504924406583562198077824646912778104050161760111986639331144034558475802172061782781678301871122104897087310185046322037266859645638954146163184660775417531591059454928518992891371732854417389130018298044042654615941271128103676156281569823191157001798208633344552522032194782613217260499154422643839524207692098535107670554055893663051211080352746055477190417921323472131625320883545403312035421979786928697623663861682130674690075216184088273251437045460375681537912747151648529536331939942940197472497849004943605907954855393332207832460423847142613539923115247482860528290132771258816922924183952649834994237408646046208250398240384726947112267906544474021466991426808733933020867527320082261519570556059483658043072688649380338815981068943163682552484859327093150781443888470285301312408445165471063361644228387818011549797561636095927295787008110669422635172044147487324649938341158075360717108042288303185086404929359515834490710144591734272985948988221405613906776531228016848792310730601464661917689195220972347225893294359633633416893346540858305239660063961272452621088646046574725623191568059698136748039708150824640610860256626548303221049755921604997558998572887760958230295477183814612773860665027688213002048791012766039697606280817429459112831296070037137479462980227589915885240107878443672529778679695390542713952417040225372872559168481973962688133925877206827264770042776945805234140551678888619335666155517210111071556581548739820287242766615615143818274262634127881069657010768352984773117244844389859795196325334969051189443738510907902181544654073017126299078341692343760054411629459477083007716889410424887368766081124456470107666309097530661955084869142370711339597726608846881845327808857237716352262610202222393514488840525792508931351444151109203360386137329220128867989327910658288242748927582850665432416693819525185497170648479551957583292920759778523083441460675267804060160452086134998718935059419531866179755638492915254821700891175729089646356894504700627395124119314988544157480381180230309031387974237464619041621548405075655205143762184429694285509134413628905740205447752594008599773936417077458131123973798124086458018428450680201001742772778703095713540937178113644134872808858291625729116247426408647166395779555393815934958920788143732103659025629266582667769404651566657894119438130483995453503790729018272583056848023753988655780435579931988096639694406757399128794592826848228990051761954071120767192556364454418536248957045227777553202904067786576218019578998448915737189488493378416425956985260652441547188932725838154686413042402617705767405742646438031672121551751244200521945957568301101786114702896178055349123677730697194507628812485425654311269054207849747535528623696348183107050993447299026754999301610815771129451422055300244285883282899089107143033725541220901524921366152190007796899490112741683433602404947862194692252206483412306087988957542273173589967081016223168900628942194085959709813630706774599220149504625809477745600056455266955357714262973540376257129028586812347059047295317646039387015999900712433198629508293442451436902823324813540573523810744584880853544169108245317351732564323035458090440167038740551484322405968898630699987321586154721195127065677229729425750056106212203738479560971811413992310542470183313951358571643865602760567733525581669907963662455262159949441958418631234683385038224529336130041989787395046477000112730035667933289854780637930660489661373801415375168415750516746131929516841784432486736117262254017110580344526632648640264363294618308966365035046064870803964237257577364721229239961250897154135277027553703468642322912362735277031550899667169256272295394045529596744710395185540162051899222981072576083333519311214464666920747094929288329532056724201012555430183501365226185316592147521567497178000031782623066723645770560802531052486348369026149705213815583248633097408321496126325297895276296313470694950406106688075337196702182409669194998794229930764274499268923552697274218616786331398908279894183886667609647328833621773717492393057014805574666012885783125968925309019710011400988260790591772899594061097981376328745623665724602724004011275641383614868879712325568395242266847733723443915445384927111043608814940104756858081015060354379833862134118412622808345388519668729378327788333534349371213743660458606349330616854462723475043224755611546919701510449134895860023850566345022005498102743035334263676767662658744972730785332462597202924202317283600259100196334992618078999690886329949187589097477974071948279689722807326438144433111650612322252711544604776627862459192425170973727748184677649305998653216685871878427723050938309128181588754634448751428108355465132073944747248797361208200466382607945361514551409070660024607287984783393163449694400312325610563173893993233915941105936882399679971975370031072007229279931976727916763763285386397658359716090919072194912558243645109617932172351091387042792615163483937135084418103006638430049269626794929896376650995332669507565547642300718147010333353044520964827451200676376513332512415575251780526492276295777259428830424824822263221034110556060866388949995681327234484363926215707250116569173573211059013070537573988158555952971065450158769669933771822821078384846522551160734909378876206770187477902954079594130016791240829630525510671368154409404345477727692929814242955720029585817263386662624698767458680555975970456125532809448806626480002336965848395720354166554297827442747551271185842163529287512133882855000408007846367121854608987112665770074114970126114407182598406977913900103280686980185374464319541171768458362772820626116177372035370755755260577972801142707316160765003970164293309742191381040466187942276712720231397592417090409533641332095068412503022781062786987913832767632303575233688422382789488550549243390899596766522374376544804135331639074727257535403446322381251490270522861822268643413295796802700467041101627533114089127802857891237746701245394352333778799717335530255308379756975211518675708347109545490345877911306056941724915642154411343168272728420617062057667905695104804529487788789842614157515467776123605441317992141467013064094349576250563460120290143351623894125537622727134797728796573457999955720651746404349786951437403126740616297795362896814049257133971951325303091373516634134687766375270488217967941044790854015505717771760512056922587859142097568755734098374302043269755619689566966445875246804787653013895026265075920024992024131735470209165928522908780248056071482192529260051214688343028211233656571574683065836976998790366370396475493687938069959769030350124538098690128797756047982986927169743432726186421467867496483349390910723906413454427031817474395979803011416881630429760675587801321582270755784795999191027759551019744772939115260147289364237253878148378249908972801368960004584584087108673120845465555992860495435914805735460381633931145950213543255767516336254938332534637175667859632337920237503309303930208018811626226259488488951341667191434323864241610434615040845602541567426718399993301134104702924610144377807575614443193805046184806603957683642448567162809718536077944836408930842769353821106532861496577607987305238032054748328810275826511108850021506200972455306066142848350632484941264293941362222157590529688159351866401402919006079771820500041122739418978753762107249917890076927790376665470398344569205252325687353256749157842244861796842404513835089756735445959982171993648726670083512759902698507212099144979163021055035606392668028197177525959239121257965498949913502724017372893665652528319856253158279220867352747885781152478598393242230507086069990967355540622167792076446252553958477697208491611371545180968799581339399913662658009052481486001842043116702992642527547332365240332507448076651803279303921449043499112328609759324926245075240489229765601806229884521510118352279130886175527993686681976133761259588480937759963057660979240203971579915345867599803782114095410398607408736090201067457983812011364637572181949764158847198524095028767276906153941424134373806383755729861011206103979128206996286280690300240498777733326140262087025602073258730652016667638041898340679119925910589922036641045883558885319675235332845442208958675577227751045699971244253014585516651286656193368913590627086339747994558544156600025744789836951769893380128867276376532666188607172067037164769219944304178014878755764586907340856361740190990166537009220397106476980717456117674124298365624611859374556682178693019194480303680134652689797546016499818987012670768555560539698582320042531908293326666637334027048451519406189013992970126083862318343974732203250686933835834974535528692401310312814488908597368923631896139932554908586640428860847377972056523192605249265524680383957356083686871622339803067722596884218363822562971366674572549760441558749550385367011018598701058182112913298316185414649213339889554540819938444810692204015529484852693559027973240638633395656588278095161721581468468200262582710809448906386539770935865944286693862960811915572447769309182952104386874026371391577259213117369271169554578270522596012108837395826610455716680307309329407997136931788536135204870989824042968248026831819103700213641859363081323170413751672027926673576014507317534456375146717356593133747193371586667921339645381033483654063856341626684223405436032536667306708520623423963095645893637107638667739842460172793358943178487534295517407363024386794382231543493096237497474774377349606841320708513280182875017728862352668125421895342664151731684638090904268019533164846163887121559058007430960177475526255216375414151821306246232466621230750598406794677856757373016979737847266641229612135030543713430508255695982055606773751190384820544187550173087863143772070069543467432569504557401595765177904687288636654119967932586514978604598191320432207293671244244712407794329621202095931968852135574860304529429481658057807202396377372025110990728524473438378514823135873840704245987392639539373749948366353759159390421573226104881337362358845061876629891123351403429376324880827492782299749173851618340700181328490203699805882046643158578934848659391308934076070919363159488006085280246486568313190577906455044756984983329935250171454580650554794791479423664143551705104926781773512622058042329587966932598871441232021050167130854221991758122386300100714592782967011664401440239119588360380818118382865080547277506721823644205648263042227797642832850700137692479982140584400353778633900459704109955355685541387392909825199532360839978256693611468977793067354090248090413244936879253311122272226692749451974364073286497529254120219603791459676889284444358539628969786114114366715485879457016269287325926414863083439698762651756947374757697897517129508300769350228478256889797133831489420390962086548646358656036090945927372328377933143757328547083627674657667382940067841795870234686147829685981468943107856596391928770893636532358916973588751449939054552253121712957091896165005169664781890509255022048744636363499631674496808059977259233996178484220219338118531957154036081966750785825615801455964212374761422442206339347739343969014259203338870714054866586223314348948600510908768859868535401983444263066237747429465494598176749760174165823893126625254381268702327650652433891723298203751401418576750248274410651110753720432460705703120488045501926887830031721066212173788885709102077411246767348375195704459555743331695678112047635233504420323508422313363567101008543949431206015539143230166543833827664500319199804815839421637844876082890214200764743975032062677541072484930611225531000770490427486170743040325535631824149229549234917150712751571928079875199173763826604054141338198747556698564320058970946245818748098700463121770326401045401362787405200984727554916294611330468425171759235346664102499690876344731403388352831379908572874308842286494409082689896725838954720320782076501070777426119349640012877032132898516463036243732092836847158083822983727204931306705648503126471563281695315798922803499511479970813967629558758202688995009573179769675421226130090836666470889098055231676699710512823828731471773459356306369242887557403173644764967214745334479898974283001673618657514531414783189939517217784754818907099039942518560657286524015090330989103772565938309813133867973305110113419384576264440032301268083012174088294910115733181779677549905696352860892285600796062752572932203792250126446587351596823005765934790091698880218968884742125347487046389476162348535865576268713886205898798905392253733058999555697177997127501127337154975205994398890915476943150266811371578616800143433026588292584164765818454723134989610566847254696917413694614161715507581610130929953224909352501510945684205198019299969406721618533916721114132118839601609132900923468204669306908508091479544383350002212241208093708626627115415474406252374208265108381768309551443211886483611432607869801396155554863360473354793290431216542538889632370806631826180509042540344024814691642201593752670954510853200802282175270468321467467074066386366718607100814981771763824554818060355817717323902378232711005185536745556440989518213942237129284850756303381113070340790326541674929223936547566106546348055494086899038234664059953638183823687063612161854026684225532550046459949992051134820797490370823136175757272155790240447638169096972340778888795543325378542847666692803890174695189854564371279335863045742533812933588987354997566717586982496447203334041085352125179192621222820114625997287160890260984041046684279997412770827838191574349800225201964473710962670520387679828478966491427371338926577528958831535588274542231554722471029421894926936582104960978104401613043696752393447692452912203848870960682962061997374362806751384153189062220377427097845156862080730048888231755838751444316401979030002513892167733904616952186239298544615039799627801882114834060789284518766279592143875707743505996759865897433528695212451487120986390520041644219572528253888263156964123783881041645026576559260659317798625279779093631404234567027003540681959916220458072699058871320102956503637423167872877735084205553425984090216902897369148339753313518429561372819654026787651158344521597192542691848267514426563735879833080101345719943456110713249604567569820010002214509762912685992207360016869145923342070684906656440687143866862807707630769667466205641530152452990736880706762535330706632400756748055355214335881116686980170562664973521310115357167052873178624341711953572369554134867008752057172768150531171672783658631774268960058406433905837760505164134788776740183014155688213155159167891322040303198708122911144301005208248724391278094666395079843969532730218348732733595332253566806680575191603169377173151566493891851596694903743693595933443063286415708016441997941079580696331055931137449749315618998590905492431640301201857303299362333084020080795743179010283155244650144530963679388784901222204224983240558121211386040660760900627842096169400552599331548454153141692109822717546152826088075569285802944450108020094820189277702149355991181986560279934993827198637372627923012855925029460187818837567864428115470709038318080601245049681448873728671351758189220297586673437052299184313765345686960990735867263177328034804405572530826467918700171962971725305123044926403345748502054080121553585229471580146070446758142746203378602598180793068692412018465415352684456263682183686472596816027097390299999211847705391569837864880423576166295395172356179576058474505065971388183735886166673009515431798389343195792876309355178132252196980545407525998491047907381523897202730878438566210287089501595556730599831230898334912052610371661441930998048829326456065197156632790630012046056550639815562128700989924638512069657168663094097734456073760823387580951775116516266070757103437701253571473954720569106896106529889334962947625373565860853584619970468508270908737824736346360170870275091655392070706952697299875082970106100852092985656458489402842617559580979308523585949551475258222043550625362924798601676004526671000762609125823147956602088708832039032177390643200416634896166636058349068083463269392684508506111610796295729712653765054770736150776928730016437740848441032314490926336419875032890767755475043534054507590291064614456945959230481751649943846528863533571190978404194135221779318545096321202696614147948591971424191821667208808088975495446703084203380073922727388523265878516899382458371277126112641145459817940329600313427672424084389645251606409602395968173658716138441930073407404870040315812461550128076776797957389289923622459518903259251696033251137169910989126726183557364995808524939242458884408480173019735825075625759225395146097612058650272504624565228190629226457150455327327272450799639867607802717536083576529269673114424085517980510722810993157615887655305697560684486853077532921755548449021181997951573505590029927638439292013639615910657964066008229271179877351153819221743488596856050046879208958618728585403354952796265003191526937997887814988125597554654075022619631544936294418736746954212423215827654776305113784546935051411264376089623164453116199191020319979558828310999650542237894797621949473234466659029502094911163063100805399800640115470545952749565400222675136892297988359142911174767776458348374085265021666697879035730515200160307704468436703151835033114158105551003951327176501008261401292561409408214521053437472681297885880370940832605082206685178093675133196426168928542137791827045035831341354479996710904318456768971464713021192235822487903903209479679387104724259322107746289086702065022167205196893930161123474856859497740549417690473082583731226531441673605348170254699312864474555284908730846313922454914492492265385010472871272420421679799137039172151460788642581442841364559547435169380870080435635177514984792647279628486336505308125397220704852898543562719232333727140521558886755945974925849658561110765282065137141510847387971216171935771924271168902796333057275351159552549392798951053813817528751700762254146971266063525046429393540334194423648533349151510386024077645763403832126788959231532499110177017544684435034355693848560147101855630443138665457813287130899599775613233865955262823778559828934568217620240786090003225992548208156972101847078087138468767403625508629996484660118039860219377757695866724010614908718187114095512303522757726344182076307414287725056299314193971774983786296006605844060559137079481260383490898582100425690908033814281554857688195986820869400540569070582601017445548155595030017329801891271943314150138588436862517909193964466919780125013155751124445008439173718552148069088751648764609266767430051487280173118820986050440508506066361252845627126290881476733745512334794102237478346669263096446663464484351163805252563514959467711357858246275293264358675747475645648526002007140165369037551795183356184047354574778795673022680891325158947889266000581368424829734966249159363252101944711032622439474542288294672550066078416029766150595096250949299017220070227805953957311139149128377818539396734921386653296725929784761441924953679997276845984629973990389877953054609525391413931854434531167125433871299365500786910579055590539371623374313070782877624854711079872634496572216163921410231754308318411587874146965683094031899698270829046632606185401861293491336767624222144580855135055399668274810763076552207642788502097697580454926867316570493729328632045265039521340810985596484217831230771499722675238027513065671547349241590717220754236725092757898472231246025848478675487496595958785295441990379352059312610691498430188213058186151515655619838947575225984406292214849635782498950584360501900372736587261675999062175254609470890881307204536281466921634886201070269373619509849199346268729337800488020561304563839374797204666243546063170642218129388023819740058602402216721370797158060054026545763648451372560127020772938213769370841553014133361362703990031545848723445151061526744691445181942209775370607694644765534583791542234947263389861658951457616322210392892925638947675374856657311274000082971458037459056471415713734145200515965603523852064858233386338158366162094024558670850471949673366086972352675661116209259156269624480717621047870346604663409326114893364268645582952565445388933487981416502527068349720621233071322920324180526087345117910378578201088474379753957278415249391175135358644551721246338116866084617499511640699353526573885787557641544335925530382647329172950675405465906472330018236413725323958217810262081392595340960759508639098746556077547067887735351561754294683607578997062888901286535364177083870645803313160927039098671168673876989156509949267397404973094048270247030127678557285857275184569144166753336935630435652407024908565510850812593463307522011108693549761599048689435902793857420998695987071069872157352298269697426216682981006239873346899016264731009931651197057170060755513448786388031853691464752915360815411648363896668036244412337263311717725249244834365152261628812360204643310804359293334312440333297819971173681084992571201350006694631278052185428017543800509371194407137703040059553106514934931770570490005151913672216149240770431699581054704331951615880269174815380879431641009497215875704072725638064035280998723643828368351157874245420726590429798867027993670440626307279784866604327966811091584140350736203505015438576185325804244368394948470247761596998653646363180630876573120693027726857260446657358505738337247488943850658991231106284467240830126052482098583829395996479119964284387574566781485636605951991102380870367981047363916034499362341550589597067966532649584776250588825002319968897114644600941945630830242463955725469650061970027854890815502545728636795681927887398222334605553305624606390903936490778585771324847311479511157495530876728663714907160566160416497501651102270714048639493225527101071399878454201201535766552067665554059841893864914429118681105963782782141056625735398419234518568317499590977483333133924099185204955048849548303058952149330992983000090369047890090781758047676397176715852067372760528050711161131047976905545121985809332459736678351318043151054543748667638310754576001663357314693205279457547497741130887273111328052634885851545303196313504191889003857241792316560595161432607601739981468824657820964114330850089018730066395549383758588721330889365342114008840040339837980934705118217076629107181026322222515791778882790033479953635774109576761513045665310909592136601752748598861065880488659394795754845433534597435271988863900164974423344497271214123408552009789839658047816239441404004812758035274954986939752486310955716147578038070591951658018672288573223922380647356083504352082277952476695100671870792102424803505933267825422443313075003545431901155152485486625855073876678725330394152302728687473318250170114168827557249984568427779517581633897131277672487749251886313374633851158031997799927537987370605643069406886504151751764074094000125546842002921370303262869387829797149628656257038256838646833656192703546802109042632452568487597615099203833978871716528305358095868775874941276112179599129162866982809873797161887481546247784741121403193164337871741419984961161448022593248757730204677080894002188440735970154056617702999831277501126802410142499918203012079473375394580549596505442438869517325816206136909795928950950933614490134816754758149908578218833433274716173839887283466271350352127369641951301824288229406695508516158764893379198243445636998532242684860433477874106239823489879881220202068014609490428453696830322191948724787819917594172353336427822375224217051894694844112111008438180015159024572731552111149723563600137975816332062019180794535219554326634390786895510159287877410275794713805402372143622355737482887822295949869026193996692943616205661977879845465370322275106254591831759361181524140386636054797323653947926839846206233450189894402480258035455524680346748055061862030014310089934060161411596263275416943699077121885032797806871538590410524408288631566240665873367337868090321409446117532621594733362831284220148176217621377318725364769767241533746617186446534094134847810062047329348983383459791854924380376511427593128858487854852361884606637208975997794184009418091934045535948937787711198092171806510998750050738101574077898199195763611401062908272958463699176692106918877916507224818359655456638405122711977390018945583816225757196302067130787926503371088594926438006590568931348085435925440113904531906034390957019379384996404574079503493428415622996717619893773174834624343657029661445624977495263070512090516854783463879925559981270469433659008098272893691039115703150474063519998997551400059105653595508001668384926226637427465696356726201647101619633003808621802247508035710538009969660437308920509229901725652162198648392195167068959452691318169323511517494586720566179112043077335553882960908275149280341630528905715987414587217005721324322591643484711951532894793907004404244938542816901179865723215016348157376375022436477229957097873024452874502227211220277455688668898163179860545283142441522661357365129876456938568598595146671128177303572443459787204393945825607544554641172067800827898282066004108675038401971436769155774188613990525805955361917648291926968141555831362110872540821754608104789166340228864273280662128741687618679896042528434078812420869931160015430727144964621345669468250958526835001622315626673186190551644569042530770221134656635698658217459433364596581135370137799088509156587924857661375130065657341413061618276460471441814408648892604448189913461832583953320361180103412437605512424527431100648213165173253838197458631659203685028937030174692779362882428646375804041918449922170358003918647258027290589435138567369821327992016891196409393986454966115840981289284602461696437497322087313628839021717186726172755699454549576569248577345947181246869111645234808836734423560201661606979588063288843675421914067625852865871212984932223644723238901226583964376550217114450116543045879087045274065920522412238280643597702504692391627069528345330555168630568185246204951394141509714236800243172069857453353882077309321037322639824017038734923451218880788881463399801349702637715789666763065353258714246000790574853337462920323427069810952467087247110066984543790559512584180998415706068905320197520653577013302154393325924481636929854349978545807864398095536811793662969675132842852956566803799637792792200378818180190672048886543898966967479504832804901470984997164658198170494650307581864567288612821936110533303414705996134850006396900582903594135578428068501154713567221275310511048947093117177377305968103823049996262761305252956316142860928639076296138200421476688331080920452084808253702055864371956430787062013479095717862736976268581871980536269365354312878076760058239170416837580881929969606277819232028655599258128852885844349695740621630241747354731466348333324061026820775190924584221224955033671325361483505114369003335723451645702457742840644668687274794638802077784469198561727954405259566572349554990229720231201247687139903955200065963476699842228241775553958670303409265142530621644786052246492277145979754360419897734388441010270025342021489448561931913305380877442744082146341153665153733411019217127368283313352614154197543435543122057834391136197053993975112968024037440043409446092157181411158837944027983764521490312140090965832230320932454171672653576375227265467013476552250363236951173681097249824942381409576202159015629840481840478123378229639920010933945560875885128928043829108517134459129302822595884735365763416499488980491089993483349648395929610436466032505112373150870183769720987136517979475392858312679448917190025768143226114021716590756491092071361135103110910503938001233159886749341404929847795566219808468195281937227046543498145727830688188965774990130932294511697624357342198600224263025208558157938644602362218030428901112473415326986365429230074495650359534094811920632236602272497967377156148039055494655410735100155718341511730926565033566142050239437387316671772489685470659633797389225177520277245111916065959765485557057338485162152741721357437112619344523605117658189596518257142735166581939942388847488447911217044278131335228384738610029650925092633801364223999245842396099832320214651702567271268459631481436728939789434415894778237435929093883100559073308534392698135752950909177788203101692688433546967944160072850829569936841400289098978158234603165983300610562620738332139820935316847309244643656684412418946435508758772109319881421693675407202947338791116757325168242328253095772829148808143876473566028528863488863167122150139728556671376047191585864105257321053824017514312142767526843760134822696315304403708579693612825389768025247387269591168713046336642006388325741400677528821451714518623963272463948362279063735648257785328223940325892103074918787098071935394394902082329980438419746932314748058796360394114177378519269691784572723864241088317328560044125450133140197883027764062708795408350304851265999506398699898097823137176023531832768256868978020713856684181408706208807168723754921740368253810169041082201626615105532131827794594884906778582079550348418709472398606687812802744275221978306163013081643005258526186013747187814202849003808558118656630613181570270176356508286152573986826367148373203489943181391413920157831005261610256356551436324478014338142099098467576075215011692650511814564218550250181840137690762509566018149931994030865288842618227232313045199591949054304464492020557376987196159015589402799349411822302837187596711990778315527902569525909257695064911783363680339300502381586831578957934017553782534867134530012877786670306510335933746621267618549145133103162965231497851568579285075931341048096060004451038026115469615782330242533672871177360721235503570881979580434128020310079217402145624906230990635068059339598137703431767538266416904415324550870785653971278952497614663085657270646860934927784743712067092776015749656841421797827796325369128882589409556654388498068268824566024873182591636858074979630844835543640619081781638446368649069218513520426266939735676694187626493794209128682196253075361384553489675088407406205397080563709343333729705595919934795970053377201242314741060473990555220975762522778204304139270785175919909116525414954764808867073228218758114614828148007456861645913091928070601986051513953514142984096789843114788325973264620309881855981100809954873949054182628780627606977999024736056931373610544259520997000848312621959245510257813501290022057696761268936414721051969205225371011842006053392108786351354853186118612238354224284507041394764331904106007098178677527580632589031186805404067577952484373329802851552843365007171704268008651627551824104339010084233655904972666945176582291043449774841653936777005159975773418754664880163247982574221703423593871626682626197414370608125712937380456395170300458450396135477532377410082060174431055692077530437033710216310273862183117869747774395201944821633554402046407636993485579724838315711992723129144872305945623265851054839663086722425402730858050871962018595995338016870063290010980177412074851558634277381304890787620200242134244790257462437855677144357411384529793248934182287769689628790271903512856491498222373849390396562244627997654592204331927367463193167036490988184415305639644820492253459910884443613255652177807386048903991732632014226259502756589932771792459910841685958670098205838654887274371938839174120746174499623079500774920789216325908101586246144920142212452436433002216235968256360474315795706440652490853052281637989324608770318896693678524235596129863404778390216410264181266634362264745731829389409047751931044129912495207739269085166247682109590491171912454968452420407455556676133054585868063300562636277176074831803613049274037357397258743274761504894418355451349139700057907343607335324512020447600523219162815626753851069189838556571053102357505397793316014692555812126765875098420664217059557307844225347357225107358400233889169503260886901811845009243435381366012463653062182541496471335218452229253121405947429937188531832797964372635090397929298691773023676240045380395205291101300026785026456552855255953014348115353701152022866187656201664588910132693461361632563672808305085129904692228851520832587729758142497481987496326274920563330912702601179709672843984312793466459613623890022717751771321821508643311426047923065378577620311716850367768216790851333339219682300983794257493074762030873843282615287417286327701281233757149090849831063406877693596069617015761464958140282438805013230084023655641235972214953109699021234617038433813005757894673662173491813793071650969815732732527383168946004845960942281058014780890299284292743701105133223642026695161315141718961035913493398999522468815440951641371109981157528789119034782927290435793744113919120876016562343535870612156393370192277517119556693377685466567146603031566085728758942393880374541408159622215159895757252291697599271207851149545918495202577328723842365308445480139069078970377414483640665709291691965269068271335899251655006713100725882511862956411011760220138281566595877006075006981074780021715511884406911422483026765007538461726517612385214993330853922949716304143891471529619590700772246266431037398648908171396409686422152590173481038882563889742775349450640396754162375841508943688576011986280600074040442284799550833408003989859562262792611758090812212478788275322062015393474578883471017896907579702905126190689474980193345637405802768433501272044427312849009864015003402664055232831425172743040511700139263276686144031102800806598157978626609816544979688308567888598478846407453590519147489253073201535512692234413324328788011749888106016365669654236307140041481603829954113275486683665456658264128628951460684090341656979715131451309706922941319451985876129894098192728996365636527633224095386843963691532861920292296047847488631441706740827665967275044810556303446213370170387350678356348310851780314135194031693160089590934450932537130623717072221635899501054900127577832439038324378369417201714063182822029264691481474013732078979255630558693513448174137448048652912634056275039821340714711296908843756818754303163118803958184008155297947799335230121311950604350466977898849579508733738837756047045717424060903582144566178243751184947303861038273332353109974341473990712551893231016522727875318925688211464709939732368424171247508918948554459544156028467965251377197697085737268596852364437198176655862923867432007073759360609661033004410096558041226655132278789761939714308454109294414044930524278126692632967740170385502795751582862800376000783134393004331287676119895175288624936072184259230521837380276759260627951924143203401064504341085113277331664730288232581471382645867191548172544852543378604099673355016997924285193140635180477974810317531129961987048386767812025897079459339505202075927094736335887441306702646412276977445745662991995046403089460418157531219140429995871963614585739997090888775444130900920480182650587354254290553478339652190119933019144880907170409957025162016444836815485253327975513733069741491070034721308049465106370453976210996203809896444005451960730070645921405549281669367583506502824001561459414598729246023168733706895017643380970738710143425008516749526859087958857177010854593111341317190742353290183562253339671185410359444411401430194001407195051027412023759518189668668065532952512617035967482113993510010345887380341482724382887501541004300857569627200526926077133875186814585494181501888723355714507768806709723353161201177195500338884582673211183960975708860686594584693204330811089301423971071956059077550486660647026258831585440165938112021657160587352912054264764560009032305195269674415098870609892615923497469514424776639491998135778394589073352720752017672764652529778111137738329605358575367875358404137632168445552783897044914681912024161325154423317966776726514263594315775338892803643670347053164649814051853265441287957597411419086395179123806818778491554065876716612184357027517559829079859510406287632024655078642649665462589912835048120398610544090835642294598772434970617782136248366305841762743917859048153646294472921349163400936829924798986957368190061966061631466295071029398076425973702489087996239844861424333199661562340337987785762381178142287101427880979313746635257641901777343589493668814085788714546603603107745323816671863664587611954476551934020300238794861059350320323987469483210352353480218296635165738836414874352831449558249776767352312863803289591838100394606133863004826605563530737788769696881504545930252406255679389977567902434196322150611805556998847800338252503363579892285966978861060817529896296053022138451119524076956860638705479893337962340989029595284990441115953628568665613703690328788780568930500582428741178421986808521559070110303944578262654232506653229039901623328132952738672097717967731643135436635638853461501497058610223683787233642838470960378050831737570379553478938538574489738737166065830270977834692285849022972418256615939220536693044870623934939154901261635008496178650112549721342223539263388774447422398091934428451861769255091489181863270399180129394388785773354191442022509887405729351776123171071797668450288215975390394086266870961568108630511092324534884995682474305214554498368796480001313973566360486269632817964366820048489426321589801728989123117314400225794058476934168340261056751705813648483793263381082004966655538587959936428172493318830431598755444824575681130506891113269371154598852480815699323837965548415402651160723644296821529774706494167686073014719742649911078305710854840114628769518142586453982942937611569295220513876896129125062089175594864943501350665203212718083222207474537598161577729583872303624691754248598359658785176630945896497567722454122085530260611442353870581063312627137052989655936532750633397816974495364915719109594924085915173114643630382525074831110795371399269668131819977869566597358584707861403793965276578667744614479026507061184926918343068873986162092769982438658493688526913658787582186249291230180804730746889894677768299648410906891870699436618161981729108710640001993696568311899888814642953078210900062097539494056477405935708278498035688926010833780659504524305082938306233667883023682036494874136908874352399545756864787172886340040926643296074898298126826418015775979026431823462244048920718585300176286876902296943668588905783259013392677869947951302091966314798648969374280708098599192350692266911434561710879761255342319344595962294063917569726622556421075630290574025954623250866931538408891417284224323043154467339482781372849324049051394835489205086904823406113817473109116339840721337966523614188997137051384245733976965307362901504192641018966153667195438601257446395040957627023001855289421777400742867769589103919662762271309003139034316570088487993674157836836478038334467909180323367606394589095352002725847995687128714250625316740134740926505166505689466634858890259024289758196727193062775327674440730028933323611728850763733470567820807180966691449409098571090084763555203808870748049012136706670784021134744283187789330164285439072179405898620745024627790208534103238014297544022909995320280672606098023658607107113702654421049366755356443304396215609973184917615482413409034240880574642419733196228766651991656120940518312348593384494402880767256629892019438187883141376561974619485093689992704018199406079680292378645106589665439012919703534707245660208294931073174805678602442171908512540402012311946637111218130877497143929921287887077061155766712007595871196976077052164867158978061035963485892562323749220770259927705523287528474179414145931408893218503092155289882571149353773279335355652762031027437032610625860192209847667957967069767745706460073544632273968838878341597430884981448534228444221786531448443328073314514885923292014147619675960365791101445635974358110430692751743854826690247600844930648353200635120810313470864050536908324418546499641226201111769166918768023080277146472210870232342632442968449130573389057402378419372152942509707637321670034029022490991052523453302870765317634213972038619274961729737529776709703617842760954434650172486970949845009087335687244960088798983251566913544043455533695498611284230458516998514577199295502623876325652941140639314191593285137634515949939012682307494097912514185593676496547264262785078048773317596971477724682097013490767834850935069938522292963092707165291871026601112080584763667219648865159475907239081111189109555772476762818773962758015442959083289806855441240421557001533882669202898607011654160419664722161868898018562649934219432860446040944614186546363599961511676377011860548095222382295346942822636235725804396409748138550746501800101180006099993496627600311487089369679714666123220812362036844914423398482750951733739735841237377858892331949066325889944824352587466211887760740225704801067756695458025723078879454118987682512606696229972400499310529569786079974388432130445159103206341681210520385785776163283073141155845374530292401338936617999326302019816673304730412972015820480488002425415307259151039517094918861362944711134244570372397010415739125203929723341383577576671720270681665485386101167910704349289204973063961204971319219530723781530563395931023847201427877804097474263240689299782203739875584813346341423370890141553485339373354815009544202840618507738404094592428892728433783827850040278853152202038091342036365988598158536067384149746190586093024084834489589885942071131009851311061907687904289735256839605291588307911473017190678946463490055351593090205958686628192064705845824732867782751549237805621691538075533652941325312786483280449321672816870578309993315682727079790613554708588512150758738321272173363912817630779483444021610593470038650251870872516535700511117303016037719907125362066074631904961676833858736229615215591246357765206033184419630025817790960398214276846023678784906874766538466116544947522410858302287271037336426333708889558455472568712438718799812679347784256931850152108836295179428621825802847933035113297664616032013488117367918596693856703547468316659135982157549719907401700428421881727659155419491828478691441634381309762765064858855590707894358566003905729811603901401219897157427373871551563810558922313494970688963048764190084283491439037238950680976017133245085584362578098511823686955548146904748181551708855277760736187355832482357186466106368009431220710284243049038080398398934826592791546599191845797601688339185119186450603912635690246774733229231344668803987665334631732803439281194441103585927359709958920276689370626724598466727490967147525863003616814907252405974917799956599958159347715559730939736845030632133056121821923719192905096155963303187823495558586696416245075009586843238605019800801804153094049216663568996895816513044713875114658761815010626260434159452213793204374834462933406116386602943319459378636773623610337438926391641189168391276209820013243195839869039740777463633198750180283028094321136593804580754840763245861369015815119873273038423181681105142630684372074226249151393386183731667836959895422577622384209584518920002561344914687886563120071914985194720655775163057979329258989900043975154434834605195989592125749705726598205877050888013144432742126681818729974901417991290246156911090598295265824022441013769748973704475029560841264107634418502274898944378710612435192314748787202166878657412099826546196573849670593266258369609525030936712225092119950980221709793882319986602400852107636654621594578090419777804552395521573660932148896924776950414873157164301461185944724044614911975515204210597527762603809296171059037158506146364472586008810506777135153653380943025859064111320829450837300538672908796646375698302317585359599381291293134348880465454142361792423347191908464931990253869294169416232398525629636750369407626158641790139651264733512231278682538890787383997108384162506358710804156973760193183015784087689932354308974148600575886134766150561750789747990123473047776035943056264318419009211063481713561103921557306936663959667387696827939887549325467195508561830113111821666977202703738916552699592239543427132646884509618116414036320864658547992816263463966114829183044710362491902381749689211914083204045106237797351864014887510483134686564419939204494104796087355824274935668148707368999239763804157350066022839172735046672125057902306860380174389736309972578764401055718662494647718438635934107275703462358743279350498076674059112067462578925792806067208026221713589244445290531474863045998671990693938258611964383671662900128680525446382814992350931441530817866659017969104239766614741753609670626254512486959659096333737091718222467413500864112535811010696540112301728312987365928475326969656756534232646422791782361163021544014838031692570129036140833887519668188364757891192822906865932043303564976710379952535311183346734857390568690747081078719197690011009879480481925505813171271051857977896290177118459446111893440901182139559112871001903903799130874871379667978049331331627579142645707627953493764942487614363339191715028820294631488002256318787890726425567261284573402274027728285163834337535413463315353990972294209666096415340321983963216838515207646519705961627818926365688402379359243433098851475658532922580717014535939684402870024185796450249764982630935529201514924944602332342175981921228973872850921126787376597638795729574116027344434959511873553259080440586569136734006864687410801839402709782119781595339272280847588739530097432164289439950945268832716652338904575141003500821319938689879751597275130710279521485906688952450200785012174226764130514506379713012171065138185729619099879597469603824772602966715922575839065020881410390819143748613255791649955590002776448476073867555509134247014220188979974096168579288204614595087892347566557503507319167667719837781558686243901709985964900952259870716444158641469671775758523459512274176590506031717287844757517824866491885385923313805449733169005132623499913023844808994328413578228611448480286786975336497865254983826009096313610663376996095553706662970218141922695364628235648543215472022048493739495190309591647446853602813035938092131576558026897198706952539320259721691416526688471862740612040310362219862599943202963944193880665313963359485170635237646892488198789636696169965233151978287236654345507545421614952095145292006622205939087941714725247165549498119830619971799754385337010099830905325944711214743083440590625230731113180798545817361768490432251007805707076025974174739591748447557752568209859315019278712294863683416913889999061992865126942425947910428559812688735584679308467914151040691125478427104277882953485431826569196022157806772118102628945858841724340157362822662605010209739534344169177274698043985425369266564016792900189273816552716672502239375728949673514690661794381001894616484759109526478228979092878850436023251393321956026649871449557130715536179488531740230151320053811049777199179812808718223357483881113477824245282274414141881677951814666110726144956548795950029155462361228822185273037017089241932992240080470550301726123481369074648616769463641919946072307837275892009053628332505257004966602624781462122984825844567590126217386557489112554268752629849603907590067337061581902680358375770203305456988208871339285767760417437314732665546775261182012751629104525897758969987540700687722249131262089873636048595901564660500149487274284343708960586611670148053701141586870972757899215521827615512404749685612094404648466912846505109441086665740715894043032137730893725406122268980239912942481849680400315723564897564007132302854400334150318964964571004206011368702822269706101658581599730737777226771722556196893951329111210816744987026522698818065651278696777699327697150783515085303432435643743688324179149546396556727449516984861871875063653415207428755638373518078058477064019019779596523398684386038524524192003146633050474007671689344700264070387318563883738120858733831555160494484151629586688150808000858934622947318500478087492483262472241592937359672124323631760030413318406859261354802461286845800377683209399865640865402881667013648556513067644601044817147869027650619233701552427248728346766846107421465427037543783542628613654487351221564864907374740736768202856605879473002889041706283870943836530659851828145336127194948557610301994663886768301802863500240039497356196888338921745691768279736302433259219687194584828243125688165620328747508162880875590847455267334657784959166525902858429565695952750203745560147302544705941653284025313185628880094099582428390969470234519393615136574971509475039876907354769448072263923546459125784712426396719193082298561583201947326367888916127777495081504253578027152026306885964783189663958735177241823141306717229722232393014002659350291702369938610518379627179288895298254511315993718088198668900143420087854767702187603026214702980052633355448627123378361264993801052809618849551809578753084600705874974463817411774661384346672304763475131234408959525714886690272870994260386098373996945262579655976717909546036213325950362148801842839028549651479222861411281023199761142844859694550138419172353174065635397827415277824138669400205368134735636801165708914077833630813241306006049345274301008621548651687044602079788950822813354709388395364110077462685766949649516405089677350270231600480816048427793942510427846126915275559726267651725422480338832423650055083979548949587228004416556635431006411296082000085142461296394889477879662583947134559896832474317140092684874217454131653440895355269524367262639472806636695919808128102992844956431447874484311759240361052878515796677213623643080956224659774135614249010177916913656844270954376303005472890686752724309232933884041639234188716082602031488245099219767202610842744543374379133142160465000987882360018580453029922706093610069911151238477399219683861300468616693558245881215186555986029873738182066415560101940430643949767960241112777971983565672034623618834831942101846724522522102793333180962375179455735947576679776897106722151735135883859964685494039570235969337222493026282148763401991465323223530346950953764484739827873901732240965260377765671118786348311025059285737239372625937230624351342577474255828912568774161797932459326231026905330701147017436554397112463631692958010188539644990721131501499358874293744550453870287210034134332865492914454530767053491254872731824169318698594610340013596598236131843694243409036585471442767440947784795493907212561034729789143936516109468590867739065820777864932744581004323332516898854467086068975861875282946750422417235144477318312529114215306744309753023829902987344985885632531649904448241005795439909591645751961719219367914502349982754525472330286887199026486203175160041732864008492075233044539359433526340755565425964651107371085788510450224049124229063146799364135054770295016935641424933776164139995228246982112668896906833079085898148134558292604835903864126082364032508234364003073294085938671829060523470110630361139437673366284382435889551343805307102468409830558675652224670801128020662064032388064637481010941996210258242563478469421386418220137182782068625232620967611620648168872585813770078868132572290541569369756767337849189386450722767978450802516300021770221621600112616415704249256491656049241810689846502672720348739067366242623342766009359699506790811377902090982828206825409072800445099740430555767879708794736612126675087864832430104801379545276777124901800114407561302651471405159813371240855794017623463862980915928368017607149739907598947866355228114127052827310224015735655525296334888262230742705209954545645927663965361780364537277537761469467827883212972609237580353520494181550293543088964742735639230617343728362558812553614927333049614579775276091678012662085409928506484781456133872928564623124246367263190534803673827474670060766637460503461053187374002758863848364590525084048152849910216374386757595666265779523191911875497194081266685570845389287399841291255892070969616173093407429635152487830537525704590810311760557836196224653843143828804989127493040993277861710123547924591042763961796606764453884307102540122215140492751215684895188056681362621235736201690050864649225354225131062891022882379817892326292344179448627231232131754391402180512084439308104114875893734155673463846278341719086081474087393342557147811215853244329149711456826886092366899635206989307408173077458852772241664166663867096645551171424489251799281528375653291163510829127878449601015948583504359967916572740539724883516639418791798817480591602329936102975226569329150912050953969468239116750461230682761966427733337984977575222736097164805665580434206796793261886783791676266227712402212542772184808613340239719664098840262276873878850170936977114599848600320093272850691765028649717224208124345983188983439577142288051617439982811050816261388166866932624829561039118116228009783558235040213996510891877392743243061905251646121267996929900598562931868742798544048385351547323424134174711109926295357678694134854611361112664068210032503350681102182361780891580875577588157332835473112738301632371355346192352883556714539702740128799329117719065057970493469541278474609332335480935962419522330977976582629472525261559864362884263343035890155463967907743376410134835072718737788656534384947976220490035513357149274047509127916147955271737537869262715672918844933548804548564330020380870584434123085954957588463299160160269552509775764882734081960293788927873597585176872750514117103860852025459323273688353277804196261409158174114948393292778427651577227811369268608042984355419198565424618037818082879619289645235395531967655355210737731565994144757251103549934150601813675891239306510623273164760723964229130431458237567171434652361828089405339780820805353091351062781635966452123959416353733907464663036403080825313881004705153831625673113134000273535778137702914888895459628227164246462884007255672956251371360682118682734255297177096396438881506089511471614932336498754329939564900330767709789891795395852027614904895825988842155517705398328723749905050104076890984911947470740772156439640985437342499565740758667075203948612496040040938422701063199000488408631442068893981744127099298256743520150573981673902753001832675387745015261998604670517945441175565565217877783664365687264398711526961920347824374302473063032075316265758580554907116012847063135784166102170921354791539449765243533859554634512497716553918747882102217287363730885078574234065631903845089166902188298415257137870673645173442457915520428022279265811131727823773520512757875794898791026429109893180013918692068413273312500034078810534262211953625107223399675215083095014704160585349404324892898155187769196821190233422077526566127633208711094162045337342205417881745311669122309271775616600882688648233042844966942191279603191973981108465954105081541864541041983328071041150331973445430936684680833939327073077810800362053994266693771850737185726698687406806145430606449649170028093150032804716427468772099862696262288946402384700431493904798341149832550316675587540717653980563222340669365179490457130723258099860777873891704685521298147605480027805973277301583584466581906231368992105091818573750506489210940589329357113166370071396505322197362903739595079733880275200064726120688543587456118165326120549683468818230249123831688336723318314502406281433396359635843223170958144662712953310313050256968450685917580195525729184108936735099732324736575595930557836677560202804193025661674128272420247563597773170382515033896712150533389192320854003958667586545680979793813737364138911204931726685586662469341860816737364816747588617248226197691244187488090762767262071811969976818666371153291170039148277604885794179701105409704417740054223454268699006152613920968472919853482405508943917413114463682852211549351611409808705005108036466774295554544540946757366037038375627944476644601823347484558412710227426993237263284536503938465907202919090489663555951982659557133885663323115093516527003115747710221082099540984557974589048440345054019236823815263393560664206825303060258213482786019853125903883285599124106987379489218230802705599875078555219142227610149613451682901264692411658954344724407050891470156431015495006912634191252117376510030843738128872619227846016152365309740431598206180565038094686044947742919731700664837238415161648680647431186969047153125703154729815591454211376375551404627305954198207887875455259678823698000798256601397326413134208513841986963698702102417427281715033510036690972661319011368526028144649657198033712029010058514832326386090421188944147000393374201503419663464142005276863174288804835869043931780660877925148435680037732900067771899899116786164440190575569137842319953132074155434664395711714628288150230043279766698786212494589336800481519113274371482486617365162233164707267339108385504025020418756830567518646810835235834254454867953769057966952116457543197110859473469967467556602956488982193657990772867420731363360647188462504119578810828351701531847798173611446359618480968217819956999292391719848101700871451114285330568272188026161538570473636201477919870941127641714675388220786550875594051043292505221512807952647544416599138958534235674529037294230832642510493294129045279959473438163806189805747673593789712868585260480312309546658119905771893204640462600374140399088304644665444413953768183877820679572983640386956455700250496128690075681900162400580270546821865350586971196953764058579821690003631966133572118879690072191140709509859462293886373140350350740648515926677731707050747262611600550200673807618342021007818856197095856610840031650574913475775135346472734507263848880341594151479779457371609334233488227780121696208031819648273421325851477828592321952579511059858403199666116013678029802815324716168313009346436394026962525782145981426342536766186861951472333252790156505040573696754619316808009123272894040670652042222176419757638640282134528392111821053370287675417433658498882590513658398827527312335500357689508249870877888901846934326398170513523863591366098437062130406005338259088361281800677226987347376150507120582165671209753983775236664762929605372635522860375757029161180651753067148946069458206923891667017155762261320263395127141330739342460316932054619562705811565944899266119752106019788835016225007510423396868866788745215596459176037060872089573175176422100752775074137936063647849829966126471384092627527965328983921718569679614190785824829393483527563425924392783958957980667901085980670272872838411254520592590105506994230825642425175211256016132036850682906870859245536273250545525787204686956150749676746097093897843232056100945574291374107951719315948027671599374015553815525956022000419621422994468373160026231992413688675837839211760889226500071013974299107214334759710696330923682896529194839575081715636747938654225183544328710161306188312629278985232177462023647753378116657736393427545924771954184986206107075033780668158978777993794780350853454449922385721307036078370240191723000905901215056699427298283763604168583442156447281799332258348064590673795909947212172288220287572627175164564814561712390078581123412607973739786260144968007011315638429874606889194522437618904990783831343057379941228917682471825557031479743470965890768381077983323870486602711728875100529409688794183650213780709410839339152154992842639444849243612118580224180357487176982903408996549247607507860931581168672191912628925164718391964068746327028335304068447915614662292914826826723995364065171804461986043850148428286889413567733317628752714874102678074447198107350651619662865632505453865384975578084368296158460406102521633782534763460982308678752258004666633345396061792249212548816406267928168848362711334948092779683124721022646664017939672115002469584847264008429504220233221839024055853150376092312974191672380636867222192564541406860486269259373543267029879532637745408946532895051960376514047746154843295410807513199183690744173829970003471509412010583778179963178440469837134707759484655252526892421613289177678810877666940941104725663000912809948500134244385136510906593188349733092666188488421549269712662469893459328046186737475216737349469400817628780268962263130740843156923802652951491758917295553414236198247454339789156931353120180601806706325943312199171932594306966276516916496215965003871561309297043279263703305420022859931909345998759607593949211020321988071618098484214882602557082248448122700718950793584572646637249139771104313336761893799246331082279407125158586862352551323903937778749883315848744496037713813701676973302279276189620676405192244339034528881591022280388083508117343478422697860256169138915570903221858638459716831148939036573835491332745482737723456106899173056106370746238810301425301781983290279959420582074815713305587108269451733791461646841721146663045209791852818356913638375692543654919792687302402680804683480718888125367071890339606554984533982790334430956944643139225884060449100834834773607165183882394190614618950600749195806867199524959789646368971415156735561001779573897547141047936030703820646888724199316112780912540770350685194968694942012434131078948564336984216933517895681939260795961908020056119078822126118054603940897287606256183016212512781955703353523437651578436873619364214417883144514306730370993102267859050519328813378434345772217599400600724391674381866444501144789599879976176300900709916017252471367703424542385988264148760273220575930933049084483631808172000763155875830225463706247953497484939596856044572143237020592876839194724659123117461117010724854694188949264519361176662396715901297155350746075121750422636884796290687993454688064729516488122865720520096255569945509520868736379278287799495877057780287867404707939513607281974988795469327664006071256946176557741171060171502280643553569869916046277711123910475434810659250377835641883829429381898432960647745265962214251881717217459725997226491190337822081898410795076361638847806252062454366305994322576844427661786043764793129981081731061365281063132747475184413232777169988836730635246264326678009047854569694874246427639815790836436754568467806584965184591036632791567562634791642495877273858834759887932754416304959345904097489525480974732361525394651433149596307754629499876085219863704575950033304393193768451846928553512320059025312514252980390259379755560148017279254649265544633755544678449786951127791890036735867275060832925695981182994985995924801285915995667089740212419501807351878454470302631630239936713052867460502018379107809601444933571972249788643349398590610424933409550835952364526009169194199742284154413174607545118992164462461097960576120019724111725541781275530371966624996495418714086328447519566729493724814700438036231928025416878862670726339546232382321554321689522628936109903580322216327389755967171793192672163189277597860035484170698314679299888871162191470909398476061690698115011088874282977231546916797180455805666589742347779164607658758745241995478075669869088347198429077958269580093980325816503722874065557943269630579249462817502274027942112204011111712535089655636893923385638184506028060062717253246256734103869067986255399663729070046784812976093401969086461347500703324425307094617952839071467491763317042287116592987524911366331719482082679143319549156850377720830851328274190238456656267405701085469531843137007689730697302450650017011853006283224247392251763692209097949379921386403536857532448697733535782532611364791020470527270322330813795851350839310687321020604347532134527363396454767125080914644095639703599785583319205705381518972783917071338667209931608528938194912206530376905990418705281511059298714641554362237890629428207646275302436890600503273250163356508543142217533502591953505038242469113436702441694457151878785530842422757892561666441918195303122897958739743792915621536705678793549696439312701827447229167307165692956103386719226436361836505608360791901376277361904035078714847101916402492564656266316993949203895616910219305650009867154021002951206274057967786242829982942618192109316103573132847075310528269668291176169880465490376421713648425896225899646573535776738779587474557318013304083088683192021103033157280741986371130752796557283842545631935392238559112399020148035480808787891335572109053408964982903695763011849344741250601288800043979952557275979305279292963699600770460456142466510779775356031871939556538865588895959407700993425435384695532094908213451380087275003085532296342652967223198070692348399517972094744129442211547436008348080195134779214303884557823216835156452122220503121191007436346457777496878803113796625779184323840667455838315380267012915380977162302166719039482236928498229957800603562401445575267772975330542667986180375510759709593460937787929707513898610867039701158615839707144248679744143658316620452610731802703180875603703009523882169918447771430117363399301094804646651000955371635259659401936423087778209782163860538791813814663825762729397603525327522100820874620899212533767729019202558160795126954539224700482555725983725613566982473342653990659221868582563762146906624401433748270534054570910138997761300097188528036787098554122467665361548646853427222043273395130764698419349979830254603210945271161051989484271341575174991239370752005546276605819347487847181812695208702705471532562247170574323161624059410423077651458142542788262657238222531999813726337485698886561405422673560893238597465200646357636948970167570324940080480436509310478306016022364195353246262238471619957023203160424826650691891984496517968744852380275268232844941837320539847433559402364908533297234040534022644359263734068454450888926081783385595477095296124413973127098032881231573196265920858545869008139294413059698813062590698772010344183253024738815292954962430576892328923124358256913730230476871650448155967118457255560572669120615153957637909296081957241017417201279257440076908013140432741527269345324196194228461342272151070923813521200749163400006966384719740509824313634217964842455334302115349486439490334857374685073630134583955566119817838196679625061274196278186512773996200152401862449635513274366167770017060786095885584286157858891776819049345882707925162506285775194843767636157944237333184050924480337387447051361908009204423163807691028905296574067977738084784668970815334841345166634767349500027625356025247486416978826137671410863578062716572116761290830631400661700101781963384739689109210479956017931619868515700943980609723698618861244514487093698022867764142495810935344391472209864433559424036987051938069630531500824875708151305599455491039754680542575587405575628467943786621069430199907438555470540078765018781491941397991826802760468912258834837114503864711952000643750687254526884291935796823400515360038414733919261253459735455122313767379295886848680401797907463518209568758942165076098738524711142215763078422808786308658674795641145791333021912427417896413943235879408595279382294665858548958901575763126452543199449171717941631087873073564574247532468674831767070491280485603132923131592776901124041712288914943550861442947851912033732611566351102946747461462548959703142563329025449172388153129080614462558377357726491593754231183357042070641068391469645961593656298614676309813867245303699556745167334071269285951819826297071566763968992658659176459872242074440263013126793503251562329844968687757600151151765883925013605208378803545943239610379786036419693778615743408397849707816830382357887526194869833268218044654675099518381042674110055314731126089963261439440929903543552344087027096522893394495906796697115199760930177472283327102816938557681339239136441103055945743469943252363211630390540892952917246568683381109131240041985650797807846802565878441096173982382677103535969293301600684143608512749379841075762062558795682264287310474017436552537292177338689004802252173865171324721462139915757057356837000831814112764198654713385820215715699159461808342312264986818911969097885768772658952265526167258895104804323972455390122090538568508015230131002094115027507131276625430052986014848996779173979667869620119231651060901701280332517152890926669672050963030726056009565190691296838149081456139586227287578843190672909282028700291705400307718375413402887581184301074558821582486524718720576634141094948922009698232631675142733411724315519559378058200789230320628128709463556705675694476965568060373771409553122531332501352400102283518045449718332633450990440340918622496484555054642163514574021219453123497049450583504404425205370476793735824818671458436226836505272637149736324535170831145345562231829950680556813371924049438359704641824662908363581678373163565170321368854545915530284024372618366251383282541451379171729928749636944855800864832654139720385169137601236852499441833330960716998997676820331424525947353483952619660674094543983022887351457630654577662699005652494423498494470500232137235954023090418411925116216406566676181847245955207514551133928994989342817464592886887675968875230223750307074417904490932407348592353763720815642269808237910657399258783861353014297021526743176776046474071432319480835389653561838218142242875765299847350267993858650382381570896381848181536223214300316945823181342115048053561962408056122346542237084171071416270324808939475403906035677736850118931262892794518319558225602885758104304521892332767312545778991714919725707604239458319525032790160098558153129846009625387488990638597450921760580866329586085049182528647470548038716467753439878477916768132427425196434978850409524864238562692862143473056763594957199238523908680220068953964619510684099641282509883099880664200591161505426385271557092150309675320697915594503710039310515708508546984727040396362898028707417724353058369956863306561210477810721185748399210486117473691336177886837984449196886867660087016290677733864993353431816190493242082583763508079712601424489210592514709443127413587000269867573594221670317492971164227859617324062158601008235112769499306601882417698930451220291306010607237889010125691614638759619644347971838983842102518287782271254759128688803163645437357101135904256257253168742148643486660259531439350632720920148590546866832380113445793582262208123492499886359980122500325779882340143063561066968436152998536243367732228063712417801929865821231569362168857585982775942125574250860467155933556829532624744611604856790935772874131415516681605008752252063685911917315337973653347392152277802266895215216348393391064891893078828633668658830185806389145152629700775693010460914582959976147023263395373797313877573255870710014572223908782054538458077697713872860990738763413435666866101132358137919378042524724259213001732643630030106319326791841945119761133844263178206982749012094619495614185020776899149348241688063451970442832830627952945539230103541672730288827446222904267417892597822345378730251934715395754369378625476179977424172645805526602251572899799873001605346567267254087917536699620451773887320725737924427686028157342892910119086046909371791700954019408427183538103178322561569460512024715819102418336719911148449152947031734163020531927011307621222046894762609826382962786088287422524069752157348888348194133210799334277548239403037243235387912473595513999745745422857461692653746357858854230610647348248391181017166242685652336768641726525312593986841742682751309570673160143745544792981065608359068258477584407968041483111669719028055993868382728730778657075398794708479002729963994453695758066709029604934774352243583850272428424223041038407401875853210455709471204070497611776638640636562006477645722727653098706866174597133524824547260911094903777368352952904850618791795256109446254263324750293665055876233367356107135898177635439472202126125294883463083320357129956902504935552983883359624010496111750557612010257140011762505191605034502568952258905767906063793646999340785560990518696696710282127585312650890296840703553491081948966660538828101089347846984713010416910247510000108030818402230963234027605358811414765701739233186654069412940943941451929071513721073362963698043374974836336511067553665065791709486406981446015916986364777798840706834057958268927561160928935941088812099688724892815395964971495237309295109893080640631699554778887554806265509198168995985003397660517301267038579925528751638216444273418973593824621592158387471007501317705876508118058571180326028501315900118348900975878962492165050206909083497327446819519074494017332734326550458989239775196050085311657892230978222792127781952065247519300645359458594032028684406270901241719420216378704107671333493068354297797579505572041334298948532772383727614566249084836936592475595584633786751513664497109978633561176454161667803772455039419148624965238233896910995572525446927703211195060975310416206150860977984246701662696786740054516909180559117250194727350222351571437829757803832366556162560145683377015342754204465055890227984641671757386766088885174034713893608935583711058667580789888920667593076563751069320011180513193516585442399059185775073421347993862937947851986807481475547997855279547499642045644857795444869527397903026390826055414064712836616888486556587293895256656275332985317893821634421706502313024898631681868690518775042760510996420070717446299886658410065781969012348609633884596907359083756847262295008703230429494205978615494165922700997459526417376442279364078818557870306988938130329056872110776859151466098490319382591872630486739555528882808668364641808116158430264863820697884060832334602574798541762066523522735770947063429580001407660493369058927816467463851883264112435260486019130701470086509031772383659767257103214029240542609773451732384380105927071033798581917343494400398676539976180831809858018338207512602596446388662036316638880541968113544721914145375658426440412334787937181539536311813106545895309534009975810965799957679983082260951136992697060078867081554137192585631596526327699207232845088945300224156627111961179661229048142008368952910764325761820052426676075409096343508609505379009039016336270865666067502514018943171121461014728575182450028799238180122858328911109015420059356557912015708410743653847777672947877000300080687923134944654115734267109775546442294516683367375217209043281012543536928877981295100399836648528759327969477208917634796379433063542197293556110627588885484826407270477821161043271676079091543739092886151984625037579296965664514680107396064252597084640046421507043548658140127795562963689564989153120488329347833205184156797581348866404797329953894317152244851429329709483020227527313841259721590053873914690532605731205142993987857707078154470586899075345932601209119752622106025576124389674152646886857586886410577925762251719328042281752550076648677329547077342408469515346048776438498189834659310804415117580847972648478873249481758986178864947297267695276962939438727456506325483446617453785009996547073285966184560882580737835848436122174788629507394772135947969436877080288028036564017224204967039607195485067087939797259736850711226581385217694619227078034307174637334918484224648514238782026850166394408502103272318039098551080734224071141325547992784622937334506859761513974768118794871438381225107146434844441609954511098010689427406412423338988955859961835330172440121608224490313048988119279032939401293638377464862345866320190459246761723403123870738071893688679452068268432867471928181595023632040812900904457879998441073360886929969734011518537678087004308777685676864082426102128586276006283610913335511654641019138399070844911479785093653497884105641543796554582122253294501483192214810315120644736365865229266020889709967378941518766138251093395675411531832170746779067956485496718923833939563682485098722073896691778520563639233096541463870168531080021359138111905042624180220986963853324133616721860430029868762068044910363218153689093451476768549709225502693157042574877046156856157429231151504859003998703953748270475432494381014737955227667922272934879810789300601734031380753222890667428984140301987216384860870484547439657583721196797479263142557926170611902239520023627035317020265819603867561050581871576702763228276664439372045757842475005471505245734280371759714573616613709355960235311921375126940513341271005000287314117140757425493980076278690471268503178127216515084605567341758218567761244410544644253193578443021644824971533273827295454525921984127497952128728307185228302184069067355727133544279454033923483235444936374307354468835962122924284625401554535380148936414875145826256316379828187364440604760808016529076703177924481471282564862129108094075414072591978760468196115843666048306915071477370289256706489818702478918074579055282596271327901256977242221851545390867970243410502054020245578827031053392268704729271133180850676112581688087996502622422786520748218896279932682955577055675922255020563537012388765073906970959405396233520713398915175972912958143004450050805185740082342481531387109211464783390306971496153670448951880445583457241161950230124091563815140995635331402456909216739947911520279029826303041106421062003560511674005924781616832336604712983917336544139430603210731815512576782824768438216475869534494529109004527342891423379192361002122821405541250931134344563337523816120067750331929564195682421177304891838568440337717529081483006165927126258296571040701272759259281070943022178506477753287519104372097753767431466165677015770807075916451488574426703835386835118457523286693571752650366729027914379096844904364171212600017813199841575532556693119680082171966147691199948615011888547142243843227827551991139411104865649212731309625119319485277441714700606905740765096579928463372480600622034072575456747255948099047613258688466221392051051940709082389432321478936223664439952829682862156874768984979892768849019247248936240882895564459224056469198863196874919383231186427741045596764080700313844515845826524800371559786339573501864516324531031140643541789011890559174786236700265510230272163329078443743796526720815826196863690247175566048117066434668002860139073646055127235666067687745030683572972691349520464442512498335746725161693961004768455704488506725386884530032965146786892798810423635817754045487313598236116386916690186993845048029333617640665694420102584342913471037640487819068371398130806483696025183820306739973554489771324114594008974851291134242346169451464821327634820102309211984952932387117603244738586315187022554192609557188758065762081634550055304010454737732491291828147897004107945617537117908558758602745226297319428052232685355691195867341923231675159569582542555216394691453857650474296428435130931859152386822556988367003077616288054324476912252848575393646743564124104620684835432611363605719132462205877974662025591587803678373550853106679021293862679344464378131259238344460336029353717208252769310964629869377074922862804505026956054091739023781672190999773061347906768101185061610988491926997812457450379847100038156868985575105753917617482239430442849119965518142690518696387670936256745756117251769661458185495619448047512437375624779492626981423291137078421804529914814194041057866280416524299009269497323474105433459331284245476113656335750199807431096356744068547734685120735354557970703265185281321671809532963108019082702719840745963538056435774663197429717534797013943526069311408511281935050020835333847788819871935626921268093554546325854457519312539449549702788472515881825308995300163863572827322752263869844038059443227557774872064225429041775800950298593857715412066870766155287210557740961614077086735369817215455158119363615349898205398569532174858182995755491737184631458025599835752053014563301164611409891069752110163065603287393293538329941897102508783820485499545349964375142962104876514251422566214562451600867635692357122334089843687804185989417404219620717212738466499154383525442048787629221476060548326340446781036692667453046968448451440430118977644619149048693908258131660040697297550982783918985060070121299059254021740644808642084807807464327931192681816287043847034454189552481804421843989044073214466197366477335224410955122711283551336853714710809927227343986113940565488912119776843813727551774114508561399425838770697096231138210976880940232293491717749792711314280781821913246325867541077266206341135036396103440333706788671490528630998242774100095337361255401339018317422179259496508621935950926041932393624196563425217000053845116720496281563307415157255176630827072004714873775444629260999577610539184214015219635636319279298177650683717521353648754017186129228180630402596277548057924766024305226966184150706969520068308324203193409229199737425224460171663396156663637753427743310940986836977342830435452418281945242433461836017401102124476601144113555193140877031855507221250004341162994412815025248920271594287814095877912224817018280795189136428827140549747845520008790607039211821942324648016224703832827179518996249475365076719013425810440583352337462522982409251812767169102129667249353538225819978304012722303835916834825738512791494738913837664323053201668255792433400039257176537984321290411301291061178094537771574547820948976730580135639743935294047209598304656251090972676858898596446881899804598912198325102409362515164718942322353938256796901079949942780308170130581350132644424290533496077355181456226756809828790183783414426116899767997285510758931209420410883208825702646212321861497479328127385215754502002435533153575889132084219720075801670446979016906701057275480141743101917099404464534926870982585900939632619181454804811197956152080190566589426778984523411865565558868432779379385191599496256959191237115124858870778103271047677655591444406870960993719350415821630521557490741284219932087274590956645632694372609008165538370125548090252796319876281984956672531678999102842053522782302827306544482587568231669002935219537515446169538386227712540569284910829328108060411682304787301377936572877828773962074071572818465331066174222077422490966127178287382737116411121541135773464582304533073573284082969574138993205488651970072617774743937411739841912573601200645706822454208073044169390573117475569132587491876747735603341521438182180571608917879545733176735906959890894077529338105501157213129030011565143392746588004453615255433416836287875802140680640205177082513914358445694776531180186639261904055467159296829573161350590009741699005993342209549050293140355615603903303065371247226525037142966959668924383763863889994717901779545353999743996989915095296721149066171141391043078762910288975430466210722554698365514288108257410702961225996515167578637823582170936046955537950163453540911999733990026712824404209672220834272051597070796812804809414889890725426855904234508358015077000539623079507357664857163846736409806844082438139177760190155320357110978330408006679200580827502077213644705530247505761802568009993804487351977498900745206264641734901888071259556047897632227666939820940411200702046149680999998225053867763574556559086278543363533065154940956555504655323140613661015909197557073687355570458122322711239061752048812791758124937828087981009586820377961582180240800731620725634538627890451605671434894623301243187166050065511676068744426751479857432889502390729434786338144427539707154576117611232157073964164722349344955343775844224870858898288121279434362299237251377323860379388474590411436010299058197680232339554507283618554926409726270543783142514091098412378932999870729610658193082696148499495010261989026981850293482182734874957661723342310649938052350291724277385263169337610234655886827624799575058190997764195240305028501032850168809140380526664031328380632205708875469387200875628062537884942694722229183982822051889282395547929919213620868987237748710765297457907860598750078136066605135430664170989041134536776398344115482924792580446981111654177506020952892477560486804379008821218235096122785266348995647600896169947773090097581917189596634223098945537603860709309913672157760492719749544410395396619477839271830533334912767580301434619071149955534691136384386500749875447452244021396302461136888198868026509071589734208112685800426684864577622980882712100749627001880255839364346348105481741579209735656930712503856970713052741300491876571168744046319160612734249040903335689074418276252439314386766477734606964896059746431916684207149107996774335670842017634765406854994352378758692337436885778183795148267414320851344635300238167537679901480388637713355100418661524497601372978524344845920131768326738289442623120678981166497253480854807580436082778153609419543963088814580553713747895512564400474060759394028942459849058730290057691367092065870058574161100041106335850471909923398947120984193328271845868203704901311667440231961654645047029354460252274005677896425408202271628483019866665198023865217832702118923651776753394463622288658069276729337012473504887892749006115832762038053460066727707273387566987975424789746280128974575693457953566889655900249954943781710604619420925253121497956188675205430086389692253295257767004629305951608020577152970590255684153881865096360475744181549213051216615531196532740339921563623617356935239037652075330822428234797835971986837408297843564501155098503202981784895707297413578849641636255514457400820357017176326594417235232074883253560081143612937236985420753913032960949034906214632371306255739776691097418684729613743825873895735425236377631487338961196686253676494467477373167658575255706991884486091720517864290734236465422940758834975555888348767654964164284337182043085808747203313156321168929501222377194168206870507453223288464294225551554522916960178680341427940221848809563693170212131511748421032401883369952740192210490926853284207590091641514985868765075365866795878780236995133640533995641252578720337503542125714814051425041697719230525202486034055892702472207527345172345661943555734579094420201248773473758354570704678552431217349851606396473961088337468362706120019788903525874985285949151370869466170301905160127198631343652907786674470802791832657446360554078967559008386458373609911308517858529820360907021248245128515085325321309819804129192645797637967287924622342011984163425388048796394879700366316677039899363754427338804622420295908962204340090153873833607515833092749788004524262282954928214115482985863915337478516579251052635195793753524606546394337607874276621788822567873474942228941592117160737722715357629659638494278772770966920882985607598095803916803086369043825023895135334443902660064171079676237124374381466645094848682782658130458802822782256012846590131705743199769252106393750659194953358330913168626029962141994627168203409047758315039618280050592015116211878983306093244680836647597480976972979162642636091695707899844139192531385442366621359189617034199327746848909918596959271196937732300920881364014122334431797052178306579789087855543036190867609050836088325397521519469997362045864114598271270818404090190725509069241186715326954178784049441593388505303237276021357206015038522292414489483021657990355275140077952090447778452731285163273994242224680747452801248484269090678463300017900933792686295690232823599945898797658360672098906349794638758395405388854908354221482273182570229929010198822889854161996060818316302468275190953129509169971675671093016087596710036924594001448524731739729345300787255825196635396021204418490811042990307121926548461163352991205166793801585230828644600533912813071543995240186098830293818841214867668666111274772119677762614882166092526061424225056610806336093573464208806884515121183953418497670784665145025137777673003624297329326710895938873629758237263922449036386896265648943768566391320565334189243390008567489161491250250412105942696641917659243766786814323738117114923781620574994756989592929789581217988541457591606692243424716571809606718070419219844002891779079555263546288616324286144801032204697866065093380372710069431751770262447293640312165428406034631077731521524351687005549028274345714151111177890498293117737019079829718476704980676819439949464191812060538962255356218053293174473257302386132932219077283679433686817013132863921301492872200978427280534131169979068365352517255248904061503487802410239258629324548207840137964620089132686543282560211754645781167396250749576626151868816534734280144710452818240662745650599369928091531433099151984828477065139349576278377083022645626787920840959206579460100160186943199091538387900422972318806109855421584724313099128109826792893260114225925756784547501754438153447610980200398470140403079342323381387062329041655412494020493230421597842262303981331179006896459319206194786586744557170916075769136632244665028553983364491871052823132370753756482081044442059448013905041091547025114429678697209732348215127192747531778645486398644432772312968994982257205302943069873380850542135427301982330286973227556715546228430350313182466637829084207945552052652810909487988576051427248169931680802710512961054180555733328829566995704841969394116127638081959692546991989798863310736064777651517703888468702420509189727195629383372304538834924543523229546316666434781440400135646643140163236525068382365878967516106990728652038941612512443158458185971639048306622863665113932153776800574033761326760117268416787359724546204671818281129103133354530469270649057940486513653454266126899223747695029005480565644301252556869747882276870605146000152128329637076327100102072107593570176399378487149553297049356253574077543751582034758695897125449838618804339002293999854264307138224225173649631610856542923156135741448145301950123918910100653238401394868319658280370001086736914373733107837172225343889430614386002979064547612391993991731146526864773947698304329449637644995880313443097018837974498270325995812670191477916074778687155514967289490858290657403862783161378252770888785235836993819974744920239683914757854762376600343873494829404899275858336324918697798078251926596617051293809642461851461533618751949312533406864092833905753987064362902240370712711654027319360867424010624021405594941997535494232685457508053770233037805164737561859178077158161066467948815258146766174807146687822191760150392269609143145661775449826617878115853365621032481442220307572008474587623577813100713034419659091970932100867386747002661723621473307538464423171172118864474345345731686609014308548709901445512530980494978534126181911154059660469351711696935426559388784932644050877357320660002543274615562573553382962678293815399755488461920563538286067433583863477597187792414212387376466461124328616787193348199680805693473701017887695439635539718885377913511382570076524630927961008105165944661301208759273795298107525715060267785976328481124285074021046150338500529771197827581299024270106723567792876818307011070198653934665815861054870648985102995687570407511246920263989708776094000005791036656194720624638333940698510426587414840085754744324064930922392650368169798692333340974768038765705088519544745873308260015516507859317185975581301755428909302985552504368571672670430741770058829530202393460650545350068757015940784538541408462923924074434193660879344030807407692045493820592832976096956274870198352818652044495388053058873575309019002608113580380799760507172875241864176671570315495410142134526825199469656579074261428515271162634140819227550671673492294404722018478078735254656018893011769335036738236045046560005248416208629223760968171006915354432683390890600433166383394036475322113596138396630501040722495800982612305601715026626867435916667087467310438567388103154198053211799559285978206066716059618707250623306879816454261883602289162314994938085621516074820581920550369156464557521594288047028317218507605329955368251214479123194161379842829132812162526459827860133943792194059636809799238618537099645890148465752946354731248456723977002693586454185321798265158061573903875564300928199507364996297514783376071259612640277846000934995515831978839737287328354853936198887833480410398881310547590321639738667813398934148444251598509548908120558077037261671434885412499756469850553736591915881796805579105356453403563908126745430194024596270019349928835183173309466872950076519391427768567228914514604628520380654708645423014984649856665689058119847111544090476886541307604616466232696245435842566938933482206871425159965051957483641119402924913040364112725446683515457892705741619906918098416394277645788532444462200902885122327045281766253108847370064202436827813219123489827182374368194718041010661617567765000872876610457248750885371711814104206195868843325688816911911140741032265552771741799524523458830869230438498087741065744296745545508208489933303562080984657216191874291198612354319219184106361210258723203639210120919703303308800306378435462742225368357003144199071637412475032881884655742282815103971587005249580593365045602350031177835753647616750627568784612942762371162302021764419852042403141928769963999854747968962316577002101316832100625921042193474772591222834144531112428680219770184166718202019194959876743661157609230409707726494936549625232495014691941107282340942417621176651995096588227399430428817319344535113197345012796271423845788358932751486714908746979014989497868662402905054524323649035308638661086855415852437400804195401674270533051399378887697689543564847991424719408329329822978368225352487262137104696762953108958478004030103097489711284934672596571979152503305904664548111824278810073623451681709670062517364584235685285094741968639013705339907309452123909733518607640396655146230022338978628662561550677041062777904671304584074300875572629612294839505637722423550676412919419279748083225095974845042924846350787664952017763722963065633515042998917949748489567953395056108753535488552239509086890347135920740208223922032913859839950977101295207718564440409709278686387277045747203664217652874873740638991076933846437749701777952046243939791691348783686191116806887697690045017648850357043581198655069156663122789459497297623327986636546200627230922404926336525014132141496150402410409552413837671574220851450426816531819191795422280913960873691206494344224746324992766445844172235640573071577306693104299342103972994407181035550685667170456261137098562812594021508406518617287551509309711965487125028460867571481594247362082449886898271400050453692839041918041732580189483871346522754022638560241920139634897300334246117313377704466115977911786448382754342091019335266169123294545564721984323368432411512592632378833644000698816344912575050760408596300321561517437624734596391174821286514320199084316168415146930570923752846033774357055636733854544819729852822808721543237907745241619063582272384427688596325233096367946279074207886552879485888631625371885362807977958120184466270177857666236739281375602784067828766974354644751407035931427466003760505865566234396351552822033795849592543886887144416457464777761898087325460903606657856872711884618159202163884232189766272156249223813308068897902304798164904404027148224765038648432893236229631295680323158313867386215132739460342551658153680028877920767875511772273086147843208115324295225070624334918834108884131134120539564204733803761771239432832020163140190829259608839951456951811420461109242471192891753316142658030613133211833359943303027395107324990366771507682343347718581639253912573547631970650221906205647580889773971481888164886423415634828916773428937293701574658650410951760001284748381459548953841374007177131532276452609060092908520775954415168350524136972229232490702978092825335714731523810511226409761743803646862919367934463837270154679095644492698567551053387407569676652141344432776059066908519188689982637528914179749960710588987816083751505225189368383013211220628845640032311161647165393985625642422912689221200268089492402713109511040138821276440343709856573144252099857335203476479251329603614985793249264975183550722326577065338020179845503581000325863326749919131088171314155391660608544825763429592629149992639678498056008048559764795554419446903795550010424929445506149313920201804376237495900326684448608324563382569881883754104793799972225132662659174988254742561737142460077890676981481731773624678337043434197772702725985847741452999870210623606184348744219565958141713941371429039835174858861777141035069205878903107274652452203783344023480559633402605383369908041248378590234879669775453529571288171584160429797063800092974277030616677008838928320552569843862093875042202071474619068901545715109288170752821818425314721451825679673006801150676106793707941929969696865942423540525603082754853634485707272978713796980039363725274499431588131465023703196951795773284013844294221403304228759376775047507559914676188126131149340367943811416486244788711533011928186921796250332653940572409618010290493992311659311242839557256493643259085776623568994273930815739187983084004412479903574155352587597081077984381516515340363612074565796584504498867725678575656838227989813496334723433426270501049800305653743476366738730317947728303376502134086083773073226989429581423874781183049283951500004912308186516344176141929707349663191512510564354725859002690223364018255015174887285850991223112162454756811706549890221612668821332161776000878845000727982616580971530833700951742302935022110160528065646421113165113296329711892024123531355610763103360954272709709562577147706576545527430245308685109486971133945603619193799442592286674902058318366246884922572086295740865914757851225245449391283012733693929265586438857310332151438392791959515317437142680994703439882389668049471185569222831368756246443465967966126612621860645877642278195969700672658012730401401376356889316018563129354062236980745595308620377161996437361411983414092815026576294354187834063665872452489109263847226297808949624614178341189576319971757550414972341128974739481335177944720564492361961980754066361773823518907682682387403291891552921876962872436510750039501348604267261556215060246377613947294259366595817854609335133669069030945275713542292621922362140040257295920252894362948347325407225082251097498021480123318747672402480962527585070467298763823114127812072803709893424279362360551307929232688777763370697183735238364860413094883940994769508082295202520406979299739691591079708852361462208030933791473084797433196261035249509517146231301883709820508911816764915388029080172195453433340828863877550722167218002939997852556479296284675211527096586398569689260871354885113859424591369250179611962013395364062981842631137794801633759870698356479092495952671526787873618099104830907104065163861510901219067480679006748632908715821069220752065053999939751735081757320047419752331192937978386171993953288351742589702433139754043751281954573901965535658817023581706912202603438226372837831710316116160519842117903497719230573047910003232623196088326602861185842525125941955379790638452347088523847297423198850465234692310372330862144915891812567544577460869307534554611475957391033634950574805965578387442987279738862907105643175645961463827616112315288064968039975545533871680469844069939023019402187782134825416468768025066636897323861998789392874687897707561515281879591922163036957986789025698206152451429298532486757065417170399620061973402943660343766212419392200678776216808941623285599961210069979006493797937974381090176008656521826647680358251843913211019920843783998999989851238918159084468353557810820633798644332199317368202012719904296981079247191179314874735167740975195249914148640797421842327462078408769170181251015097969692686889767435829518622407434782898899816078537000170413447320896360327738047745471450509663909518953277034553422679078596347127650466193520712347962619155897062153638273228961955821788870311093129749716480624101040814147308078814121082216883160663494861604196366206008918614565612333838870277115617181533281974570591166242762425975928605412447029277230361246253017202704803006990268314027960224782684320576314040085575439368655951648781858819246493336822766203622547703367217515671262330667097657063602523019688427486082367090039579233886310132379140246258724398670117440951799493857443990433632355305391867325023355389756930805999647036584082235300642151436350257176166148768216060012167652271853411955931407405408919725516658293581225532692401253122961828146283908786061984485840080937209954352595898572099479964418575444460387058284928512353189870291807793969697455288404406430019984870993391186539465637829384065201296075997390210155374518226375310508708391592753129734121951469606538603257641519958519800254982334971322502276414654664375514542528117231228153899497387962807919234636111172959021172025096786344783787513732696390237622666302179775498986350287489447024162327841494918114105971664568814678750156565873356973652171633799405097357261645249368614895876911701930429597409523345883871342470072981887446450396724638157734862943745185175288755050631205530056052086904040090726893917164250368334135015045758038311467609697978105233642410749086816870596568579371835303023995807475529299156696511885078971556174662145087383327122807539957130886385220335168963957081880225344983476263006323762625509335722400851616402436421019362448876818986175549293098459379396413447886966072188090910808091553961126274005918210479432319374505525549593980094436753570155563387089346509620469783398512853142101736803876583378252020747682937953230931000008710308492035389787187419162298703046761782033384764070610455389880130060296191968006603946309971081169347384473798677072927594203677262206694958939027007138079426367832134439079390047664125562183660302611836955462164262622869498928446641449658371449056199765381051121502397146622475541906076528305693391539226310334371907059699311513620096432304022897091604224059957675607594090154427368793486100036782516425846910189020394252269784314114081081447014592105144542443404794484618876076928838708013975706693446568644145377590929009664897241392545315444576232449848437278403991835640509309783352673208761809104684530972877524416052881382249890518630299100507923333329851553452500780253352076310749703804207358744748455234747295965523637852965859080600222009199459188484803918763586686581801703664808839348192230015113220437310197291831996273220651198206832523104506737834131583984759917500124194856553402607893365990184683446139189141856836990116104871762395562029508914512264859480514596253150544245572213241596992628565485884857322801191573326722420051517590863725649328975779237005671127469287263048250977620636951836902753054124587479474598126535380577543494702133674918802593292720010853303698216585004682117602652181500807854630387186580267245396437207479023534816399519682231602528909021658427779712177816546820441895674227434651480826234129520787895101419869206407565471932124762091780942977322365769951855693751716329387037799465507708928647864257509060046468917998618594874464206170239574181448459368462688194947970695025905685576609458774818334551399245926748479568845705225208340337514146759302885369542838495394769063960988036771410633020041794578934406750805368398156285900152261988097162102133232087943278991359806872212625150458707263447616502756009543530718170332643234324055419045977734000688359540337002408645687804128256068584031493830103631492848943029513253592732304639037194978334903074215452817469170487276129983622544173497416532251396208534665726752137838475284570224333551362965730786801217260609892684727573150452211758106253929894501132510561319450273138444042572659938947615196318462033986631029025514762043365580632864440619039333457092010410799875815880901092300041915148413042751468256521910341024493228664451307437436332692579288416432444098666371313724262769883327857766260433814168456514520526840221362992316130220276483101971135986103447947313028317055865752886898135200021487110826605695326182476655219596183174574891570949438538055952955726647581838701321835337710153283682506791411382706294993769592754356346512236120315625793870759463424427892233152240473116449475787065504226919490676480541833340850992532743967825378571695953095892207960341261294578945784850890431643845585838708232964606264284776715666437674382115719254024533075963123625485257078194434448042869660927410686545578493944551933179050265162917895594440796550028245529276761756896254606606185054016627806918724644501243494694366451243994521609903681908267119922758761336010222548567597267354125361789702253834637494579105438107330507876001032078890373605475214721678413925994703592732510412975119089940582653066393912103792168647654433337675246607653534159055959883892301882821945098738590509505614950702128239555020075594902351875966175772599557769304875103039926452579279596537302248551448363845680798326412829520744386822023892241451151415536283103487266557929103672459155260935645374618055625737026167196638564616338708870350270248745824311843627375062127021248729203751776633539050471774349697611651594591863668381793244166351329516289482795222218858952210809358958301047053719875180667706813568619760765453727336683145511374743585937967632696105909108752060380183123923683927781293295177459020118272244470166280970540947580075523077751182743841897139442478220287830639043861019959189946258627587566730865303542768651180388019007482325240791767838538281819636020512973076681864038682852310466988580690218515619961279918694211396589701315483342280884829693247063490597851805430889298970202141955787499749490675480131327474808373222653953444868616211090321486845495699016965119446946777353265973098744042356597940950906678824722256667271642296212442913734258840804767603322296598257335001193600796920671434918933635414686043454604942123978253009236421060370995269285992632643619106667146495396228453019431421718696201694459189903767372823660012022109753103449029024346076068765477570334704041651437179346383826955467012451120678258671919252707102673134867512091070964227353373222454820574411273654423807540551232155137150665525587413956422978160334427900409441103074678856023439391904146767040128619408133483861183828767616841284460198640644669337435291401531179130033842037265767963180326418737037130621415770560780358706377814095597680097146042965883504526589232515617455112560710127337748334630558070350829945043710901342954391589749620935645973848833333675526862402668889274872826656389442164126590905830658925910801057837909020412518453266791571152644523075437842309513286496479017071220757297348900171053334302175300271989580631225261650990675112025206357009659763923434569458140519440021406496166708934853036793377141467523629551727425522914074034343007046888904072948895735138072972594979661340982245832917977233392948275217766024374547705847545257222392494401251200463875257671273837576996348566566320149288478455545443175375758393933128746831418484325879553497535760012362531684278977677137796272641528801656519105173616549090041427008415843332722682500038981295781806421038716787422500630239591547186828271715086721681539866636620386268010228893096600504826039665010629108710326857929757745539489756804787242533513234352403807466479758515819573213120442187916319038613197824079622498673486424586819796153347049055590066058946169611959927305401297962255583107972715319903296505428168391691959102608013101518217110334851785532189123590657341787174713652272431966332967403486670889591942317469121069085337373587206355540807537323056062741018533999751822037002841501326864267848639972656367866119609479139084179128461979133255554929337936897318691044891060361853962447048538440816171521607157414146220020773876895582333942648706963766523216564949266209183281120069295774616188240558649013663260630375851116567403646683413529868641780751028095938437726495400953340132206429365547246296346964736141636383890503531351901755480944370649625816745430906476495403098977255635090519212957243265144571737210711985063030763092967730359974938654465705977179710676853304179528603822505643500495284345090916055696048460062740890097908701767431013840223600490712813920508559184328171707446187880928424357615784958302856879906710438018817987484675949396788897873739735599026560960468749067450324982042253538623610429822010481321416591910307661501349819484416164693619571638563954828109755810638251895235412215612493152712092270908457021928161818513221352817659528518928321446369888745603469389658108060280886365714956327181016953628012348417970375183329288481782729228908763098847183756170567632237267365714463898816697693656513791167360430386207543294741928824824085459769367008245689000779174293618818789526544623805292588826272042886328881008740666248438949450796693326244814322041052969904160031336154275380549172736235667451181376489542488980633978607768937821687943557945814957967918791590144483416398699378613740876549716023827794181172208130286961701787342927641240482167594686132159677500521254321731987493495983661118776361506761081434135108915770067036446202742035425012548175226545702200196568504524641019554103629496671307649299795515806578350677337371508749337142394528957631742926327899145667419014502635680171690905204524402957185458984549571624960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
4999999950000000
cost time: 26.341506481170654
并行
可以看出针对计算密集型任务,Python多线程优势并没有体现出来,有时甚至比顺序执行花费时间更长
而对于io密集型任务,Python多线程可以更好的发挥它的作用,比如爬虫。
Python--多线程、多进程常用概念的更多相关文章
- Python多线程多进程那些事儿看这篇就够了~~
自己以前也写过多线程,发现都是零零碎碎,这篇写写详细点,填一下GIL和Python多线程多进程的坑~ 总结下GIL的坑和python多线程多进程分别应用场景(IO密集.计算密集)以及具体实现的代码模块 ...
- Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- python学习笔记(十六)-Python多线程多进程
一.线程&进程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程, ...
- python多线程/多进程
thread和threading的区别 threading相对与thread是更高级别的线程管理模块 thread和threading模块中的一些属性会有冲突 thread模块拥有的同步原因实际上只有 ...
- 进程,线程,GIL,Python多线程,生产者消费者模型都是什么鬼
1. 操作系统基本知识,进程,线程 CPU是计算机的核心,承担了所有的计算任务: 操作系统是计算机的管理者,它负责任务的调度.资源的分配和管理,统领整个计算机硬件:那么操作系统是如何进行任务调度的呢? ...
- 浅析Python多线程
学习Python多线程的资料很多,吐槽Python多线程的博客也不少.本文主要介绍Python多线程实际应用,且假设读者已经了解多线程的基本概念.如果读者对进程线程概念不甚了解,可参见知名博主 阮一峰 ...
- 搞定python多线程和多进程
1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发 ...
- python多线程和多进程
1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发 ...
- 转搞定python多线程和多进程
转自https://www.cnblogs.com/whatisfantasy/p/6440585.html 1 概念梳理: 1.1 线程 1.1.1 什么是线程 线程是操作系统能够进行运算调度的最小 ...
随机推荐
- 关于IWMS中遇到的问题及解决方法
1.生成的文章上传到外网上,但是没一会儿又变成原来的样子? 解决方案:把上传页面对应的template中的.aspx页面也要上传到外网去.
- python设计模式第二十天【模版方法模式】
1.应用场景 (1)具有相同的操作,但是步骤中具有不同的操作细节 2.代码实现 #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ from abc impor ...
- maven(win10)配置完环境变量后无法识别mvn -v命令
第一步:http://maven.apache.org/download.cgi官网下载 第二步:把压缩包解压缩到不含中文和空格的目录下 第三步:新建MAVEN_HOME环境变量,值为maven解压缩 ...
- Winform实现多线程异步更新UI(进度及状态信息)
引言 在进行Winform程序开发需要进行大量的数据的读写操作的时候,往往会需要一定的时间,然在这个时间段里面,界面ui得不到更新,导致在用户看来界面处于假死的状态,造成了不好的用户体验.所以在大量数 ...
- codeforces362B
Petya and Staircases CodeForces - 362B 题意: 一个小男孩要上楼梯,他一次可以走1个台阶或2个台阶或3个台阶,但是有一些台阶是脏的,他不想走在脏台阶上.一共有n个 ...
- 解决Error:com.intellij.util.indexing.StorageException
删除 C:\Users\Nihaorz\.IntelliJIdea2017.1\system\compile-server 目录下的所有内容即可
- centos安装桌面,下面的几个包缺一不可
yum groupinstall “X window system” yum groupinstall “Desktop” yum groupinstall “Chinese Support” 不然的 ...
- codeforces1101D GCD Counting 【树形DP】
题目分析: 蛮简单的一道题,对于每个数拆质因子,对于每个质因子找出最长链,在每个地方枚举一下拼接 代码: #include<bits/stdc++.h> using namespace s ...
- 大学jsp实验4include,forword
一.实验目的与要求 1.掌握常用JSP动作标记的使用. 二.实验内容 1.include动作标记的使用 编写一个名为shiyan4_1.jsp的JSP页面,页面内容自定,但要求使用include动作标 ...
- 【BZOJ4126】【BZOJ3516】【BZOJ3157】国王奇遇记 线性插值
题目描述 三倍经验题. 给你\(n,m\),求 \[ \sum_{i=1}^ni^mm^i \] \(n\leq {10}^9,1\leq m\leq 500000\) 题解 当\(m=1\)时\(a ...