Thread Demon & Join

Udemy java-multithreading-concurrency-performance-optimization 강좌 코드 사용(MIT 라이센스)

Thread Demon

Main Thread에서 Child Thread를 실행하게 되면 Main Thread가 종료 되었다고 해도, Child Thread가 끝날 때까지 기다리게 된다.

import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.logging.FileHandler;
import java.util.logging.Logger;

public class Main3 {
    public static Logger logger = Logger.getLogger("Main3");
    public static void main(String[] args) throws InterruptedException {

        List<Long> inputNumbers = Arrays.asList( 100000L, 3435L, 35435L, 2324L, 4656L, 23L, 5556L);

        List<FactorialThread> threads = new ArrayList<>();

        for (long inputNumber : inputNumbers) {
            threads.add(new FactorialThread(inputNumber));
        }
        logger.info(System.currentTimeMillis() / 1000+ " Thread Start");
        for (Thread thread : threads) {
            thread.start();
        }

        logger.info(System.currentTimeMillis() / 1000+ " Start Loop");
        for (int i = 0; i < inputNumbers.size(); i++) {
            FactorialThread factorialThread = threads.get(i);
            if (factorialThread.isFinished()) {
                System.out.println("Factorial of " + inputNumbers.get(i) + " is " + factorialThread.getResult());
            } else {
                System.out.println("The calculation for " + inputNumbers.get(i) + " is still in progress");
            }
        }
    }

    public static class FactorialThread extends Thread {
        private long inputNumber;
        private BigInteger result = BigInteger.ZERO;
        private boolean isFinished = false;

        public FactorialThread(long inputNumber) {
            this.inputNumber = inputNumber;
        }

        @Override
        public void run() {
            this.result = factorial(inputNumber);
            this.isFinished = true;
        }

        public BigInteger factorial(long n) {
            BigInteger tempResult = BigInteger.ONE;

            for (long i = n; i > 0; i--) {
                tempResult = tempResult.multiply(new BigInteger((Long.toString(i))));
            }
            return tempResult;
        }

        public BigInteger getResult() {
            return result;
        }

        public boolean isFinished() {
            logger.info(System.currentTimeMillis() / 1000 +"Thread factorial ("+ this.inputNumber+") end)");
                    
            return isFinished;
        }
    }
}

 

이 코드를 실행하면 아래와 같은 결과 물이 출력 된다.

5월 25, 2021 2:20:48 오후 Main3 main
INFO: 1621920048 Thread Start
5월 25, 2021 2:20:48 오후 Main3 main
INFO: 1621920048 Thread Join
5월 25, 2021 2:20:48 오후 Main3 main
INFO: 1621920048 Start Loop
The calculation for 100000 is still in progress
The calculation for 3435 is still in progress
The calculation for 35435 is still in progress
The calculation for 2324 is still in progress
The calculation for 4656 is still in progress
Factorial of 23 is 25852016738884976640000
The calculation for 5556 is still in progress
5월 25, 2021 2:20:48 오후 Main3$FactorialThread run
INFO: 1621920048 Thread factorial (23) end
5월 25, 2021 2:20:48 오후 Main3$FactorialThread run
INFO: 1621920048 Thread factorial (2324) end
5월 25, 2021 2:20:48 오후 Main3$FactorialThread run
INFO: 1621920048 Thread factorial (3435) end
5월 25, 2021 2:20:48 오후 Main3$FactorialThread run
INFO: 1621920048 Thread factorial (4656) end
5월 25, 2021 2:20:48 오후 Main3$FactorialThread run
INFO: 1621920048 Thread factorial (5556) end
5월 25, 2021 2:20:49 오후 Main3$FactorialThread run
INFO: 1621920049 Thread factorial (35435) end
5월 25, 2021 2:20:52 오후 Main3$FactorialThread run
INFO: 1621920052 Thread factorial (100000) end

Process finished with exit code 0

100000 Thread가 종료 될 때까지 기다렸다가 Thread가 종료 되는 것을 확인 할 수 있다.

그런데 만약 이 Factorial 계산 Thread를 라이브러리로 제공한다면 어떻게 해야할까? Main Thread가 종료 되었을 때 라이브러리로 제공된 Factorial Thread는 종료 되어야 한다.

이를 위해서 Demon 처리를 해주면 된다.

        for (Thread thread : threads) {
            thread.setDaemon(true); // demon
            thread.start();
        }

import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.logging.FileHandler;
import java.util.logging.Logger;

public class Main3 {
    public static Logger logger = Logger.getLogger("Main3");
    public static void main(String[] args) throws InterruptedException {

        List<Long> inputNumbers = Arrays.asList( 100000L, 3435L, 35435L, 2324L, 4656L, 23L, 5556L);

        List<FactorialThread> threads = new ArrayList<>();

        for (long inputNumber : inputNumbers) {
            threads.add(new FactorialThread(inputNumber));
        }
        logger.info(System.currentTimeMillis() / 1000+ " Thread Start");
        for (Thread thread : threads) {
            thread.setDaemon(true); // demon
            thread.start();
        }
        logger.info(System.currentTimeMillis() / 1000+ " Thread Join");

        logger.info(System.currentTimeMillis() / 1000+ " Start Loop");
        for (int i = 0; i < inputNumbers.size(); i++) {
            FactorialThread factorialThread = threads.get(i);
            if (factorialThread.isFinished()) {
                System.out.println("Factorial of " + inputNumbers.get(i) + " is " + factorialThread.getResult());
            } else {
                System.out.println("The calculation for " + inputNumbers.get(i) + " is still in progress");
            }
        }
    }

    public static class FactorialThread extends Thread {
        private long inputNumber;
        private BigInteger result = BigInteger.ZERO;
        private boolean isFinished = false;

        public FactorialThread(long inputNumber) {
            this.inputNumber = inputNumber;
        }

        @Override
        public void run() {
            this.result = factorial(inputNumber);
            this.isFinished = true;
            logger.info(System.currentTimeMillis() / 1000 + " Thread factorial (" + inputNumber + ") end");
        }

        public BigInteger factorial(long n) {
            BigInteger tempResult = BigInteger.ONE;

            for (long i = n; i > 0; i--) {
                tempResult = tempResult.multiply(new BigInteger((Long.toString(i))));
            }
            return tempResult;
        }

        public BigInteger getResult() {
            return result;
        }

        public boolean isFinished() {
            return isFinished;
        }
    }
}

이를 실행해 보면 다음과 같은 결과가 있다.

5월 25, 2021 2:24:06 오후 Main3 main
INFO: 1621920246 Thread Start
5월 25, 2021 2:24:06 오후 Main3 main
INFO: 1621920246 Thread Join
5월 25, 2021 2:24:06 오후 Main3 main
INFO: 1621920246 Start Loop
The calculation for 100000 is still in progress
The calculation for 3435 is still in progress
The calculation for 35435 is still in progress
The calculation for 2324 is still in progress
The calculation for 4656 is still in progress
Factorial of 23 is 25852016738884976640000
The calculation for 5556 is still in progress
5월 25, 2021 2:24:06 오후 Main3$FactorialThread run
INFO: 1621920246 Thread factorial (23) end

Process finished with exit code 0

Main Thread와 함께 모든 Thread가 중지 된 것을 볼 수 있다.

그럼 Thread가 실행 되는 시점에 Main Thread를 잠깐 멈출 순 없을까?

Thread Join

        for (Thread thread : threads) {
            thread.join();
        }

import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.logging.FileHandler;
import java.util.logging.Logger;

public class Main3 {
    public static Logger logger = Logger.getLogger("Main3");
    public static void main(String[] args) throws InterruptedException {

        List<Long> inputNumbers = Arrays.asList( 100000L, 3435L, 35435L, 2324L, 4656L, 23L, 5556L);

        List<FactorialThread> threads = new ArrayList<>();

        for (long inputNumber : inputNumbers) {
            threads.add(new FactorialThread(inputNumber));
        }
        logger.info(System.currentTimeMillis() / 1000+ " Thread Start");
        for (Thread thread : threads) {
            thread.setDaemon(true); // join
            thread.start();
        }
        logger.info(System.currentTimeMillis() / 1000+ " Thread Join");

        for (Thread thread : threads) {
            thread.join();
        }

        logger.info(System.currentTimeMillis() / 1000+ " Start Loop");
        for (int i = 0; i < inputNumbers.size(); i++) {
            FactorialThread factorialThread = threads.get(i);
            if (factorialThread.isFinished()) {
                System.out.println("Factorial of " + inputNumbers.get(i) + " is " + factorialThread.getResult());
            } else {
                System.out.println("The calculation for " + inputNumbers.get(i) + " is still in progress");
            }
        }
    }

    public static class FactorialThread extends Thread {
        private long inputNumber;
        private BigInteger result = BigInteger.ZERO;
        private boolean isFinished = false;

        public FactorialThread(long inputNumber) {
            this.inputNumber = inputNumber;
        }

        @Override
        public void run() {
            this.result = factorial(inputNumber);
            this.isFinished = true;
            logger.info(System.currentTimeMillis() / 1000 + " Thread factorial (" + inputNumber + ") end " + Thread.currentThread().getName());
        }

        public BigInteger factorial(long n) {
            BigInteger tempResult = BigInteger.ONE;

            for (long i = n; i > 0; i--) {
                tempResult = tempResult.multiply(new BigInteger((Long.toString(i))));
            }
            return tempResult;
        }

        public BigInteger getResult() {
            return result;
        }

        public boolean isFinished() {
            return isFinished;
        }
    }
}

Start Loop라고 하는 부분이 불리워지기 전에 모든 스레드가 종료 될때까지 Main Thread가 WAIT 상태가 된다.

결과는 아래와 같다.

5월 25, 2021 2:33:31 오후 Main3 main
INFO: 1621920811 Thread Start
5월 25, 2021 2:33:31 오후 Main3 main
INFO: 1621920811 Thread Join
5월 25, 2021 2:33:31 오후 Main3$FactorialThread run
INFO: 1621920811 Thread factorial (23) end Thread-5
5월 25, 2021 2:33:31 오후 Main3$FactorialThread run
INFO: 1621920811 Thread factorial (2324) end Thread-3
5월 25, 2021 2:33:31 오후 Main3$FactorialThread run
INFO: 1621920811 Thread factorial (3435) end Thread-1
5월 25, 2021 2:33:31 오후 Main3$FactorialThread run
INFO: 1621920811 Thread factorial (4656) end Thread-4
5월 25, 2021 2:33:31 오후 Main3$FactorialThread run
INFO: 1621920811 Thread factorial (5556) end Thread-6
5월 25, 2021 2:33:32 오후 Main3$FactorialThread run
INFO: 1621920812 Thread factorial (35435) end Thread-2
5월 25, 2021 2:33:35 오후 Main3$FactorialThread run
INFO: 1621920815 Thread factorial (100000) end Thread-0
5월 25, 2021 2:33:35 오후 Main3 main
INFO: 1621920815 Start Loop
Factorial of 100000 is 2824229407960347874293421578024535518477494926091224850578918086542977950901063017872551771413831163610713611737361962951474996183123918022726073409093832422005556968866784038037737944496126838014787511196690638604492614453811137009016076686640540717056595226129804195835677890904754151287114083692425153529309626067227103874424608863545436398293174776177553262185112647485586491818038151987716121968151412990230446382406889650835750022964993964236425663527161493520780133120294339305948199604353969420254761018738252172711966524222462978613221897504974019517165315304898748360505669527154801765121621380041098168079734535478517520246219450483450137732631069390935035988598826321052841414001575678609609029165074696613545262530732547530215683071540424970029721042464657713750561658172851551721628867606644818098185845649120912302682768147351225295912356697622384753282615770046948114964848491301953671340001803143401238051136817383529604736178236359090032444297950688020042549707581742810920051587113272541976395544996564320561066233809944107996509023983505868826254101504437048432069614620830058162203244545765692318756565514222932145066788968458166403431217542120384260906858381449614534899619231900467977963087077199296523095849600825567809582967912837899666754472631990135059896378623749638002602721271280372007190332531861208580942669184318813379806172391391371142452541538009195482178127103419057404767790947408548585300339461726805826153286598871069522633304688276156298586025104515900688436549770091859131407933630009426687245018590571617291031936490991098228217111303418881419416874105904104754556921931093863614157983757941694045527938937109384182352483469190977349229512595307139832856254481217915270504659595865465695477902009217837081622239912666569873083979636249621037614923347132760069302399217673511891057774156409115337523737796739164299874501639465858199659299833466605930164782634986047986287211118948631170007729933467879533102208785302906484768220247087722697882722570310129317599975415218608043766240038735376268905375571540042554032021774836867599633613159500423889949964185457785707105025684811847514397763075381968197081809353979406723292036890892278320076369335840658417149841587948589109694590567289971379841585164354962922275043894861815302043934524746300827649887776588657430808787541341307659150357225673206408139140297963493742700782840103299929256690860602208331598375281999915671870901630152916471911594792045589654174108627724714953933330259638766452116193127088328263058379407282477564917067772021579613731556638858117457882957118203417140771452947553579710818266975798736591330783868285759503476782370731375931078738540084688378992553663116247942504751261510463457061195247608225899147088973048499714351467705120587222704881123894015563084242325566582234524023250064184629592203477023254431663678834524234786351840868377556610441235314544712469309924054972384215818431201675603905031719972524565657858377580857753875296587611843196719011428331596186371229904364101925104590174899485735184754538966936136596452820863600242776042878575997267236789350943310481163781137073061657701913615155210544413473188519616347234309905239123362574033170102120961038611843868063597853491277275931137615512583588086143609696078414543531160473655542295909978736085781976548586918266365930166972883618318752758568105775675966067631261844908745484099323247260781661001877242447578482757325634619280676825806300025702967517957687924077010327825950051833687592868609266123531195866406424282856518217722405362370108927300980366147700076486863597137065748242066418805996019152058416937539572940540848572048418311972653637539392292607122329445546114043830608888455472262982521959322579596676683095798571389513587611207880657969789400571881906259210735317292516019577563907999470160972554166513367117816883319321840660636568596432815225078372608736592243877575265200781212833881618586750388584003652016675406392778115111868458199386894262575028022072407470229729807300769305350299030708992932968658499970377357047611241589821412780882071586215497600204467985139003349377901546985902884570454097514558451773384812005969986480262352327994453850460076937608734626659015202206123435576750480616281524573157302966399451196823834643757718903063240959402591380922240597916893176229124101771570400726896732414405895355905933752497459666555146355479201710856104464717446942699735015204481366510113173286586432989936828058224541791358609128169942609487581745879188901454907687626492445612664268419746466944857011135284594664778705669332906683191211679592843891707763756469830607726946446157098827211286318181633963433982622278777880916301674073605099360426618675379549872595620032582682304219761940526821315661525868341775673460140510890114566065131777384152248294592892196925081707708956060296377411787353266276600324787319187293783780138148270015179795987032424870185876471358109455318476530890730373245779028494198986738943517064149564804990594093006277657735282745329364839230377036786126011877199543323142317134192498839532959815897143069682311169063709880980582350009757935709752159691546529309592501608247973828973507738795211228712906329949550038643238424051988830206248681225406964552601853561814705128129575209176827634038449369860460590635276881199756668156927705608260532688929317249943995632966640087434150868853522140468163389913962148072377130843590128485356097963244234258597335002413606409678935872850429834088884095874692184869621139102956165151538170058823013454824506583037720414969408727995320732618984459390723172372773505225555870494048306412233528343388721349540006501057439848172942309499753085648354311183029377249071656160503018931362666762334507974153416632205688115646752647275910981101914383753598053770480983400813515228505733722683659544706233239092293045748627565018775794784349898722528041596009731196081424686254783434375542259755548130923524013655819377601775593408810900096330395839742102569482162078387429035759201725472744471584604614004419451027076341900365088783369309245319804743224095273365904204974224026338825169846115223389858328713412227461715321325907836506058798028923224690960644743207800323698659285511311486990398024934998680927904148415993107729560284732270418489597286120616569998066038661086705201649351313623692078804312221012250312139216410923582161474293841740579901729847279223428368268681490950541242823200796710166512178797440562594938913791839387426657739855976346749047716702698381568584368778609847394993632375641155980052734098126250830686482595500428887779183729173641924449692360120188390729850087918862083678323318850799596507200877668342250701300559629485460639310338006962409846734799416469525316124995399767182205049908946878275981474421785804487409717095320780908550438545095692074375623128883194472294012503948867091357550225733247387673836713948329373228982894652463686312122894655728394134751081958915738700777969517675233511970332926553477842126626657002704976618186495385321990992309125975969481164085107764261143480729926891434934653945485760525710686985891865174258069177742205999308690980946888210533880901657848794759904966902256959045488837103415525927717923977445378303709813566514552358199104233966745765529379855593010491613523033562555952656933996721762709773327929804120375937122471919820933347711940958528266320276926806603115723886129903420862187816632535548132153661026850422287575793955396246749701457223907836584704529328949977050715566374099627874261081802790766282656761601872487265444758953735966424841514000403524335516071724658005399597519912183875779310968284797532713687787361975283783737741839312064625026643441685607598462521709586506947887764380981435366133058233958841643177128134689453955873937874432434687145280671197195513231494609576155784202655057731844749283396889800825755589655748878413064526453931674676427894243522757310726579693105983442299584220142405730467977460221240528873414147742446907801753090702006287421337553108994667660074203230000277508786509230740451650940006952970374507654440416869713072190688458826361661200946641016183036296197186589885721251922406071796493047632548264919418442230198954452647764674393967820682923984500338811107120776752224770873226964121000376007970278778381110189338569896301997115913615797647888168527297008769300198030181524950167975707554384139664071545422307244539361131825430686392950328457197322610363857519633077627992504281004202341942775218915815914545927317324211667599593371418642221693004005588524791841972862404830299347319173403590416752483859511241867878206389162437431760290323651473581040959280976594110663286261572749778942322250276197696422060823682727354246626199636893994803560390052934479419997096306769803571896244940576901535476957850882261358491713132442048822018592198820969477750987281874282827463948245794718843584433391177265043073909560325058448198995832915260084255272946936644128057058726962168290498895119135233679078611106005101520912096703971372818279362911106858424628545623544082650432148061029825202932934167703257418140986265134812016733116051295176896449167032396751696313799382852946025718217594969741787574529710942590246992970304017747251122364200869942429038241884033592227562548081488222629163734302167789862372815541366631949624102253448015578860960389521180854444077733552613007057841612033631098799111177140159832098881785478879281355580695256084154713449469152472326303293588071045070473978081460303940056718501036271708121921975450601427613487730525199147197276975343080818433964308940508403092776706439767188849301321751277180869708729500620623858309493356097911249371414797898406425487435634179435773610196432976321307837967874392664124592919149040384282474997890647052621063555539181658192686736473129048872386414660486917414500522399761813423455838136287027973958387883497909965137568122167354165690451089724770713333041578551072933765145855234470344805699717944610670127903271473689170381838317363952033066536784880688768775638525520626432024360010265126019778485160225231568714899183967962218366817905674813571558196442595357514899006471987287653913445808705641902246543019946827778127061884055417232377647521542782361760659785409953996144644662409888525921382247616839090424021110345490894287658199343693272661467486064067566704905492346983548052820306752831201535417015459985788184397345100246498838312846172748705657695989710447548626955273737462967243982991200091741274448867484142796241175130638341788237593297314320564584561390377227159851542127940776884782682315484247143214703996896768557078139541649820998405502812909408942843401326087152749210886528273710935172618352935270711965652390745991201180849764648824063615574449022471175861321051721565747543212567621988750941249777986924320822903797472606428482676052060098450617805020511562738913764387344408615988222992400342333216118459519332040331654041268829151410051175346044859618550552461534191531825748488371383384976042703810657494000520273533891986901602983797596721764733190827634634392499707844921679047980701936607898978235076844961473308871479707159150674059554795945616206401847611429632256723006229360558636544195125810029782794899100405487072319421171269043025931309379610273269292776168085612238692797978167506895130655918778864352680786654889456083246582202049612516465489603922455168615894039160649834384823614528296817703737280476898941720631772555910186086197715460227546326335017825305338061539177185199150678600630600092400873877182858962680440181097350311853355271507893172596966113060279956964625345275782203774937875001959708712123189240594811989463098117595560372357262892928771632609019318270473134022279738527232772958135423586861817878806995580888584315273219611170452723842068853460970223461625759242072328532616105092697007261610147100068356093036018804952048001444295815163594881256196738049203450196251109453281800480372309808243475041790944974865421692593982860122946936952714583832578800783752103059182320682657222032315525532381176883500049282237037749793473772822836901157515964339072765271036498329533732393003394653883948103022833376222844458257770958049239252194621024698472658836275609450190889882439913301121161492651362657216785169452679134725629838186819434530811039875576359993814521262670200215098196316090978486654174213524212947841292029510725650186579095120391229190247172736081000573839205218197550680566881305391000406757652686690652600256147497209481701516743765654299822982695116250816911483231294541217579151912746632825168812618363899144709713881626713222382312912566394119456413606732938547716291731561851290848443060769324599072376302630111617805374737891389175899875759852963328049346335658295610221374079203742442961819753794193668833138032461949803999196346293216191569611076493619660511889414006285129495377272334113659058086275127752064098131409956263683524659858068957978404477255075481162848281133774431751953057500186518885842896433545704400754425303088202476756361974972031292673221813620116458383966810498414436684441118711953407091150386989246858007441355892246814611628988973127213212060622580373233474510322266566957668634147656023123733116093373348733724482110167464373461709662021160459434551310477138234064015933983509230604614367148103843935544685011194934426280207090501376094908281450495676289923397938367245854290092387431666760623673525421330057356976433249850946365622789694417044829225094409078969259501323196449765967838210526028472310306412516086031352088884336410660755637669215279059781455558137865770044315166402322286950161109107871717948314559272390213625881126459580594027399537375282706786853658390111769597876907303673950556794567616295058617175076509840215718658442705693783521624084819985011641431542172024809367773762575560546404670188554885788224235657091505752550260835018322910466791437523917294876428099504237108588938389124155034237963701721161381822024554388786810208327369253299404605520373530520105444587389942549759126155650765144808982939733577419457483786173615753497522389083722703433894946595440675750641967711507550411840086319231952652442436457976842998980991431008121034162184149226795406469894575618791060525826148805644253320303822308138204516899612379242904929125256612187982168383381999874458801497887244209542841803849445950646907893616208949522265207193197129658085500291841338444021085288924413805088851063385464896155410100597656027002851496011959494342049271020775862890080228823218566043326811080504334203842453007726919990171973387669009454169122192564381208160267330564560385625745626143781662708868994564684693318074377364184083928735328762858597112682905882701027011902920916640117024084495316818463831094563006897838424387097024756768194233064860716539403819402630851468979918865731937329343299508661102852409324632499690459505857225390077224728967981465443836487997372995524233686693540906931265173050508567688922581727988245951736699217572378408646156384944792973173470400972784791580877908990167250742106621102050540230255806647819999854778123326448314045332517914084385334891248582800103826200678282744019404049910304999275521507530844306601319885910704595960474353483212472755594648098101812598832265015181338358124251219192358386108246384654783814626635213334659939170230618727580237452133262565201310302123984734890625437231136569119331849131924665436669627564725123606763608977970738629583645024077401744858836836099811587681999223011944837087651431883023466880948554659499376728951125910120474823087450400522054049949744771831421725355636096684766283468518025123530790606608992080158550721651216106152336946920269529287410444670268405691856663506104976768939011579796490393712353124342599970462979713927691025205443736117910654869353938155990897336583498144457398574241366234096737516656169481620924915552742807281228195690046608974766665256885190140126600636574539099148107294906253097892680188784856985126452859996545166747191850194767710443606316382556181535756415916573970018725821150692807874028002495879061145249559448750437324900787806787057438488115053701332349468592035915022245633071585054412905801746641742441553633774560559657674092658550013439162757044290030296453297990988172725027731465366812907582036945797394446183544456534194400240889095781193783417244765602682541993503975070342118308467114898420521868451510366842114357965425831525018206825615834874915649468091261363418171487172903918728683436746174922870138201305482377725419383447720726906629863468535614508474165443188721783234018812253508379477677329420794343857884117976870714557132122371153349706406779715959225354580714248673006176106156958311593558308624014272604032235972025428928236219044380662324367782539795899932131380426268016176644284264317217822427413267907721407829614161495221476082552221901964370283298194162411232420976193546231602151237369828739077731756134944817146398837883019260378922559974760401980801668534369247535309257777425814220710151828226065673693634939251712838818519815866317870905122238798407872774608901235907855279003786439195917914942043259682012218152999617354050843311830517233153927630012561853579030004195440411357598029810119717991233823654494864966761017720862035131013227146598359397743572741951116660421899125214846170155796011033883712903776248015966481996251065325359113183354992279230426389286714105412038672234957368763289712188897338591652264344616615133870507921299619502983034723233007914124919149288541805026468685016701267245549429430492517374099486428242461703347334033558688375481889511932599962383731264243875770777840103457613032315926441306872149764954076530809297037324875479248583846672028239700555595952539495074266185696679367113179844072051447307129767146925628852910087179913563881922537819973937143961376073483722162825069521958888685523752741195529255056447754584800957007738448799175789627391915154732154194491978559856446892463139033217162616581252765196199167098796702725825005420378517820572832288390554843175483579046235806720522045103597127249480152437571026147673644930777276562020511523029284419825302082862043739752465790417836281561930525505844041607631949068302390759556634969401580235121105442400176637994154155351412969906730503968435489636490080205490584125535163656254520595181807809531715944189206756719354492387079059168813743755248793690923577329218818492124757898125387366985798563576079319433754173784987462705023353663067942714824602578438092705277884245246987394329925200698435524426777993986884026705900673895874691183977578917359695774407848460210677681164896109371097977974673415559692658869548501302041608492876340334007006970278791772088821500408607990934528791781608782162474113582439568138817115799127290380662864895649210480376580578507862482996306030784365119848040225318244364406487744019981887059445285284900323809069145246255947116812829729248801326001437518788503201179048866095072634106442942165347506559233592886421072333554178687174597760804762532144805233579093835406793630140193590191010744562841548755861511962585522695939542049688007951133856423436021737070100071161302988649518148020883490380411431691672999397289616816949188271511386180833742733925974456785117130136457828039202912862375171170395993810517420607805975703985176388535766104020644902112593139557836537400176830245044913610556403297719866764852677849513145551956997713807409365307653678367413554684070755172866351836992413353411366401135103239168178722140244900022466712804567526317368476578168079678272267472777513525802832217938125702587283806616964096355377678460196306188990132842332522237424348704024396596937553831790139574378212871425555687044748534419987834327331185852228588181462054308642386311135257762935540069446336691244996761222957233971279272958601549011961674613845205779905251090961859893851691403168750115884056910748540329085487546274460878469534918042110065741323582393806997749267867415719657449310674559236984530006909161518925379056664244841804118314151201216829547429989488285459654972254707200080030219853670616751655074679058498456065851183207696145972090312640678717307122398225681995624648679606004620113787147443375016284363484084883046635219180900237313720130048016704290460710903267519876794989506638188904083535525376671178741649619093142813906428819855111559840248531589611050289875949210140686689391454900814744137780323359657180513273800434473824237087323122409236329039052049549717002552384088781858017198348568952770049744587302379559354337643258167512803695887389425279896098662074344124191183336468829811399771353385343706906743585548614713431918829258791372432883863125783491342426463300315687791265430425421260571289874332701323610941302809380252057982637009315536796157971065346765462058152394933601494499720320893267740662053790197299017718266136027541556346454428611064151477502385823359627510090590433522689634600782074896792346133220291288382148495394418083155909535525160434922404052206045321972519786433718086820025723607956928256265025399404363159168117883820331562840222634136071147964539344117855047869026500929271573808365956756092586079231718059483127921944617408489758766670718015727759264837648838371584576333784566893763793216440044331544899386516718976637058799753110145085603788369037235052451929715209224647456278568874044284777969766775097292150587019069834599522381008339388901974536333108385342698975208589774366623770166279598449669153592323598119758976261872994098245579725658879007097413606445472619467397873971159725387223231899212474358941846459053809131072034640325581499966429590575291727533592982775345476698256042289877674562472600762793867692922818566257202918873889423260323753723075133662089412031384393356686008225431190577243371074688673956551090120541821358952099361023377911258722503492360506960439395808358347775481881802024637313993216251648615664541157656216165252916725693609204122333351499455548356460939894606497865362208879477017555410700426347813049945543783813554468556089612037311055052709906355743308672644895815935370494437765009011298901867450753772888191012128695617509836630992102030191711541204969012855568162460869866438176920254731770526385256524773704246661116427488862410435663911517702404030095297378752058387561346074343389073443377584073258768601558205959443692603582200208425236539009656850062885721966021999563606890909583877025896724383950880738126256575081366735459229067561069380996845513591677026746381819468403164267134629248767936043236433994291329352180728930207571499659808451832261016750498232644591703530147376397468565498394328331372805151922181243432897807264279562567141396178508859777654833932118291055853930965741672182641022815799137494663997205267289831159891809628740193428122390576856574630729209874656278909242585734101420362642338040970999236353351842618267640556430441691284564583707226143859961554850012510582946792291098322947520663712079488848584232931026489389714569122094315164114927874659144092142323496805925662043882646178081797284666187772288369979300200973344056892912435582602027178881047096313862159194104942781916093035747246395654690570498561911485766748749529111179879756159745566655148648279242673231940629471761428657886129584363536304844329758648074058358325809630654624388203690740518687643142668004048987384941285485916374057396618809013193147522881083059691537295050942385160999022035201365750746193909734287145011479298067190329662381609428497723381573420729024621009757211576683414238413299482883031646234038853768621224831481115361105031987226106434108278399361349241986076313763054212070685164080096479026770913648752073693828612359660222693031829836519064505953618500615893845438338906019901623361248883432854660331235901943549779529138818911640959108435737245091205563453808396505342673778629713855630455419441821871066369168850893116722190721833266712439682292574257948967846653070635835823202180511102682269198287823751405115649432080067206121193700043545290431113419310010917556679443052305808482855439390100493228849900655588268380739877733497582163038284257790093000550544991740799686363363872294455231073961665511205605815734330755860868218678374057703073735819584430713127160743274536846541062518535267618645439774689977937406807134727217087246865787020200095907655397991161668932740824613345484889955949143334132910264397986429762460470048604616291671959202461121884095745338023997122605464058666718857164901415937124261277601772954661226329880939501804354908391583117614872858036204370514252470121328077952296719143368362607963927642904121788865709155590665441305088181261883003295908595896941032017239985462113462932428669423649210967239077564379489040457037723958148096684949838797323418662590676464480241754444735299562274538290417944909514891969192323519212184367056572296368262811471998691573443977538576901623069620313514525596235236668749066457483252590631785195703575059141446920394005608398163955836085017887147939828815319439394953553130565775765468660914392190994439683950603526709020571662244812676874786969238966227741073656461212814407383454876560733987814902577863204940246306091832074467900348285197435750533090534935496695950670069178858640147230615597074756447498896906947405886465171023398211289161181128383985701641631002923721401281479508512011323753357913419765774622174877938237862049296137567416500735669229498265169164860755051744644985683506890909220136874149768626593989538416433322333511294481180390276079484137087925301213147444169757668559834839846766717412632196745557721408624670909352570376167270941448686673783687774263505169443466209032297657749414382127690718030228948285966048471694457632358812657747948498720156899251597611832526278439737629292572609314669998797200962044056422277320390636201762697867227859399398539607332857849266142922806427347061708999157016105760477336866208423399707087647222262649943829234682796449008043060383358442705726539732513080390338907252967166830767494012724415180162275854470539336366257717192912754434437963758638067094970433661743097383359275497742408672674921232002117192071941515039983575946538232161024399198055145448901755131622791787821686212435516305219777242476824362608263055229919476269224593771011030615968499133288396505224278318248297413948248181537800086901675066080686767062301997865041854471506421420599487014188659710005944559161840931593806255120761781127260320935825839123247846548592900863582274703450811904584192863910607201313253698862279745791259458316993835929519244610047634705712653610310061897503859279117222798450475843780261038216979888544576062098165528752087246934610860862579269962472714595056076362476572705178931418002473782952173834688296283957750400024049466280433720141343332040072596228689788651099593736521972257918669816490298077200510364497742841642842273500286357392658755153729264775077786981373848179403409156628940329303442974533738011057147022027409783815646183396010078376157955271108147906606061335183345404303841262123947260559998610913583205856042714434266297797177969145198575998052243406203828657190787712998708536577413053345277461277493130405007745295709826949248649926891391099600129164379663499442373257946883779864780558334134210996986543149059409133310754323108261276829688994801822192889215518779835736246368526760481796585964145846606132895648018715830067179805823716546885059877990801325644723977096884821716333034559357912411853615938503668855632269377448613729797270162388303519376311865523664714347564253866479595115380858053891707030553380928656648299378623982123099572130601100504218602841259392144056302320885808620095673517400943026582404995853847734856011249735707656960266912565737077973737022745294378540902638981960951759192989229757587161005908244620151557544612466837174397876691277866779936067281852265901762127216589176058687537024145337321833826569703177463256232679915394624884195203316920702445753710683814375550571111153984250856337629735347658609525834865111987810382523450389806776013410298139841554580790685029857284820747080973337156550782258367431236897658490072750615635771520081146015917691088732410172331901133101582764606139557405578668177196403212663100098725267071270690874951903824685072677777005981035658240067269642960970530289788252507201822569198050315066754926953215224087938659301147288746712116825269361637191222310422920094689156721089227750424224341831297311481577509554545070530747712150054117890990072976352324362463782549681736808801283652065965209168728908853726542092603908273104637491015939584395090720542013683563748388141455944413358344433112102345687698934416680258376354598299961425809653098633788534389244278735794957970583898339558570724062393583708269019290030799894571550881338655431662555464287960402555240832472752859284045200294917566618693905307189668914197458412832922723830651867008975098895447090558790153298129538039097054582303266079196070668771638306802294650725608526903923532752698858628510937268261767848268762756977899476047913579539119823470930938475798168877741575506206622890784551391567687549721037466035281742285879865102549293768961380257861474874906848175254256429168741122512512541991912134576278213508777855468252267971336672870918749863416706487846403684035095772925323483369139137061400388621552144528543308554769007850913164715794553785356980884174076038273064804896184298932607374843873980479051956522193716978948039605160967286116234112653091779662025672711723942760290317623923968557138064739354686158487210842912363415653857149708772316719013739480550237066908688793949789658902643329053902954496437936986490837016875951434478864372247760527602943198722488394572249012917083208958504032526917849938784697846528977007500816182214263292180875216501427681300206939903809286263062050053995507018239392763398588473231997538912924059996067118657932741715160763455597511757930803354984420688812633382783410900706007664155699150006344918591581386617152376252397358427669334356149639074751099133184214206083644986572579972055075705169963186662289258452665832785992873763970744813905216664416329871925515064793130057799113800198446093503500510196502568706995748248617660222468360930138613973351389232571453903417717388545049986824316242076545505306754433411827310351223471488778912200979211697911699115132518965139556707105575199173125728345505007130716909776826581399004534323658140817259633489439109621001889879519967441569993650975912116745563363895026953893772615912380171255553800286609594977281612588884275447415597837659611516949134979974973663497607925928217120069412980319841693159705590871436320409788740541117492130568477950986705874850755658356765487505292977312617406268885545475476241777253537954231893456718954635240065025616046688914029131202475631551559883879744895498061674383139714976762442921871770170623035283616804874268898103297933181943480740384509078273840242221107533336582741078298462594893212509557432138047743138493724831257288580482252864269482036793394002923063802338554796611413653700546535100453136329242452897129382103558523077697277609181079778714361551838252635868486480131498965834227933593310602119645912386049084492580695103750913593454824622525901996824830626423030214860781946663747508165190812116887253644352385769440649559077747789332110129739699310961430486335722108335831666522972966703388569707813817941004353415725272900853580329182470909028810565347080530201965116213618334571469133668749272184148472520168862881955540606023415295058631184195895304800926412637488662075553501654165522563445815967389608755803695583944744192040041517101550917060485364394510775267205334753903189829941518015815813033709453563440123814472402133856793816906771455406076556966512203704720167899971710292955851113651859358772079615780310437940116607252535316379085750118714419349705126673161414911580485544828968384727184215778180013513587183554222200863862025298860377890979364970216075603188796431962173172117837651063011554136488611152133662391806538899794432881803951154952360523835290829568551693482908754236857617207191662781350313075364590355407103871806425792694374651431016593538653847399840958129927386925839225192301675082962197196610045301965745573662401372013490143246697456964467162491514586238884596587188564188188584725440703100351331170760033982706910191077443827019224602037008093282609935335427924393891076507157139984768372517042989748859278274268458765440800602137989525517376374335993592829587214042485276320893121854803595786935478763338864691310570469045642348667304845204019267339101562084535181255911569580873299421322515501238016432230114014024952455407234457517626865014404397708839746477550389321875748633077081492512207561678675165540874184605361080486534359506808542679474250136157424983372689690837534203349717226690590846312310904769990208323731893611322040327361894845458412420826103202453077239369116686636891360368339702499865254693180503244327053447010394054017217732725112266514100836767675186186845853652972633806931486976923402741791120409607859239894420035469459284002069778489740351249265967586403532729740432498026146683584240215164052738883731712987630684242415291626423307967391112795754345208286218495933127591321402064771480831887907810908019214625896042803123272393108711605000017395832588730166115444721505955017577734921733527883163285780322897186569523196562090739183946333181488448771443307190682454522599730407074005417958383515255982066902960788581504627887667440756728358539435017071784010644369930204780172604182258099459748845873067610111279472045261017391476872666513780744886636073383106523961050202769247606479063984471727348580137160709752462284841831310577288175091307066318608189184135115158726029808174624782917053704340685492518991134791791030334976893775455878373786179267738518321690582397611770680732295062704206523493281477290395906041060684061517539609437799059261471215271422542731279135371636177985483686032521419291816946219228869945320044373872887837963207647565587277133319795463983142791947022974816819775602860183953896252771525568712489307475954301977598970654250007700145997685187446294569669289547009994263345239360625369745242896660335425485329193156672086305767800031197763052837158461121927669128589662697188217281613782055446410931865829943251490753090181722813683108903454259022762793468645323540978126633075993446904242732142038417961247637716997453375951197986480390790946371166994572367758382166324104023835343262268038372601999086871451924923211176658358049407199822260533580321902169851186902984597090308098169011799624504200033102630013141654800196533732897793334337238387928809986795038193278818340559251326685947305875801814660811009855979578228870479078626125957036538039349924328548198319557441982209395124880016991612775907977061918073950728386766441276380796129190572308746550912040037682276755192085525872543117271693103407413845086074848807575418279723521611445605642130561283794534706145081338229862911252396417456274797354931622505849877027030767067790705472728498547012408368236579210169960918158477645649639990829543809022826487697904412677373663463143118262956394759192192317396500683646077299640023393351105261720068260237273128862689636634540796766990648838729731103457288982895249949647835703650706848676340823063037761274136581040824906877843441142323205361976585983601605796218211469873578379152173519082883244380420865346882019798051079613539225286526700983001552003340094515974678010603685163055402436537906305926720653664836818872822598091113603574906794510535605789685458851477981758985169232279128578247427704774183033598466277597854827367471616894331891850454340605448167998234838934231535628169554800136626081589766780261214748353136011289215197057791052101494901029043062472485311072185036481619025864701391286451663934678341928580290584097482049744168145238985617973889425306840219240279725421932689360569861304435328180491504336347979874270418460553820885161086422875630544265991690025824168200328693048929782257966456122133995312256175254203791028176176573723552679287428674282665825236500478536682848778060105836278646838929093587773162785345650189990919656600439863890617616829935933015028676675908947799902714691967598426666295468609372837636801078645914618682666833395482621722053093101954043604461190486067794366574601491417286200659129629023127100939756605786852940637176640297347744630659096368106971385712047673733153713559843079241216568117463791271901301529831467396650293822447377047349448814180823600997026450128007178152331277188099011182419613857055127883342745602083465161176841932171302457950712178724818140409858202694498999054105973063170859680810691942720233905306936306142123279371576673658059076585673253867794110687766917736104441652833390044854187551019569892067536438901494969132344201743862213357091244704824581939011615785404844701549915986264656231465426819978896408641127646541699492113889679560290159318112324421727069717142640875125482361929482881953952601191736488219694898006730976945669720397717842995815705950815133488016167272657529551382995389293021990011376051418593813251015022133327538103760099426257950456373516913439938539578392488698704880264987336836509285062985254663179425545387506567173861585747580812555093378000032798285887097431754115806122447632318890699230120446202982322805044936756692685126369399916740228669644907833743860828122684328328276947823113532468123206881835807789067615417407697426167581693900464187418380885732029932030570172068890931403021668712058236484629298061943205684833424307077115534773444934614986435438303617633509203576137923352916244823078694731208037099531643892184361257107639425782588056805823496031093815291722459186240410073171881135511051656221311790731474895811072708693320991086598335188907803563281257750642767320195858454648833130365431341817496108215504522231463759648795572519318954016105094907554767716403650385119918071753714266615823675271750871694806268852083286755918572806740455510919481507565516753744363611003968439960240897621869260462312936348646679001251874858105506835874752976897944845289315187265312095821339810516373350222887580308800137157111903775989208752360379039936617395264212066808796808441463718628735974574844696659034433903664661105531718265184468261100746554372832180596665134202872430216706138118517021060388034781675948896658138517326651153014714571443958079970686371816413786297470884122457057603493486235211851856243364925753032951060864628079748911886439116720240521952283809154009034784745656568966861673509166356409589925017184600721983213056803128045733470668394631102087092074005581895910415769686483459924725127634787327786174281745099225462770600197656539558757669548000916423630740038591297453753282883010971395201510982486607641156325288317238238892206896645801687093834924591469127111194892601300283765938374424334045236291528706209008107441798276033370292956487857685815759240149003539523600449105544485089637235066845981502876743785998976514203175947450363287329457060772517669932736235736559122518625725164460358389660682349370140119387833431423338728999209554766764337336154605084711756686971138941801433718748790085488293300584864005887357566277528360241332140933075836001417537112983339673150936144640381276692840860731298004951829123074043031524707170598073756355622237467032390293852850002226352483974035528442545672016679107225247143644831535609413867476283014647316999370070099888286349259323546561406387762339651565587329530733916735147973463336285234264722852009756614268685794458782162787053294677262060374245550423962239197352107248893939343669260000437706892289679148202485204223883598679008421106703711511765533474318846595196217235109009986079548131374292070000695121717093457072687436431685218918348439350316825612250309159124599113553464517887320881517742976519604400628523522062973833132286396148638677172904758859833612341341936745933619063722108735990112439730623335795269151532713090784471059103905973177886433978943527909660975914722824820912300746721916143903366456710145718187862356955025802911787823420294422565407779159538756188722275991956624878477130218713389548263977328714983728862030049226860343262142891938219386658264798215612702343211842268469097341283635997190159180423505030027447978407357657965145449620445375411145436025937498093233273894309713656348276043770741705523728505572497913076586415373351435468790445577851165296802861331903956519493652221144044477047261062223895120831296621641191710341352417614712822709572677186273657847586341901628666432921866756408836267313516424636330954883989261361878499174629906120961832421251248955483781254634271211122568690768490812936172126799929339332990981906652329675990469446675659836702352815256461374031132265447206042248654990801614074950405230106737238247485795659354393619650217951808402152308467018118492938904538687067152023599972243877787329148084560689889373153601404919588950243981805826445860116593388896227486118849000717728850557719810823478030707609734548228392597261969830996942029847260418171347615078178232213962436678806600937747910179797450523847712660965725067466677527366509076827798823969737870248676908013165352781274426220444343092952040638486124783364300818089620760144542719209808691370851207335972051495187898040341686314410332886384823879894827731561688144688072644850517934001814076914661397680335133295753311112221447627897814003238904716164355893843716876394289097419516100695419505751484391728755864935776701325037961264986254747411842225277387896183209961982838643241465238828124858605274889158387880623355651782223803303977203141307234804286804145716308833339983788715483590995348139762202755531530477882414842078487588927439011160374468636780912406657609986310826422710212141741643848970589795740458394427970540893745902775020677188071333443441000792960238011820368889042141339203049214417054791638690479094570368260710047949948234750520846650134744877659728001741077038120409831707563591187526939471999613797320911826380320264261742612408853586202974276288675805124966947128262502556086377789733223091281571106660708195829246809152970462779937592129637823426349805499876676038852156775469984139922271140181983440123326244208045618132037976865781360457883010028293236832756889674390406249336761652256270994455629475679422548143745235315399745672430229744425749059133593318726882900962409065940235765293755802271190842712301465830412082718993425979619360350342763825458262153922419369781353160057215288972134657358481856710601431007361669533152960093986029111248779188320004430004028120021794708573500659011942590041204206461728645962066906933466219790057536771350111742050150065411263853310160441904622915808682934821909043629267533046144524237885922270307041531120826793734984195539202799425008339468697295378691972975389899010315834604948159791208499470508192332828191933191392856973143737854419884938615602705367801946590722025158771051024453928040460483726585197583437951230772092689964094291425368024269308654832760170181371267157952959172412578545865336224599645624096603110282840394914059060183487981674433074785467196846612485320041307077888356798418629934185841221613857990878866162978932345134016273389935872274844790509651624513522668795142292401834846443882898756049749974429567783749422882823630542769694136008990147392029372319902558625272690690092693333867053831181683205255893056878875021260871644472326909989275439568402512580790416395211945978562814337993979842597853056208880840914543106554829502804021038647272888132346007173711128284159724691083966784082217805625178740216445236875296742668088911807363150228912513974390633521881661009210667215452862267806721794693540883999495928918572905007859136392839824042841786953680486615419180259298491853384815489086701847093190851825881458865592126099766854951639275407505493694487510368072420640922695114219078839258438719311803536019903471321412962705014626199273874819081350356912307966940836545267518193335985649984313482215072133744611001646811124645838125164396880504501089501772537472310611437891834644309318680829201803599001365981015865026708524300174630748742019486842202329323003775489947576864139111930144965481176943149210583239621445851589144179199023668956586188804020197033005115613679106863553124737353301492676529041976492647248291160829054308628951814296966534141531220911026964051428192063147528442822072818854083696668623238899732673393494220560778050816877417235793328277847303042715249771097227669280977971696134299720608658181365724247113692915132387883447465329356216776735880057134545735799802243373862433891981653822826154007884650329746439981339551070460192245868231736420884448199164519874927834591740187511509177550201341129347110025059592645224857686914748763063916203097272079900891059342127846799995546826235491757667239557047190666193380329788780505047308837507468938914235342816291545689887623700478782369132509525174240838286069306183175143009068804032307202779579130985510431804811965106273522186401750749528231853870872709372006324597376592906749207382554846745307920162787497195284958009105710291685822735812437704331335107821695957470841610318833995558832013047549927463484613186640288642914900508248519390444482581651274992673834361584422838145470038456009824058684436291493663322497967644373594168616029530622839063360689782286665374056884185953709933948647439304106617381910590279264113896294446552416364668274572140862307479258862229383752849916327795735019603792074718106222534500404979542073700656709651671923424172748083855359590998383509748753061512985276630250699680884965213985286178558331352206145204264188863225798527341218587733981616890214685538566210265160592019183545374718860258439164572996610362000405809940390027705716522914143216230164843863557549623706201766293435347487351212142517321403179853257786957796246138297317716285158703204460849193366414496929322516756397270238183863307129110749180541456943857717475057113469858101628624192159917724379318633265904825565585215353865223459223753920917445485838060784021685883441610763711625974783295953944060249389264322264860003361057155662521398727941579842468200122496949808667281615891683227468148457642596368143701634949518103313060358448891878026092173532739881482551787361444893731504232728721235248560518106422134548705433321408347959838998882797240947198203042909174406734366759465787131513019893906394837123029740856958258844307561000932239202974147816054607142609299918198874359739479063721059417836061251796643906902045635666863351836972468086152652731423294539790994373811486578954190255958194326318522427144000017892571007648186719561289105227732487201935896689762840144379142429188042656467246857914110434120857139066159670756492498720337648825052742835509528502202577582018482752198136281366251492316100240727148432348000527182060047561645567960577567150336431920713151913569196882552336181441836354053940372149637759156002666795109780855352475480259643662410456740815745307429943708994187104773548381089425470106263067586264445919884104323025562151831993753269683257777492983992112274048535237401950168181123733314321694955657898041591220331524751618863894401784810430414798959292203791184980299335504233066044759265623918453413280047871278469652928936708314913216391508708899458314817250350660466027107873262950625677864535765881558024385117890673427346321012086341483992653970299419998366945416781384305917286704234703987801603993274256247176647712071296498999338032781206560188132386760814912002626620896704981102948129707183254664827910108294564868739047149313152781588824949591188122345775951252090120560644240906824128858962174894486828367753885811153825069970779546820538863097645520467635355707826037226870607104973073010526727363677987079651496403057286735375323396548777743529051172935095983782054022845935913853278026791284214773985390340024412183172448699966100410957122034893010748654557920300912826490907786932978597180351449158860232339800709098030408422484073548862939750963691273223214929791419146331966274132062412394769788481922528273664911578599852195437526440097777027045683119424514941439574137439639789862214075032118679433700819777451481839939027337434281035500731503239418466266448395234324529106695297666118357207554049755566087205139079137725937998286286842530723177576098243725282993799931519514827634169117127310055568711613089191604777525482998692928482444586481379738121896059479936722793511777575879927484413999613517834064288181508974868270291087232570043961041438575499382962615312256080791025622504887498490846635021825545232597675811600854236024958415353706951196087493997199392081780032118728667070166994203405962938521534454952012481515662535095982844277745054856039021141687554181373153889223813389713103054291775851994451550538614884568208769780411725698722635694558182516503784400955459905443699046769793928439362815517880804358976178723823373444335812904663806543956864559950730589895925013243634748148084628833104032478532170832122678565030963462886646982594900818493385316298343100234549904990445065077311867777085139356984813731116265641550251326957945202315900747549334117703499184280567762596383840541806153755548353707185542377738858300529751597855667835095677314318683370218423161646360063909780745257774152429512297123185708132832815713424730225968571074313767119746842541336845951189615340772087782123351699259669002030363962602067824791112417547807845755527771244996380428049446315499423847283557840942676543423288910562396054799427160595616364389973934013427187307461275447869637966035150097411305853722154389481050743547633151087916733983083071712124998638108254008067564536933771497702400853414291979656032381404436115215696089373305857237870914088296407674735654148698198797145651699604832836521146725936553828997125438680847354452973333746012795062278698816811919385257821841354906781910240121806664768161682646107136103180285736441821046718427595738023272422740206089649745825345474888202054953038585650971660453343067074652789191444058531470115531083523859722243644037335070193346968127530216671509257356470232420096421203061773608906618005422346153491259971125906767350827405348067644306172424541272733525325460005147710661866746642577661238388119065796173723487395844381913814710921921061894845829653817852543885096138259966637476961883345952422338497179241378149790642348003054575504804442961147262535987182745446951657105330280639917178816951717301918184016763559588203892451730139999710542301397509190063030010244079308668380559162792159227802355252513515909506365422242505215370237168852857960293718773886096648687024511941115138911928151515231357780131253592187610639999097877652886534225722211867046830812955610508470961201329182855230329461078246232047237962039216570467022917141606977593583439339194028731604169522426868577585183193433629575067136879343122910658548186269098271386961610070704238494917577778247479580979732688089963687344935648182408615808033892569015500358762583615746223263562179722687011614405188217186535492619405160488133236429260443780893971802250298164800097648801732343887247061387719864931027316464642028240852085884280547201422570006637701160590358503876758703738017673261214536845611079476556916654448804937155473214746178648759037777963445969296928513580946777126980282257197887051187353236859058443405283434871061272553779435382838738869213615863273397140425409161215884084315153366197057729307633275168639280679048056471474429844382177277041892589412556956517478920373362141533023202353017492122137657012938188212326870825078283054253211047662750571566639847232781597532883406544240518528154677332874217598841254464858976906225247040468022529770255966200616184636520171393167522854067926168548072268004488624140736874474136432305567565616526177603039218797939885552396737605171888128808517385767477084467711057410242476357276576979614698068127303599072122164266467516872082467514253579469928667692391661728841034940896236428892782560753537496272432830888750528126579660085769764142606399591179064633109601840229745713214956797965585990480012476453808617397187891048223782438982404982990699539395932333025076663069933046349004411225202953266224292192269288860315533656617675935027179125797370495121949107190029807203413023911134582109707824554291432870417180232330491274906063634735985581344731378508774869418359291940135651825015025370270967662361482996317952258278611436421004474585311588713359063306533059834992787766657613017332355270002218339140198860662533638289881146972851043767579857662619809008278402416605806037632657697388243566006708445895923715091622938556474724010220766385838600168062918812603942413808596142368286831000336613294690617919915391191338193089288311530410608631133965516906899085367035137604838804497563526505667252628201977954842742557757856381166774420050663834441397479384438804238887892108677341527152224099796275934861817055911537553815579161198186565473871708502416484103326176068412590985364284796519755495253444325439661181186844376547038238760003642382507647625797574416748385804001571472058807601767755498577533807761073969372283645569771449628590000727340499082250619136815379474321339145531467431658987610458270864069496584195012665518674571253030433702269321422900808047495541314938975196796235472238775883973212808623621292184390174400480347787053888869910238696774503912820378189893074013798195773756015832536714977649835618667915741979507213783268907080648766282551673462849639244595705901605208868046607529212534552925074170936197597247262892216016088419164310439560898692506575947958996615665454086578446373199369442220800907842044975570649795832493604849454640939917017365992132502478995904808833766119814051329048578852048666993972767749619437406410116575002896564431553249544699616798829732310802896859060870284961733632291291441594081726728806103224063982790166492779866728056006723247065935053621316670898948957112383413363027680921982145932367847736144939597622218578324398801662213298473554041578741232402806851966346432195190389064569957224355016689970311394664566110738240147657157832742688490548805806583353208281331512939220463758339938570955146743563510694630899634772010397187560233773552357220554365906552624056484731145779218554043720763225515158371360491764756589136856937636604302799832410206958143031401606102753436352984061400572044298154800563890222861775055525131671768612818300989307498696234723200382106082981167329023084750620596064915587896409703195673571666840477812667588828403525761778760506140485402255436027926807469007451897852934921874755413533949023809517003743313701463526160108341126162392316014008266925418472351720901814484502329971500676971717889563067285982232741610255795257188836459757337665986708413846757657908421314808186338634458660383301619901630529499711554069206516964074543608000266127545268739845488020360417381771585974027711287415417089648515623555755774642597628405649291557552462420247807704765094986850019764547227300280979507039564347705245025978676100758487021114112973494399827678637751457292959891697529106415158976107985011284109616025027048827947050832522702481675591157603720853592930144289370442675887993307378835828095638985400086173681170640113342835316929816091281131490735230375032190056970058853169957822297622398224987254125474029655168134232611643213644535759475924425274104772637062366544311200266136887529531250001377528304648581560308044289488092416153515569180453199403393466422706735197143251609144908466290148042176870300045760686196834318195965113647320849263765658902229449175846234469947439695651760765120185107303950012611762099889180690710684299038966275960783406549351353271819218463166777605931975429197749632986780632887840739349809558143531523507734184537447929271835113646399960953476745794977937809364198040435983954371693584667633860743705064537908411271129639275168759568906914417384261465408094672414098790007030782042078191558797266603484539346962967477481164861012312543080519991413473954587388189748884393787386695350156584128194128373521488966083009562372172803652753275008412262010917328027147669379019978461587423467055704120036203855052390818254112039682495603161687959650792752952378261581892391198880129935468513898481021191043197159137122091812369216047543935394131132782165541060583467186618374394389277738647139864606662014783087393850457100382750642958643574298187075958560978977269178132394270012337372636762134740288417274151254078478534062380771613011149202308114296700794752788642162583517888511099155282934932937988696526335937358080535738225805592730343600518525567638399311589533064000278572614141787418597368676666728862521494776028944035385326620394773240463815925095146829141489377041359569281013370701152425019987086202582071572532343839684032845347038536524833995669566259005490104583712721085869512285043889880394187894994235161837453726465980084870575838297732381082408961418971314337429012008733876867659695192445226722061735061871715493272591715047964938152997768212757143017293713481573413412556298182574820553381035529865727172623413655298696965950584352635172653309371240813026232396200302809616929387717989047788556514297449705350317803649776263295581693379238354578509221389626107238626319509568825618554656414018753480010169442972202787882036090468605312301919536085855388433529049262129802624536242699546541442788917681768807139080877066419551312590765286020557657103189046694114742313887402982066268196941768901039361235604642615363790417032014135952098754347593101002871983350991304856727316432874226925406212684457600672225157864327497705929408413190079759659129158367186110889311832529403960031143577450789919212203900696051713968949375105939686336555199534986134201546285903354307851600598065909993724762672852472180745261844142665589116259660988083232087806117510550431873190904351438623191955052733858884777844442016923794998413904542338462847204513985282627402795110856438358507736978939626274339667355972647863872673477693419186495511500145771911606063412097289039473005685478768511121439080416269079318636289141372920215259916334067554499164077536445108016013780182025052615285453168445951464023597405912365786985204478709933326318106662147228970085418649831763110915977149226369794413515079495905249944188527922572996910629934344755355848759167776942251788441054619341715695844218395932201084178724915134662509473300540418500569714105387386905613542555033090906368276506964361316739508443090006317583500973389562871129058456412500324737525411750721550658736227418103695762400730101073469250561494186242039862834020618268775663588763567018863628761270387654799364205719387639697483847321551376156940361376418951898874537709062042893998686544558929975992052027695244409445550060774558620079523483496865710617613853670958664483512774478326864322556299185797352444076601232785680863606960112617152337346198615183980203302213669761912016287658025177669142564973415264189336819767573158232076836135251841020388746916057153868663448229720976300266791745293066650812009877694356690194924988613895894463756210589097655328216857779696047655598544247407769103216396161140438486262758793534463765312927992917587924083529503093074328063472666810820745817531986554604685926417780976887830945612614274680752060795295072100813608755163352154246388764123205196893040500912560355653156176871667878550848475978993168324680896214010147594512661662377035277348701055353596089219525598858037041372828199085102189062153393455065562950830563183722292668442488943397255043396924772260297013502603182614446032442071893375334827092665604995469238301368657104041161790632299680898758039472556368825321877408037142110351023697636028534027716683424314806640932128715414077159449699122572305578744624303017411154441049291143521047645814593867644407275267920217590669441202842235903640599828656942849375309338429768161736080492139762202796798561017628701947433133281121339623595407363080059375153763096099935195692888179097286963309696469842947198217161722414512065541479321785783504515382437598186055272557298323095306389228618425325600626059106950558560629284981287081187682893433989808612936919536494809825947971420991947195045848608477714908563062737011401776988933837911016295767581079417583171665072770132990001276885359903028663803449303730921111727150202958034657285220103339335739997185250475342521360880468025034120146979464830570177329073474932913138262985998530746837193974696912456927666720103016476650126293067518666724989489681551849031610671166969664869860325241055342985229099862952140630862552999794603027895409740653261066713626903081305113377739255489777921980318300856101391172304810203043718065605215016319411637115111668816559596176045596684767723147999318434456947263748406381742101698586547819792646588112154795022781677033455357397834603670775778848330205143459627625286789543138264546359110473400030958573316517847023673912766320730609827006893191745646176158513074904631976680920246783999403344207123009396450084885654824485112836622718955809831138026232128218809757942704672659681086721926087399509656311363410633736068447297706625191077391448416291923883235830411356335263029322504603489146721105054632040367360175008242422080074872808428471060685332681346836072743009934961488050941414169622689608500447840124970763506524639433604566471784271352545599832394935863018186990193282318131472807553637071257787662039959668113787011647198881981517765251298680284167086575084779936124468133562177516228394341702788088691131957675969198729062225935958866246581940395792764021359403712083089523774641866273402542523332024815486613400205342139393212051007213769799848471618563492801942589749677919204780542682013176905397088651762014810240972023046791819984860836055050270854943407817323884350254130563867131568239347889438624634042909697710079117447790224519512911466351327985127232037988095694703617551271684954593812912517791848043102208216816913209910729882374176182264143274443079604663104763215633259359962235567193850673416976107819112424412196173432525564344628224362695471260663178638798608503244458303108983590382834173585160205105749179237388403317462556972365775257601514786542926873916112289057477674951727790999757216290034626959827146107653576147140833634371315823049773127726349908013709891395350093013256951260377216417254685597832856512262597342513949735372705784042014333968601292524193536398997708244099813035489867042596660812695893565418650736226139228589620789025490594828107627597986333747752081829440673773949854162995421859436360241703919037185373054649524100810530329370585778611995211205622971165667776178724572348731904697215351325547675724407825453724671197227064802631784429524503990068785144038725853828539876139029183219394834692160137943171485547981118826063911550116975214745844068760363400156455451484939788479782337267278681955889104700602225168435149654338721183033520716111431703023391692976736877956124936909621751918314104607401624277615565187147674013958500360978393862991637844612372267820441687805719631794622325644092436920564231090626837635660185535787302426416140276615525073207823914109465031506880408251076490602357936097709146258926914536545073537271437112959319214626462712191868966216347522579447615855247154208531978892979040605751547488951481285629176962379509468046132210325828577623764282904815870452823144179477929729232288207966251447830922417813052333599047323009040192554681615717173518803211214390850984539390311891507082142681144034520177600915025822848238620696195307636765793558000070677318425556325172467369861551978561284635053576685984498570627803949789926199467961140039403698012773085665754929744235660802301290227807232317990522247506790640881860012132082865437169350992193990287952346685310560825755828896194975819709973321129830433813367940317425073590409993280643406913051216393081357573432040183049298319529884602468348485829750403878779929365668586727441567998956682683599818072103099219025013572668774423743969474891919259789010659812252889384997020707856101233341227395236147515025446056437692980944169260051009220029376710543775972574611114155020822725064748713453942881189182412988157447388351031608819999274257883058091447020442133862895784609532795355421305488993750316080598299854497568896978431551128493146881109031631004937017170313599891251179579530492211209315997303168468492114053537132603893165073969740790538684230606403276037555109572384472362040343572985417412572545289596548585099888095533588674925497836856761407303940320636629291559296181723111840890086492225622012643867573994694607228610490446015060158718526164817934437502262170307092348406615719210864602160391676503716556179376236992859765648201150992159868560907797934134540133775942967664151860558439010548601658408574819832225716320658884029310149230510591546442063218971417773398100228369483677621570117588148391520514902307457982248488946055016683298617504633499094782947709659149091931052838422068544852486364531524525268163998251006571949469901642278092162118093973425671508431644313799389635201978782537032476316001254624520355018652671158735307219277755982305040740128452772564377339226726607307474957439648676187737106497982998918728455469436831690166170918900333876821980556147088746989686776403098043454805323362220097320425816428860960414478798422685657347378900765084749467453251836740153610137945870701778667717025881790234111041166613191669477180750117286623379906233899986842013996950686601495629032136153721894265875838765402243967240662224550452362368762750015290463364579244288954496405808154277209513574724254875029898405947366429541344340592235377623245492215671503736213313838417807753305664029493289482648291168000512682910059599894888473232240458747022123509124565181343305610270971516098678606988655216041402523198550514825464756018197342968458248395805174818305997331434099493065609426033235728548349652197744193985948475708990486524218427651601070548098121626317646772501257799494711106480167974730285516007703088408946740787462045276127995749448639939771549647496592379204108012120852517698985590593233500441220505710987578208472272158713920594179413871367295439362826488897256641147964064354664108492284107288950957340709819238597161069213680334538491329714795541167643044563162413979524265454555687479740013382603560549043922616058551452823854946370401709789456501973661513380363130900386851562439100433282095114298389154531685693321639670649521298329432892116850156310503030678667103555892895300404278444365130744503771178372093439097117184017314352885653359910113443069963270663476738484755138168967748775361411897925680312354411550093644048800351414687708437875541123722755621094673570903000162092465819110375604313843353715983447373323515562537066830599151332621062704539415295007134694018786500746683134379503695418862260587826295226697523236135401203211212121049375360110953184643834423495189635067991363014500549933830185256755279758685116235995294701852944242829787987458985597250536663704250782324516018060281908681922388623652289577302169481765625449762604935775641130404644862081861113413363026008634934098266568186006754503271844998453925061550462377764501743140491196657592570407055278052275305467490339926011772017825325422471024964549315988181494704845495233679751827526434783048723561163243570695989080261806474706206211928422792277852191456555961893960671392678400527526027780891925633907632720201072622701691267328499421793735233052932220329826522670447981779082440483833078435566513612585574716019113246440739678898396187241289961766416148706947649290879180747563388057178081916337563666990380333148627900720456567739273587944579646623701412908845089580624571229413024182300562953314104030923542296686281936225399730421279604865666690345669771906748122459098374595080157345983740872745148290265123460981122698700656650044780377046581457373362966322322511746881220206468491451608371234735782671753342527402952471625661323191743303941078652913346955740795379136949552604746247299644332420364802763477727542734456085189336817553019368059113874966738491507929230275692706853934572506468144489082321981235729601498346412365993723805474323824246611979219862033470477736157836022909109180134831716654570023605497223250187479250972202718969033829366755462289853967851257985167713571822851743350967806183653018295301200464432884251973399771463688191665253734035295894268224526883667067363210909291204193269255264036753547970209888775176363290212911318639086949922774747922974429028801078049345163849721009714599351074335375294239688373837794023923301997641779927838052377659837345244203251464526370158028474685884126747076115869212113346971681580210157092005084557898063583139607129364625630541372343951993250207773214653676203236911319378899582960271336809444306272705924992480029801378532376427803168932682233536520732142017112460112970102390161858171170383305023611182390286422451245185344911949950184507443650976284895387924275460766672075662735310624450633934315322667285080528104329786532340020292491589316879231428244119411833680199469308881344530597241359653220135215648534323394364167169817130677587219296390220446732331159457713802805348849135058090528843436848169099073365574578440310114883896557517302291862472145650781234003084929900072126575540074556420925481582205139797843916319703555760802938027261622371480668739631276818588206612513178476102744163623939650771480957174682267957118616179489424057257926638983757682854250672626717716468095257835941434274497356459423332471371008204724111679838227857389479731221879524150370395922190686420639795692412517340963580959269793807291779739543136776741688240717805109212325226079900896080791624675393984705910746368499996376420924661518942178651780383203202167393715860179317207145023558170095504589960319144748775084706157314418252052262013273151417177269136155025384436846232821546312110664094009613955458679845790283021135894780046019613375720037033843066744957033665131014413553807699585710702900699939211175940720849413650943037301242918936222431394363362977418388021920274576182974965996082762400046665029829444153187133635601484833327876161638049409866234624056542400565332968681665981124533673248638186030414002634268847495297903287491756778967639766650210756035707518678125896704884488313005569658812932216418516534801490884613167739293500129677081197980470295122796347020634411631576641488010887356319097940459460076589857204167663820175170363921586065750008021917929971352908104418257476200094537157843583789378852867504605539990533437073300443703122068136476575913339817071174455734744879619482354128960397560437590660542230150659340616382701545959732312986633086507245028727539193415797030954045772995208015026214029711221425873068089880849191624204047446680184334992314253425033028702197424721383730525511931481511990236343185096906605892354064685492280613000741089486154693241177459336861137395462244294306085347150352947839399243694655441489454379490484240982382403801119164490989013832877606485816535028105405552507000871575457019263047934769022202422416895581319506700159678206137466474610414787863594445159483884878448004021151896847519003456922297660794103676147642194479412603447114656106629493512595747008255341927317707627062285738840754429536012745809641857202944971952870493868141245614580647845969469782039046814307491630139238303624726869840113480494398704191575285411076975711220431417661936361860690221655624605950508633572039017686696420991507541117286441391727402174428818142088668714812940737106108449560597633184308825076011579352602379564981291668025081434494035703409186291835962149403720363999706300200588895711858895575744463674700183193990141250461602831207311680551020030731232713907898289175642096819589831928635435018128910332973517344780881444526974625937701706422261985439522302542754144040544235320611777494522335217555322778239480162627347804003802639657212366880912041194736621855917021876432403881580555268558687240903231820545047481695228371316414053187079528255426518914909896287891586762276942749970655792244948986193391010111770102677227406868668059975031878009438337999475880910169636748569020743860348830955411298254979876650744222741269720197795373324173337970146318429599918121462937045221435486653021577723933907092448965299413155294179282861140626734578725799797372966620014163827625387580605273494496536986311736469652738339771969301190595301691075087646315719020468760422337556477810923044035697804317881408578005975606784710105549194686995823512947306965357039280459839449252305935994840448065005034451519647571909326904813420227088412348250071321613660054994954049526762499622161990592387930733056767918094029545188271248647260124877169143654769734433525738848915891025574239796912627210242885950960826808362422381207068425654903992728672997466317870610781127050920633948041541206527806591090140123979843761865323138337373997919681385587773749046501146206621906596573010757051487667024975198552577255373410383887672885686815747260099079212951861888904120529102837028298515429162413600269616565264743717919639202787899549046998724695086233785879738889620604331290037174307244198227722547386053069323814755109784257410801913993298979294386079687334038573020299041614658713742766045540602283721054008463498102759627840864163976406557503320098533150269361228071116728311907192187275679400035300553515182260194082585764078684352931542898338554733567708128450291954743283518702664417823052208616481043882354711759037444863754809051160898445203326629997556486256131486990360731281410105584956016537727477111077053355960534943662992612617205523416670961504850664541577110345160295366940740399973377244893153539958883140911458074111683340596939943420677231870900680993436657148555662441014722665604625711180514678188852611114098572613408711943542330044120066952434724592315970855702805844519520733108919714290606400085726170926160018147321622948147453192345026019822526341240746438819747987273682745536949848959332043710541933915406840149492682219685813031658280502170360738757556527734060402468434399277912279249114855804178967629167154613414551340483569249353961971317501927849676701994100390576101655555390649791474636573746147871827509934237665817516851345586434665440946723209691209497150108707342417229325742673344868673875887739954356659044291235054990757676087507894261885513808280835776525852088065344774576761684840245264331625047457642017265789349090929312797466766038888922222178228088528600550360484291999800707197683092472243406545373128838154829758511894307190503691551209476081611597513302339822114767075844785687854722900610327372560061959680563840200832438501392815119721045471906016222775507244335964138252133892639342651091840453194721618915226732861347664775209239528056354792910601970708535358222454402685773510136501508828720003745020640569504725828218980768545377307904966918146083684104961965653573016597094453456841743896719288874546895012054885492809965735540452697633790014176564641908986324207001363660972494609437823840482982192587710542205414080197467176967707243921565633595176216922862354081806252978112184376520330992659229098780715883456661403861563384545390997522639122420756358596303532117731985083448812919730650690727986486496294338771931551222756477465830195971508033663489305353689510545319336903220057309655945945730116825932263736133520380836272438439776519526848004838302306399255314516127436769264980016089149464270284514579487064044906041103541751577448766977413772309541450467828190866993470748551446529296888714398642826492308377996659728606119989309126767638238130884578879964432568478549599374149703507293651979246961858334591248714761015441358786388161168101277727519251305874640854359762436927953916104749995843636460119670628678094413842474837486705617828837119349197008556863208113430152885426182599184318253737060730167437966075394548098573385888408176535937631309845907184812305000514106359554019307839601631493580362713640042420930941004508870892878144742855115446395301848708540423709741837631507808876905720882530790583238687460692823530726168887849600601970578341117046380973531183452025945071684393581413107415460462348702061865405308170844439171974769184384656934653585774297651560460023929184091286736759114724998901812745706015799791860001612321646965214155073624978250686438301490376387030265667690696603416591716437271471480907090363771515602754831252662730469054724724465279501106857696993308836552824975888427306462821523148388203891749091430562180939549383608273093044545593365561347840201971399496390156428925526206197415211950192469245126155292615699859745529817207753692370327294456467113078442301587521856317692983367937202663105960170269395749899977954646079074841167759305458796558024167189178300191774656490161669080782044407331332898491016609009666633657690212471049416670544452086170350785726149986876345557050851331010919870930696339121921793085233697061099117603015614575437704068207227746856690145440944122141300693480226740223347477652027767196680656232684589236218255885719628739457482603154894366612824059977057387343343125030913419622487561307158522907784074796098657916779487595711511439060999396327864284243523180180216509064351873506891633055854744263843112015495990177540906950791734700469914077585250165857263729969087409618172427749263671831617268824914911776404051216107778541057030180232621723758545922775248612815151459055883520513534011638608340364245792226999059313852290280123878019428377331308824245835839302981750851296979422442456494446932477824724750998398238360776855774622879168418630522230078688673077207733015892253885265531140762559801406185223873970109267992684637815604793389608024200248944957931995837478234711217105532248496884551886619981149318225383584330392978301684194089127615173636181896329934576077553186674523663128450531422324263285286727996048050551337584968366579971120618798471372216266635303889754545022092386726455200131165751694673927309924062411852177238415472492809268991281061293044247305540277068092741299025548878716703483195480491328705685466764207334645506449944283177936032139042635100620245993424736882723257331061193360071486314518450086715387203064767427004522422611254079190091477922068336739764610391107516941290086474569068906194772866537912706211114410866477146971115019537047578637203675778247824123977589229083891999217083790853591998561081233046247984294832317953386015147187239635936460363101660925070631181935768709401795069446521463836954851997985348443273034415817078984091037315228373774216585227699742136562945040158420773131456455943699081005692048009609811329230398524441331998693743360238715717367370795900763191446715418235660718561227868136445058102458819388710057253094416851188747260444679868970174970887402104804385101437604110041568440928847058628097680296390537328730611978099333383129533775944300382318637650440778560840146389332163395303216549979051822995004161158797131437926684668174858507651643540978045782597574791325856724014720477660672427965290735498140489353350991873297007622764806466295450210825495238609799664521763717921448099706788354146332251419949794912429580665218197785465482690931966436220209111676466842821808261758324341315231036163823897368142793119832763579997621041721440167611687726263373931026197153158288781839610971904862002318096040232582452961894061553762112684344185887691687959558786133711099552461511774836645388698205835670010983271295540055509084865060962651819417540115936912273768636241780888618048430526281776060399698053058331279838581768603680840522162309458943764681431413605766333837282601533118576835546701890813256641755021528263718807828132108085044799833856614533370739368524434017014003151716048989682145553122997706054627602269996548313760120246032163412642739008410272829678185737006953998920325012584172862081333698347690129497414506970563709211793814777607146620976938414814108852628441832421801071748585469968122611655911603629316802876233410081987979449330005778367204731653441670540858242144109907624589960175754925557917566238599805646109855567406188864653778698163121830627244774432642175028722886799872772473005657307741947853631219551595780249992065096328059806532415918108012124375527451521303344075651550866954732569581050329469602948919221855257543507169240999624739931897387435303385161379061115473528846168517618594146103482346590066754386187346724604098939989875939793557212965450108691428071883454790320373456251604902841940255348926993861142626720601847027348414016030506091313654160071246739737496886770313639285561931939726508892024000326940696952716769157106801285755739215958108031051352450281946578635749983484369366522752640904451887186121449448392782843684918362840879571342156938338419880375309972035455643814894281923743452198387449818913780005922616945071267305962577512518773860775001673873663163468638249809697337803130676690999888142221296224561368183785082575435149568443745266121747072119053622479002710491059438142017321420485354708473064723080498442570558939333091619501400538121902406232668579934710678627531871560175144136034948748051688881822388448663446818588190716717703944730942832601503627148253409871324349468499443774871846604903391669696909616287318436137675763215529881681090786957989968574961390839195052602594969810192184871990319741332452175040425140944144585204360817503003475800197168140871244902539042181957936830307863072133942689719122164193622624767779965269754512930398903013070980849127826370381219209779960464451065108219299264850589573572404345094504372429572338948154009073943076209484155019031151900850152974836721541792662994665982124711579833214733468796539116196041494917311870245773325675683248651786972778523079929228122966250963294438235758599606432577296588421383937165104070549064444321739213322232433979557496343408855489200109569980242609257789920621006594638239153165908570639332612588996083620396021134684230053980525772172545262721408947014291004439096236464757685304716395981530021273925142280071936557427513380348670559615333581635389142927287126355043812063494483777866423655633540003025691094990054644133048732200971746399451545280090923629114277584100751179229361399156386392248430868066307806962998680409875956737223146605952199560169228325956445423682108533553696042013788900786508861713681037333357949394420774783158711540011513320573179280508001123565699988524964552064407072644672135149627941631525555475374695415158466453756276889621509164905626715084099110932033170419652848394506924313113768422992894388160422383375652318035595438435815730842009035282187150476338286488063063078245239806388040775721456144499396242278321379237854607130153794764162826165532693319095708073192752678615786015063928164995189809479865151467203859215555741964709488594112095580645874624387341867323022701791756823968681593378961467282979603005484183286936771365799205096806456782913262747864813834115166857256654359754131081140895613600346378921957975458827928578720459520034602285626141584584710848969766383619534834462648505132269784862633114451571893511087341757872370482517390247652548558892231752997989036646240083770010035850296957991127935505626364770540322194529641684148713492188173486957285259015231036031191857073869560851982857942298381589889436219709143902419537107052708286002538219195679059158796322747759067659958184345410512760644139190185914238099175243315604461273803818962867522365613585841342587960122129252206635987298756798810383051171697227312706520348068324735442329005819349653713970132665198842771731985920706932896551267201072799001842152377186167013443193730167207758421282609154428141280620877777263971386850881916844578370827139648779323651960179851732620682347420678114637019767970563394474737736562367922566545034427536178877781988958627336621725114830544787274165448342396594858464273477700778488541570829904936069364480136783741292249514840228123394714234466983716965339125747765294805245370887299686148730806505548882954496494546950127565953031625609575957424637028878555203598592016307401548489005108692256173212100133524885129096505162365945232514508827491555024155813219942556954248205250044700181820870123480772691844015687619212665011603715135574951426805435105067291972000995182873593394795868479394617297542673710917516064773717333147647376969249185654583317999371748026526902101134484464777201777843044976592331367445537770056640727262847275744906084960569194044995361647209290748014259642553777342934602756072303818501166230615841522003780221701856009090312534912423427173336055822008219826326632338763978383847275510379564882608779287528841478734375400531648914466167699910192314397451518971014077059705009070890556550698361977962350573437083944171908498256136572559455922644962873371692444742399772825797936829340234676324600560947136847371523890050656439556485967949287159583244721333777432076484528583190027021780990757655242919714690746725292502944170980593805375753397781619182018023673696883992128514843328317951499792711886331456531751571123119296456030266251172440387585265607500975298871965500431922236327310548053261318654934075963900764279570677496501990796756508496530860159100163589138561664075179377027820411319915978609998804989895445636882048736435413052529813285794798729569057694387249038252707930504436266572009407503135991948831621817716219466214457072875323226510560396376374557855661288076706877999481985200168784633604174201139679009778189763499753659442424775571569791694839986698035308569150875231766249506570347808971102592557882750508518518752131557306569842250582342910856982728146771836430473248840366850514713392392656545288518043246623232547628519447197797042214210019320989884552270539193424339707844949759394278573060134233837289434276006053581494781358067444407550500409051450693971334674738963368583384264712165192078300664772815465390300310400710744214122266173708252990515473605758090491964321683610602700822160521761788016730238024319077881121506453743004141781189168863909944925328527591841741345704080162591546808501094914529650039713314799383028623212275493496732244018747007181647226133757291412331800392972656301094291828032564250268890269873586388418470438190725565892403492214589459365943945242363692304710612962011477285430434365303905647922939659348438080074647036644156473926659673823783063123344047368043905554159430404557614549691173728165057320718791120521790210361878080767149489797843800966645445362394551119997901719304353538190483411692741200195374444856191854528976908009969483320975619597398445367306363004999016092090390289485566617676171966404962115948098616182963186646870768618152558015381954667537738210421474700284419882086441315817531649367818893683248472096947186802495979674250499192402123529374662542213298298161240173915737377579043211343912329025659648109942104304263885005170070123358409780021302315313004148979774090480644484820785544836484300128085090419502858728623694314292897479508037619531947830309421867908281950085352309169299841651700777149536660066131678050376573019615403278546826973914722196253884351358220891312245170285433952308948041403915859487460088804747898628461415932205541394792154908965343757435452620388003530861153174019313683714396136055842601343436156708017362379106321630586009564528416063496077192318890845945425742697118970052053598830747645985563941150884820638959867878575302026226599781332140220803243289694927697774615147365406358223989682915962971510974323800695908274792260558495585359855776480996023337056975965752123756491406461317454757408582998570874611287631149271095833437125589658542680490346341754389041011858212671039349730814773781319500941843311211335447872007252372699896474720278889469613401092482339976721685256336721760437635495458365958276650622741293298597273655397300327320957771787360974686234265262966981696191536157166981687487420644170949200416061254649495127808751723805663066631130317724145683713552431509669616686458213929339669145370419139145329328788897655284062407527020842699399992296213884267328072776911157244746949730921383487112570745840429918849943327787419071320354357511776895090382745649494657736999225747348881934978513952468433534319759989828213904981969665719711356758610753556785656894288774978477645169724821696191646470160854976836264671601473870962064826919051619599479881783103079118368399607348857284378803263207707121043397883917205026970625557514083824424617264561434158434226988285017374494761806066479334050674489894730353454249728167615256993669709694614359211914306234618284676032412535332351756390238428929716597302274035164108844657976127316652870680842650245270027641863968524565753603548303454609680366790741664800452239356427332032684465037959289611447862588885016732492241003793732074478143518405016715784272431932017186683746357868839788339917446834240592005948491816789676895841933384059966286320265105915293783506908873980579207540422446192276929490191787850079833694716826073805299764364150203447441306378913749800748183682357609616431480074506256631017600344660333505952843705725877181511283892447916758549997063135821929476375053153252694315123433136804685097283697355792684208998337415457505880204794079529231193868902915555815337429103475153668561569875616721851329498349601070350274617842989557107057624572248507930742929745553172705547585753178883001380605474671878038162642228656337698510528570827178773067289656394192136003321821752275004418877638525023288381686712741434553539391857550639329010260203471104085106863462213473750133252902829609600844643945436041358066595156002606256508280396279224970514635752195460894314263091455940557671759827935575293189016394293578486502857427083344408861825448140691486488418463506432544901258298913219954458126568158402524388373581704280215040765998696045010467804236365433231913561291852309591848426801897158418428897009700116935250917299841253911307354508435642290033068519383517151310100883678852555635615159627332321191571393756468118055111560361789479758396843611157674688466380532463018596020590325616761755369012603665000721025555923012522644105553022248664819826292302932887085208024703848837918228896448011985194175749326086322873130886568979918212880884972875507582605112785115669233223296669684731301741920132344368677108815531341789346448232843177043154115034412405546155569252000776188260863794325995393830049442954775188051843735457768775851695428718874334696455209970742255291461022610783811738173771188780333312885612055282664094252076214784593603280407808181567292333035128691491034468623506039717103103837636556294961123928462074954374293008760381113823148156939945128843871751479663680604120879833428327930049004023280979280504754758538748514810361588789482329265748728071849256170268684787357725951928906109900253670784453160088384755215487608963161347595922412309173476504091075304643038483801728001027745077814162344810134384508891388079944327835750170720069830521146437992869729142194998024650495154856226456140128802596751719108225681256488292557510806091520858964482003792181643444412830750405267682727980836718163326330271402121720991647083045952071189894690491255258608710672054905250602994638102542367695948221108973620533900258826784896529421311690767969097365167491888408458482810573983263884923181946892167230304929400213312611298025317611414460122239116868074337588669666815868204559006767198110774550226522518492684809907608220146414227606481279285117263420080517533054978292258765701274659654372883179181178455016272864465445121835508185209142686217373453831183163264788356210595560215246077720110714488475645052562744429067981085030025766698997575576651653516605736437057165884776836590409337927472638623268093128561012573644007856694148320580836147624239077276574985029329930759091428064103139391438714470650662034080005489613635054722345449889565318864159742724119336498390114832612579507535667472346937991047327942119479217245342807870643277548149263177543987332477044635440008430275254009917912353654862027303370352908760734818523949466966179336536907709162989633140094357984146109773876335257096739891312382232656929223451052922849628301347777077386581830893087974421464914746297022851884831525646346345026431236509284055999248656749114276450475905943839275410910081885353853804747216471327381400891098758436685176814713173341286183571080794010220881498879503026241585099529592519114807952920955620182406114160127201550811267435971410956155455248776474996792468456401461614069710460114590998767805053120369641509098342336403939813987068200747704063877804517987372974024803464832574723480640647532294688774814602536470945123502924614397907764614484939192998267398573642308416211648008779982713670391990055319135959002913145066995201768136010023179537027163698876522361104685459380590427332305105428004017806279919783193658689068554317663704174617827099271535808747042130585021462347748192302616186229870277084812337061991107739968592114629955291315155523932055609642277518149759430787156657452060788351448187343824017947289131979495408826896760515067792020852489280796193959796145744945518096632995882359356280197477381591507164733288236432672617065541905500468026077535706579354273985279242498452259764556521781948535891825512603507804819093531180137889452802254470682751477803369679547909638410650417538529351876120345274530957354371274580256296267390264218167157041239940382546438348463621115825668856571988464644784007971344486791548754262567162331188730344733601017498141086166814337056754393980809849828732506834022705772112799248413381293623716048114108890181177863709214578387874957560133454853567860890513950110664376030355565974434463931861435915686163580334725773945928241422508027959136883926119483344865853426756863607282910698979413162900527555606187838625248168117886850234426513632079242592695541997352936146979123885923899187850795780468408927402830286941926671085865602644977043033442586777038000032472960387063054511737971736829072505482894251711592981580539949308330973836638677303081132190837437860928406205683924490762695340809363950967531501404437748330619564057949304761707094561680726977859498309988315551130304362428123669056079623638820118737025985553549617987074728811432772016286812996418270275312710870869283273175160092540025930643057203814820833960945105924551620565761881050792312535450993111105464763582099735073821104346158202636043625177575779007724907105769061838658072232844603724612278536801874622234692088485552467596216328290504710214731812929629820657237515055670915549007726088418842776768547784538511081331286161724718625585695471522573468993095710625426657767928697666326681433597700913249716337851073321563335019222944716196764317777279180686319963836892043551922951958349393128955799680001440661982183776465809404057760150615750359560145312120145916845537895931572833946382242986864674077887323344349758523225588910549064290204344154241413022466510031335226641777377717509563778980407880423079725264109659635150462736442663148341433203285854933385529966554097661454386093115017205936924634273275497781937731921721537191912862548613288874068467023705174354516827474227380261492080525960774072500230811232372629494251640836584224698929301871937994781317440509579795575057082401487420751978479387017858577975002879445086380717302843660363074010960957414864571516879242458440081795174438671038115604888919481975458501520346811036793075666331912901888495158846337540273186571624483583846837961011584747750625690392375944574541850059203094557384426798109472780716179590848061237514069214442742923122357787658182926513341466591216761895213800291436999464011204873142763303242279083014057253131111671562538753224249815979905260421594414691310927606504200397183127402405187910743241667456558296800437520717523590076340818080628598362303229002007275277194570614821216401992767241210887967879508757430100507943825672880057397166467446689831543308011098180105020928632632178265646320556597485658075934284135784235933665736549375865019769021965156801220818610723539592575201592638595073912851707826410218533337225079285418278886248055740520466333018992575732104560776234216595843344724061822966619348440937575192374655430651717163710465310309130519202777577291369271931047253230857703680589424980916099231520446694370363243290218546811761605648875759435525529716882354151435072597824881720843277588385654839882338423623517062717245606053145295787656919028255884061550804050802355855174175963368350658221793713815694479690156483568136589047896200987528255734950698602621536616986612776350681325998625217884029726036784482481203716432669484349940577656014300472706982420530402341440774043102596748077451555437371426326392394906429353860087742176148654580434173821122648049613787477711389221914919585910709575644944180993510140101517638512478794306873714267296718084886098966092939453679263070216082491099682316221891149320890657692145929365247600327440111236578963613444203836453128829724420357744115448625245085496144514917779669922353651340670646597777394268834011663072096743868112466724822185466016978311066004300536021448915940340198868372952825116450490447700148761564850242916187018822035127116973187415565829254140595656175345471276062081495934415440525787130718645049220054030933370905180084591462459275420201253717586996557994538436181249339474907352458637924602927933116582170518417796282268360979685386186670958483205726790787723795280450273643278788026910732278827503954257216990939823110252857471169812139258349784216650443269369995080082587313068788594321755404276219967457815056412394708235964843821799992815223751798696044644643263095002495889686443684017793078017345687422232650067375942299695816175076929470669939614114701587488351812328565006537504754727060660370405393647058717975323646100158751081892456563024117824807268989596047920228285224534933650890778684168101378336370397593389302845847255974698160009509367137409369596563858980131890090784730244022776550912119252908756172280264752368743410516279295531770160166887164391135220623432498294341871608628430416952312347067820152890844611717697148956227390722750396029618379795343550264560047740270821073174556397639530864418627683643589601492859273641200118899127470476838396385714704682377531602524394103413730206050322628825026601771455022945091278373130948094498490399097468882171615631211931057502147731155645930415136317484596060621301344642389653484108160795463109337667955051719433311625950554832523071629939860658544361595049864004767186908576927502982742940825929186303689789090629108410365009831430300390904982857302722411249508184004284415861602460131100189521943230326152975588521260431159160363831533523799388340651525201654056336420013890970817808717850700714582887012158297724207621175321523747113172589768500148703018872136789407196103964171500209091524835688513529533556563204096593722819320616637755143438526117410430513582478056673819531543005403508627394997812785970994247581496367177963408698744648210382778120881000732696814870635208868092588715564234110185698493494265573970292015365375495296893476738292831853543358528258379406002287583319274748581787244770009868128336934227175588707153928318643473464355225967982899808673231476577001619259134400041634921912395873355214692020911488336736086582834344634813807827507249747510271128474839027847259859680667296878083798480079445944359908060706033268645193951302091560381403461270447118707507003676948071345601920655119247213147043100288758342766693371417431516228393919524336555086804256208917581928182855186782847588346814775493116719480146805963681827902317567312514255979456343362044649322928187465265231028928898983883093501340439262144339040584670730912206122228284707670742188749235274360055836547923524839172647901551888291332952446001399428331036022508833779998749914074901838233297701064869625295464586292125683033947006292968821873265063497253403736228299366193322237133123843544025816830529680660839194782953232483881256062244811121824159956790628110730957014476051045162156309706020861038203934960376197217801833355464363339097908268185859655200810158230855888679707134228027308826758979428115362747090784680335662940501790675891294034917633597165240055725871392732292621628111153247829086048999349561464228945684713953632087364058957688540038614217900923448133443029074975143246290902594228017126714829680111709523740333672657403875523150756348430961400283763124008633503160403532147001068196727582191328329482568102155560734158443702351589006317320045695762350788700734103043973417782272946463612016858197012915835991789986231370278887523180143517868675532443019509488181880727435677554362410836661994173155702618607188356579894567896330036395282501032940167355581228572483240451609329274900015371222953546581065096755767650574280428792942411520251626626605091826856093298902469166819720634543034638706397233537770985498436427205243523853990794764235217617765480784240535132588038020895384729904784419122487876234500731103467460746310527909199023727771513423261957646311044969222218890592576714208167386987693324204835724553418404762813696235124433373347980677804736270871391643944503788248118663443642246672766162016087108215501284241220024481907472698809449346273711806623424273874572127526400117149491611968855138033442071142826139751764823305856275002754118952262237279397862726682621913931980752664751179035794394879839932338241747299604891528770457934674079082603506379724685239123352318526761094909113091104845232192477146014235707724340430726517832764343453446584349523768447177237556888735007332439842198862646313451836323783972714013452294594803722327743470960989378787303104745614513850491090475140600597940548611227386335595401737891257000444977512180942127038848601842738184529124649182455513399432197998693640887828615227177319793031805808003751128953654909743447784107355113208357145904757748679783200895200167203681441774151118322949375662634947122176215124889533433843663614091546030681084910437862186362457210486414927982817372291326937430158273355855717625643763807918813238381416502790109885115067998730844477790112966095393870417107830052086415141086784564369260746191315160525418601525665430145419953466711425672319588892247855462485576344129062329008932279417847280972839420760985452466183469607168418762926562750160020208250074345490068077237872129525888074786602531619708509762761726040325535137022178563917461859745617918766810622100749213117821733069517463208561683190313471151840236640760870947386616733667237976805970729220886321379316966553403678162974260524112466669039206795559971055584513655124555918372219359974372329281584639711933927398906413292629629471145062983165407536375536751052543786428149417879802365011253285419326185169531750601633727199457685032279962119466904935285682319714344463710515027857411220657059362983391602752214695334752720602639227422500010774155188121901664911048278008024790696645443225073277428948221882040046136889343227702936167784020695393188498608307956201974695873989821081667386210634806376375770664123628205896233397407556326876048679627074033367358250479103680646016109854846147287140895195775891542203896179803397059460697495195494806605630504291620299489107916981455605395946913677258536942164464807588903721685652775354447099945586880430227073784786311833030784844162920716437002109693785037979926424999674190242720655984936675846493941870828243624657970273431853678249445309133561015200126629028095229577734865915840553685293033982644669146861524497313001218392551891367311424716010872862860907381001251785566606326120031026215880090199951274529469989924343958923392895366542270751769802757778746606702741679007770700550722055452645852418844944244797203100664879420152606839071553830110800766010074110312721493553894804786962271962102404413887246082438008310956330197169733763240481207723819842158162376020877989988632729783274864241717563685289701719743376455028864356769639344921411398779723262834620542139589952506885377292673475202936105752965747989110574372281135959407070496658302871412784874147593514077940680332771187576701232534973447969050106342831419600519587180471394208827390805015210117748842997484914736764795411437930016626447844688990080141796978575309375812720418098392289618033894125703015833044747744144602908680679845365488559864170961644414495832583940161635515261116972413389544057508545238997766517717395924005551634735858327605824483804142666112273257757641310810118730975616735289120071783415922515311674193371943493124418899502735887223736902801604942038786409278505396265981705465680065479717003931676291936310996090226314786499121114188469756463568688809619177205386387437342323641247498309776589740240747214841035747884558679941260676053924835658487967650392803434546915561339554601376745593311780692736556796223599670961603790845808387430108359520896599403848647824958840937287282181393258098270506566673730571030995456362840965123641013982623259030955375458732085037085365554995880451011470706558089221591550074520173666288564570084651198980853425923881700555477663707599215962020090820583184235538586511609558836804558239319324306095035705434742374845319332865957255450400343242158313404507568245111855501436967035013943283994918225916739446864658505327257842277305755811000749729670281988602918494322651745416396051364601373442596816948677201024587381062078992333090152339785988762158286824631166656637953491738122722361878225114414325874359197268540303918132457065160191599555899307605712798880229112307210790781886861203005932908527144680804925150705033178953316856428744978286753558538189472990112776805805504820454742816799692159532252743033738197136704212185744687516696652354091667197246046242712672885064757048727134298314323026872967395600670233848490588264662607772892690831948345408538812863838303178749603172969670519507710396295283007301242115010401501099339356650572152322883795556759331335480757896720460436370501824581974337776304901996556600817470893690891901624649138118826496305172019777352867315814760550417497578274031752858982192953436295745804053326822363268573724693985822612543900392427816281013115721762691771982472123961473651201635455775264702662539135932911498284972108302277704411833133532951450001074842917196324841374215397506680311066435212868549970348534971692224826211653840391430056002467633239670837770491791641100234781725754874221191122777255683488070807786548147015329070827605260533442491153804955042644224425296001559182956922217229033342574286420671540042695492845660355008838647143498141400800966579145459308612348433310874459995631659298075726263238022364190040554047403085468271939470185180032414653246271098159147943257625456061513030785084283966164902610062777956908244307829319377105339698790962948705156385249062040343380570542702485504442022179545571643033814752715145782952972311913586850908177074059603715321972766430886942497677375892883085202549570786112319701867774101097283077014958125986476020685230774705042518967216483545726282510505892792784045889502059050340825270445174829411569015029652380273731728591551935010850630039194176178952703552372785648504724222888103057890464729577484458639915861490871800682629119229924343545522849440614914208271461527578159318206045800993536389173594859850143811474864072338565528240672841013443140162533337516139354388566288201217696742469272486733192088007184174009415117963129213009836618011189258810957093952738268060322529362575615862156554182561468232362887978290676920316030279290933119754844687393918907419135542791377739710685273797868551040764762680476442605790835496126151466339821602480095344031585143589620571054979665355281352780560459254973787228694571675696716055425991365078402693682066093463779899015593419807206633127639382948991444136623786764646894851175299404003722679671768271753184411940810441787011202611555504535098419216876449573969250740771934059397103073074315097057204728525108865822985280311954087184805991541906233275004389079071173258907170101858609707293182548433769856065838408120285198500556533159881506063274949668840692960435424097874152314502005480616931111887101326143979818972052199351530263754510912327016391060542003060116284883211775927390669358422702285815166928206042861002258781468168261596185384008163573109674169733534069301355739439098449632859074398183383828220561375015715075288198878774270680771470601559181973573973274714365131972031977170725035865850048143503036626854550327439171122284844011895345512478621569359431608017146772727664485285530572497158406411405339196117131050719946033623071108358007475512872934941793048083119677856703781912390828465799374349074065535155269395440149113332705254153935294633426518623024794920073754515093550343406564789412455682319096592549030986595245466479164272953130974881562059917093208619074450465427822291836314265386019464498478178379800668739959787935839105396285346716153335124694360619177513076324817004421579050800446327824791806456740847152432040942894535956760188186186257451187527368454238863168432365972429127111462854107758232109614133321177816034644634796583898587504629915880098759711096942681562008342067171499647329539742235634251586187964256697810046291013340274949380794641945205214064359864239042816955690339335218462717498046260946704168739758710303848890242619884604513041874824316448596384538834230775414702641481209599273003310114251096044098744143311805726623527125775485539606214943081970549351591218008428470842805117169668367240145230324512029780420045618655535095724089780936006929932977202127398943396320688341299744807944249511226145423115673069917860374975807054083271206673409813708733977521177621082256672280861287946057430061205987184398310531003110263518533290243452277910848651470686838411508182233717787773843256112151947237971433478450971767607987810152919158948014184855852106687204008898661948445880495642673046981239746844801351169725390433592532731331056712125651289719415275355629377791717472184016871700111119966208194694662391414826830456170641710935283492269046788221420711101893221979845215768703581656595361219914013151422089579805809830604900992076310837094661763227176168469069859404297165480132734471127775363547277750542870932544251835675912076895488672425574981990143934806013418818710633522044386495377751749472891450736780690301608197267562016849046722011482681051328394106038273902690422650856850934885489347508660356622836490526358617181768835751751841787926803428389364214706279462426291747042994920680830662087801914522015824991019966261138934931780173655142944930152599251109950526377591570134882558617701869757689128421232463565975257892102577305532549478779537963407592659559967716244073943364347734009283538035007834235237422535714864574887865900824943708210838408339216295170581105453678445539890647153837230078408642170692776245737620758817303544194498300606703581245996495153342491301055879053717218083779642761677577067299049456545133422473182499067351059995849394710541012680891290525330870724263652564630717785679676265222222782912050239167730635391937696669751995699369838147050294604530780384388259563584222958067223988868430895320252520827429486046495421584574534804391512606083663754471144768741142857640066015975889443501309978803987295613431014238472031494859754809673288746261439096270346724526634342366815684338068798564331304842628114852205159578977631121335070948310957046469596038067791027451586431303771742852796765124971185799877695615209155630160971024485203181694714949144495204510354134899692741219221142679985103249849583656412266080984318512284709246300385086434351503944952182299434625598282595225548485055543745117422623742902360801311695406838784041337946831352634007622330242202135830438093209207448807297224435403367096788935964111089388480973694986259479775435976850806971673419634196235900940798678823200749427324421142739087355073853669465769418401360220860846863716917704524806642820345343202677242282184343464504439796109062903737693925250302368884755953123804684769718010135655923339317604606226233685826238347376861414521174792989972098327494685635792755871448779423138950125954633937072281721321470988743108949625014775729499305610493027737848002270691596697526708037839481167054718438178428175614037353082059127354310224710442971569720259436969227215714449432401006456201574928390224399318079795376452566751839759821160768394643212142789736200820712183067353484691220476110665971492325466470317607174307574820431463247599033774998431757430244371386872787290167927372652832923718610805223718151143218561566014156468864142427988512692820282965860777546542308796404944449259823828481385196233179339604568064421531499183327588635358798905074751568939561570780856602991657367930779948315152661365165934692368433702189770042399249526310389504755607932864534335348167782251024373937583967469898265496815017569338847107259703604039782936752266808964282260304684539390567601445248760479811558824582931299997396094641870032505252009527176959325007318299765558522601629892157623396681981040902928287811188231059031811564493399660256864783389883931964799132601227819529410476921812800573501831903203956940424432793057365025543232563871425185499849056946090272627623181111102112567175339663206232603302120887299136981585864541568086093108431318225209630180902316820983160386240954908307407753488039955715090479961770160160429734828533745206862225281070654799320613252894242145648383223796536632246238286853600117022047617691504612095818655843576627164228354594194685821320355480952673086228136116637000239934258258362528809909787128301270814215518826700224519179648058145307351593337373409719074678165094652983162117366105615626392577449364621812738409611299218950622150627564970317870110642936630058948662958452007700277071210561661754067050481258456702800379330156148329361955804959093933208159206954910358173078761039311082738000066761740683785153251979622764385395584326904666152484124819768686353721354180489168306389853292578655571629228849530884133069273741167632964717428119584631420706590830029431414411332433919805880464736281107216738016935974478226829496083424663073306238554269726459594469133191127047903801364656231193338616766121374262386431817852454852188237495969409718778350100134992574707563472586647113199484234928405054548672052068124380098451461163345662438162231731092326935346665124210249983209585496165867180795941414112906545583157619290718341257754371394203465086271773643482434104403860127048208549464341468256446724659349665627231655227100154688498712796658718772502324469929335600816667756572266966100686596752977942782193327290508614728065962610876795706979432491900286175774845464970993306772885198947719679939554295537597901582679252769696650182475431217716112315207002201648924302487545265587608331769459337191533085044124360794931878124115609283601513596189055909554515931986307238377733085326826401530495017808249498410859376579546316104719113243119643423258917455428415986587444961328859249637587913591730208039198419787777637710422341522320253681786254814515571286728189502937316030844386018325747412033258463665497338449485099651855657413401399372876568746401452027132341780445750417695576530523800041888581379979212309699458666227110368502105694084451255476664044063372352111978916503497054796239831867175884236832439478320398882845244485750066553127261863346885967246270498595510645728030922882708807957666439588755929005219778138047879714133891774280296275025734487042454707206437567957804834589897690401501330121413632493264716849901581304143268094641555236650283484560295723417627671622007173215388620593646913009830727901600056388944368230273308559636939130259032359317672311899338053269126469963488943602481755874834694822865663093136368463810655468500726044121335433391582486092036854534520036840269902089577162849182093420132613483647111205944197076588075358794362367718449892131177024609907605619260183960436260058737058468978997713439204623259504723586093757488047705644048616490860265437258852197611831527931692636682391030098059611096254172548971517910526209269705288767642568256021824023517916700037728846501116179793033468360613265706470979637819290735328513446669386670131773624268247254476673636821879724958849996607336779358017333592862397948605739705606225176402743215500503036379396866824327530955790585452511395264860176043731121953965303296308386917715731769100050625358469867623894394842464710055253080171784906038821341606106772307782680560695508759101022403589392393563114055616287308295375947319642803812665958019808901952847618773050368782593480154636664490987564021604587156125592405413451612873092705183502800754273943637556727931707585551637896974497508376021373381291002036772935998973667352067426810431033917972789103904384959861905315243614101603668251439780707927799396815293703911836280840388107500444129810849360287488258001194928431980068953045849493567714636705711437809483814368580270661787612759396828322241744502706478939295420902623131028950477027941497956622797253277271334975463458174546087484005484343179622240527807115962697939413921654138654980628225536727258824498861513095603877533634474152031991881908664157038560006307982394814018176297402357782770116410728306341397768190472378262754903501222418586336124944840897141464062139339232811933387479958297215157736104645416801478382473951524378840908357734656471777451335079610953221294321081546781182360516327175802229474577807925368590664751584565510856651515260371674449826364144479880604619005309932436922262244412662308029464721812538264225524611346679454696369444107449021168504532748650095221738019292602559537358437558981038121300683435936862391387520975475550852356755103314492287079405386418255183952713712075891747967408630578319218061065157890513690805916817746681282722071458243665926632670344522837523445650609344079329604779937694041365826406344172672724773503954746008254519882107560479405572864643192363563516291695583564367237224079036514845000900163654265446390866667794688263297193793129648544137355729341335102488334081719517510517354695307582638455400198300365531504841823113209394123659428395134753557598664682178328982912636320017221496884957218609140929604764851420763333813500511652004189098012696751526163310875774692408595337844025714340696352523846676309245498712769850431416205313925689605416947487646798504105562154278207590024036915745856249557231320058242702594074889437949008520721775488758133829355999904814713997927591810708592060081943160565836899748682551013478451018898950487926259712232290612263346531906140369981745368672730173471403932344562916686855072967784723525991970296335502242789418471770124537143131892369348689958215752492033961990099097709050353986214244047182978021943466487726682762331060498459559901799938966995268620789091903509666105274725170157407568493576396027093623123826155719941961285131159880643049159210459293752089446169083729449154418234312977661374426292632772455484494264281276204584203821071378459959967050324290871094788726614105146424016497994152841277250664538525836533290002711098376624313993511629618209248341058955107105678186804039819191834630079936538165478887961876957596468422843665720359217595580311252990961251592104169797467218764595124616308927106246943802562296815486956942078106688016400335797486857599608943779216065990892827035049302482139375123004375050357553729706769369049955984094119712911883761025402462422539295124084296960781121651261738009079038469722402745775767642162148514749994972559114995334468850117089764718261119938262632249404474759663586521496127255441011601237748066259584354880073973799944269364549756945369132578915062213123763556511089239988222361835069375382681351169903941357200823755390447023910119426654745386365746053267336595855349768614508887504241152800583872918317713588444940106240022951976736002197193124276520395395054799027898025601729959045020986500819021630582807036226639695515385913749290744853913601118245774148189105200123006661327487357244723020040244164421467043989247350835567927650828398123958929958645211712239391020941090348651295412823355750789488711253913983524804782302736660363143295317385908318420691915764171201968033873425314210179420036634587438424476376675511171125360143667717334020000640344218790315069801456967965720460261169258546643489716272731328730557190727534836905742644087053675651176301900002979485948682187609705629010757517816234630518551847034759621906741302228497274489092007687486092992574451341697225376031034482232971077046888675561479003695172022868909519724480315641529565918462460277208944860200609781618689894499037116386464551189991133438926300823360602155685860368823534635737760986618359888876959423207587459131958432780094184892684759994111236500385652678405419376446853110587070188521660197175329548245192902060694900253330492994767959970797949453379756128923556374606061825108851325872893879175309465415115208830511661800616304659976829729142158276979586742972270773846518065735022613830264891452783644696122358679941092743952318046925114794579987064775457875180892061717840174970322920786045446028245381185960216926035063711789753693464045056894725578973444272638573478703993126827001920073140489063090869856848152858453095134985267858217409111164638740445911008283674841352850928384413619418890878229092783892526128315755783878355581500301306193653169103974702647439013431814547417961498192720328041034176199489977721216702929576145837257496864095858180133024389145126494288734006546118159494709070995287981379988414721658831344493562572533203446906168667991692633918281114561243199125891949334729279354934937019106833241612266840728610042394331154998232879338975727616064316550692826442803361816615305872560176593293264149674897084509664882445314884128504878889031393086292442557422484020574676307925156622787827830125073635854562644316940253581290017752290671432792461672519520991945832255738616900833227963481967103935980449893935071959432190256628827560674605370168448916560783141358841812956244172496011563863213012912409322798658693741937086666337877776745155586959577684897189444498305942429429057562619939458988792153519912756304485635212426032266035491491833362985037192251609123383592561383781578513703179817871541607543027441986910002149665084158932272952211713096289174442488602206305455819910919322225896770647021169995779010294366706730593055735277237924408338128653487577477437209339193230945150434744867708776604884747031817299751042836078364944140169815441230162944948072895980657416379952583354840157903473301612304629903057267132238652047434860995419338428581131507081554174423967116461629954177208146059919056864834769772257261850690518563668659784995413246454878847897531457568482755100798576909907912611623839653982495899245202662124193302193388556343455942518082446549990168288102471521726459105742288747874072083346349950272896794622793392422980867963393618236368342623194420474578788571357704294110742361918784286936288976728485077223793042420943625886901851057600390185762302373915981580022832086859510579327380258667668061574909263236660433724620504347682133123406153262538036694032832221475769853423556383052765460384625112172942885784462167673960475336340832425367553458807469071361231107948169502309593643097494677648376981048352155689021530720049793953494519370291062239318494798984848073224806222882191157499260654097189079212832163101717864697003004071245549166739567634219721120346717014110188622741172022957379528832201266099028625793241581951808962020597015485690827426858647681475282801724125000793047765544071790458159537579361964485355734375006301848881841884534908266851329531961153118525026596048125215139997460276052914199590466414761447165457678875926970344089896749581739806512197874557667387253520788576520051204712328894911792625590214155225096752071571017755710448378584836223665712147811901358043378468205567182902986501052453624917950846718874557227034129284886689681648465453758397720714403107477920814583047455555514101048624935140154176697149188395411078060127782714449788237935899552605972636260713452308232646315597686041377640055785218459767092598451686675552375491314967907809459741190197045604583304752896082181163902182032682917391355906757424379936691828431458574116535940997702258191650047033669873997456052162959389513185147777286336170714251037632042621857081187157870133361151266448886690217690033073364133016190920846461477812682096504181193439872704919715343562449500575577324683777931147584448195050429378069675421034478359108864642368705781661095430199228005528961119215142405679753605110425485061280318261861232533545393537955908238862791593710941922749704459028325661174773295529563557982422225064836517388668482871355069865825770637904846410701796474474776459940074515891258288294022029299191850044497689944983209235629772623399543142051051178705665523642103784078967711081354413198829681296014383045044359357090366789937807740115005574861962469277728074945026153740308679316231049806522081122793906551208700273964834811184290670934027313559633861237643299079665177210809868488400871423143012258129808463473919726408675732781159292780448106887616165437901764747273322948276937179632205642186239527245070494069649407115549317169438705467595074421868764440284368644797121174214863723769153947854485771721022343061404720205399941953869005727787102445077872926103491165982369490057404423514364214990301069098028723347098751175971519110042166449972644778384110475255051655416911564884148486885285839827204319415224147988703954921429895000242076592290740947850684233429563148009917685722667855029530503572424355476940162401057201837905773003602956379510372780684043454122274234039945253940533390992741960374800250736764080324244216126335061642551922718179473703832133015181489526833475132911497580091035432839352648379364347398690202359364754983687108158167019695962051585600021347472895595572998797478795364765657732248435966237907468293998477929047040675835570871198534490654590969113994557091641462276817772266348569727485630572986245308560943931621260323034821672014127056140486806103785725891520763175534557288182269327089985064043222405569604269865834043978847957785728014235416656412093394800720495632888793681009119019485546099683922618561639332260259708685524916945076192386235705000323382909685750306743767241120532860991671080716572880654712272991859146478588962796886001675040208892957184090433644795832447256092808876695584593728073903546361250985090680429047564816638854619481031944970554514599800639576822107052636302828537798773165837678103097194807660057992664878431406403888190673346849754312373563942625975847732312411251258540728926200657804599170605925073443404547203476071411769636454324206227704974559776385229106259889233258288938885189849793015669965054370202493153795047116362660048585068933677932880940341295117307917424979346071979251888689754263214578673301720960182036523808687805660232769854060990524217882750546529395370633929585714618258306014414700332649019677661750590644681446220352418235899152565709089984763092577807519427842688691085257071404078570595259113364943653022740526036924420424769434921896732442152353909801410498196262790120851351631511676858288040329080040896101840839987926833885803685329597918742755488031137964006151734273198378246495566943400787554746652221466078923914334621305589840981992439107880130358104309631534147945287961865754243429603742407825207490967413136364996520341007722035294942990037800444140426506512796323523144140658347829587277522406291595472048161217869022361051292448514615995663797009510666098080329509288931772283546937677044260115185782938378496779511789856748538541257307669030253231162088329235535580783094308742343058711054739995094851858584342358415595533268933261982312185529902594870309278848577171597682641294243964868749845092478832011677781711117479986046785568554620539497912767633643636825427650894150574047962529214098580648154027568476882528955274755743435773452308995009123466908197905152847791034979398068856804526108337133070239365236400973536461076381732506246205172094998167434542855446359982712010055432285880447801581932064120048146964878956345022217462975513184803152485124172085033616022808186941019382993800610874931500658656760366426311079894275382829994950432665929418102485455374320420376125912063098924318121386743240890275030573239342079597470140325857909571057489870113596984213555569588156485704820284838626137800115442661667970219306393767236407416274029560982984044657843690669560567761218851621845713440627600986362002820636676449141226394055099476271450470848481581884574158582753567679521027363985246326323309883165089239028921419405295204028128090104740118413570379602218202867911989703863170121932469027408018404848697899269241022961066867857971568925674067945113019315896924990963619294122352936683695739739438395427288440998263305939852252938156078462466975341726340208283890130459253473907174593410396140028683801447856956652130327225999093438716549428547570178860315227258689137474780126615315403660620882014213137808811990237476816458803316418185779661614351694083192460190101726793071821097945849784130774923434923594133756613029036540361345578369813464950195035127087459904502213257468378890621165050980247679295558781830436881359153233800406820955831442496840465610212475233335387741469892842405800935911823662393339140443041790572865374860004939355286797682833119987957814495184417132506741330346527550681555821097194412229703265140063197145044144051776841465919603763480894742533004336950994809003077022891594362241946526168775066499001270425185256413505698662808113509900482037252923944670993989785788974271686752066571470334655106788067224464393600531686794010205944625633809018069727525899563559460324680243684268127726788926293680631698391127192664605128577596656215565479378996431020573777683414889235871576099978430830016063295405063951719929049854510208955040957344672707215072548895987451713253337807102522921910123520561278668353363716327830097212317265515672000674365082433938019201995803041128132901283886052538715161330657119943467266415522605366947921512384834204105315382371684493187141445217005900155184128680328648857685649442674982443005404878641679291081571873228320645110293843982715927834788125795838657879819086195996196519145284628586623202761684301263457253385969188713662493319912789190335549240440506817316740058156375744706634507282815043914075944550707931299636479660741273921443333986852730026337311849836247865523643649988212122768003864019096820883822979507371308447816838462202516028301565156981183548216462019765202626087125991460491605960772115671051468232036737886811575617473027486454637710501375645010812121347370087792761127801485079839911368657503961046369334720857152732771087090413542811306732081601358802563885417411876400604172239450847180119264097976898991822037311928893278055968321093737807025299308010123036527379522406299554714877640730139671001727931140931133397289471367826765785047249202732799339803773004160045922923300606872562299706827108878943576728858042060393852904407407832943514574972256374047270001754986757649348072723565637876998672541835937114362139809465816983413555235966027636132229395005301246228037006963204417510920616317242146696686054243692653116795730256343342197966671160622060813584378643003614706547401322508373654649582634328565298898366577985542820433216595715172982462881505637082886704108193325801780722939925060066384050842101749613150475137398311173917228999231675497514658307280727708734623596157989956639197180787805856766319265654642109207424680923792087271987011194416065032181668336651422365459126479915586889091973272679442246927647810846214674957225052685334123479077498911333043195507854928797398646967821526923851519793000032667291173701176850785183971091422833459642491348245566583887045135859021844561430137557229731378775874953657517353650371526611795224710704042180503085746697619625246312228535872622945435298364364739041936178856587339276303565156238961871971525278131959402859952887030264077157172507768722231345321000809417576130084629256945426277041390461739232986165950549487806283016786093777760302969709989075588583095787418411048701804997772649030602686121137246976136624647067696559741225612607789956090634835021771652234186672941859350373666741684037134456274530737947670636027712598175887816859696266305679322648069865464753157369621792096263599294310234794853835028724960342961801971027121613508786852095912288650894096796475643471927498596015515316391165034313594285735956246345285731759709231614302321534755351537433650683869620343597470025552653582545199406509040214875820186398831118245621520704099512025559420054684288322764758321400460209480733283351766916543150109476221315910409625899678032847329748051958139997528918570335461708964511526437357504922127975861388838331483432837646807925649919761263331666220796121185083393014491644994066435588760303031576805638078811129029265685803661569630687679569908748817920172946591034363254903937105808335950784914169908717432717223769551700038138962667776600994976637604227632740936036615800298678870184299437820378214847935500215134760560458141040609737307946490430999920647924660291999078851258255802900358113251847838388364452357279458963682491202945412201554272010407600124549325266789891387999485763547385057832979587878727560200404511496765876242367864985284431437800612133746266377755264510286763965087477388116585092340933724115375703829216389034407820720061023906568965530505734135339257717645249287165669276042076946024796451249501751906149782609713563789750885692191999069774279650177241793475437693304031597169821795761109806105777356644457041929564669699276724520777862482859400235405238449603721075834126963112875290439991836520737196027518705490699839149373929761726019042064625666635343049170100448971192252870946063791729838821880565888290185536968166295878735058434746200752534132272275758787951236210190675943208891047051968169199692459484858231767798329922312541404039973029686772362554902504870307880998935050055135959661827384371811060962592623868147493294344555160554117910413212321410521620724137951471314325636040265283840324530556561573197241933165977718657721595818220040630771378119495854632936412331496743441754311779677441259001731788062112238527462566169058644301579465027214871014192539715879995807511544162218262342390993162646902150475593684350556733089678559651500713192849625266360071272324953423709914072299905338792391880754251771768807658487245783676233451041036025585529072339862937806171857778323527394683376628184136012374315531279098718430015384963547996544450125652803223247824699469401093165230261989460516739999212121506469467119227107277326376773952738669897376013742294810145779798553611049726700080724381816155296765840719309847914733000629603862183889828410776678853988099155910136012221887550072231123655309243923204000082502136009955457508411600640831281341071290958330029316712632302032586802423386009947073740036289968538064248818231437775394124763096251956199276626363547796414269777081889715696042752915729242721869728947680807054969830171037372667493608282136316439082195419987764103606741434805667440908395494115486581346747919384202288355061869007596492492949103341710795366185633531166225920962072180472010056892089806576935052410240969848441315198597520865701316742302685020059335671117920969487565796103171524817493492876845423310871631671036757564092384245912047244385529626881118863443766394676211729234636816710327762031086960377323729316988754211207190434946546046472598602470865522170981307757412384138863540132888004937595403171798823921180755718820440981306506968093506423133031740030688604962338440353988583845739720223658121666848669622280730213209657620059358578384878341517795283679758113141320217969064526462606789477663974233675744436347394209874918014336863091247299522425698181771626295742209533774355500561096629979197193311457414628089808962788708018535988507987112739058223589350526709947500999649839311562527110394037864829367663788138854093071311939188537315932673766934018958970229300767505217172511707698504037837447662244810507885763669048187521874472569601331998289990141892734126109860755651404495509602562813912888509779653494259493662067960726503356446927489951036103439793097441609793062056230038397680977270090533228797904889162614623857330779058706978132755004554873616216709251308054490324966892340488240851588074732983047089338764590778063425894148345881229279637519064511613694284688747795916132448083274991804091923954590425299829170007183399497150044752370985739059728095778177923822681450664498628909559901784127280841290100282551455916723012623694264778107105240123614796146288578599431127479189012010423380544924465689433463135344569320416556889360199596280292365915000079717499386004133829301787889262512879934436509546665351647768903841940043811194465586930571552684746545917339155054996367818627346583343881479723021111483762451431738150609684600509544970877645240732399506040448460652211189580812764246717121466908973602106193876727168399417550493492581822724989223384665159361736754895619546118561810643883133780724815612445018927519932361814831958989804983358467452332955523717190848325865115628258824584240111738293819575547943288675885023044802986027372641642937576609304004934719341022092851478738975769010871534505539394698984641180502008249781686499252514138259229954219267726703237095193700348488287908672055970843863364228984148363355575892744088894738269474195541288845317540434088284450323435061359760961363981713833800600836343765576584559273468764866739440519864336365588808334069807576530177378044709645399264565822789045599080180733290524799779854002833331704793663880324903003610971401879171605560868239247948873990471401606624850943448046829441406620476526573498564902613669002061443396598663397012011732589353798026116890035388740673091975559679582866099279578402916631642005867549968197012338664407340606737026509796176137099484302696291159184739997124502116898622523102121232437703202953075549573364534678418769059757922922260944890879058374665949656191758426622290992849387956834955362648994019926813340153335434961069613046435500675142322728420166570282941861248380576928310354564674425264022456533192182061874945204437572860323079911178439310807519912532638212415993023674707104678577542598203034338597099574871850048103138257751946235277225501644158350651582053790819826532468640622808616419162761849726293059078989651323021113297973226306855134198438236820365759825033824954585925329149222910610314468874357877332754732550247642199471962474451464307092956473104709229810837923014790011585124416162114789740756864783493875207886034237671508400429965838447625374644656518086695229895168078033034314048868027302309034568257448114703380393850170283061370584897217893028854119836817273580027939622504529990136969580061792690807334836805836131968024044937964051902218204422003990596787398089452610388898331157195334495871357843527771964401289749373497185140249166170221473010500640434020483527374323953429850137742489481495931731344114896269228287210147956078797955044889199143086752677793366578009977877591438193855781644348586004065675699893184047232838471881671920326892111267997422141673792275492281766467555275447111186116779065228953492035550446618256799364410760767173133981341829103582546287487666468718622500510655031074553018365620035432088748377421846034605553528354179322955014722311397078192538939861214310576945624782591405809706280859835375214257141785644486099392325151533157877649666937115786545499298828897861521867908962513459645437508070593177012839011664541938993432902026023156800864227216211512270633056803959477314346048936485548304496540251593325944865126404712394959615909239857668680458275551961482038377703045690686905900269166044660442428129686836831781228831226596245670499354884992375849133279257656452640415621396742124787877531868403784632813764396593041109667798681892760126553199853409226054623367149787243014737667604429418276173879448814669266391564319658110080785757833712624278674624703351388382158974297737786690346430267649055681317966628430314705202726506389136322069195289494922522062333572361852118697403328879490709393680030001532779064223277336045486054293089339194915031120045899063006974648644647697534024045146897844536922022565799685446410135022956418150039239982845165151995846320392230494254577107866351323646050743775852414530192933947619384976320772509474813533210668732750420164419036885483296652905593705360758488135148302140244934216998752684423065969140404240530756063776549121863668770830831779146020636106286253092015753159691462331203566449674061492552197910310162430720620769998560382002273367945515101258194113517192004526772754024641650298294014019677312431525259287536824429486353730998182414258512269329500669939277571835518118134700605002070013531282101541786746161845120890779680317168935268498895108287790062881298840657247079881941840968013686116701966185567790489870123947909714333635062156280555198379560585066169646648424935737394593395775158170338515694730722519757043388159140567700215047889156253483027015463837216760734048477635496723866415026386825057284969015755529507279395536157411215396473889239351071459878241179760526390969820397183603499284505982878566398601086992098191870418198526692305996878647649767732781669663779441660290573999583717265201826024362802187901288713175200676694086559632779231831715749006703509277464282257023982012409584872157355571084561971617613009556783251108030095983776108372610261695384811400340009709466901842220280707298062526165336173833183586370360248432261101351615204668292579485158639394624659958868878270764481240603742879702080139133713302494793900070368802495889526037601990246936412042617870790559013572027216582064128102471140459522235166688144542939357027752970923379353856224531892768300497698554010331474318810189057976343145215028532511332424387044370545990897052035719930242108304158140750530787386927428294347966180152417931664837846943211433275771094268842839898734351473279367400349715089654904810613684336558384900591726569903020033808364599641784831562342574864060449863250474948167448782912449606829446498731222556039517635767002452657589007307877374604135858599484039729388729968287345985159128990116350699968413067468069503592840539856147275367333535579768377163107183480665921118948837802031015150314624765536968407140317551615554083202970806367514755176547645253860633045912449860043132959906242658358934991100840761425731310248552140547078179344237081687397776572037898976849493850998461373704639754032706334520393734242731436925934330352729606328323359279556275665526348201736769600532009178966500188965536862528744906890535470132719049185579295463021971963308267643460167077959042922420042234690163319709909186610455209780870304357550057436439641019658810296701651477093924964842864395807545704628705113575441505035475513907452395958019628861933821843431268207962454607159832447845506599327737495117964777073135216032659361154207527433108900753496432368200088817881680342862497771518811576461373371662348822641389910836567722591165356338421370564742092956123730766517322241109345180753930632209544181006282856798113884122858967336342612044630918200465416638055031416589773166250426893334854508042050459589530409549471970181130065249344065660299952105788578302109712857656084514078173241894421066266895973976841953698772794941826027130838159355810252852673961766690367360520625971027937275900019999827781159112085317201208152721821215148906752534119188494274867729285789118690842702655556104177126808383422080886988949175718265180853656843139718259202728026335610057621214062360549500295420808887681202757747946963468449828435327616702187173516433125953228607467272879072412452771331120019628205652283470466367991584118808811537740255330074583563788747553090075943527306201942069951911212892058641513289847774239127314010193962545953518057002698688683053604641355899661097433522112024280775955485069915766948733680443939700202678710970797841819953719087299896601131855393545522872034361771005625228555677864402452904937972695109109937875244064897566962837912380664135188329056547027215709490306187369543864267366375012729390161394020094741797204207748773693076639521391292373851707566732083086657244551550610656975576033779542810504716304194316582231269555780171523544119576018887578096321371159355645296001764937657263256080068589044927738656428127815675376951118537692466126735817141223881364789379351270990365332874613314598489940247287819264367323241484739335386315972185848720039773743846960193576598850669417077006322799537917789174031780215140952203375075920931987990861334635127294605630285474071961562375213980863221560092469316218342283924287131676833669267188864745969133786118806391370921084562232613589897787500897787555950024247977218681404137324146809527187280784836859784677203318233880778431301212620752826014319170429070241279852251798880745350594595524719228428452206509404639225036656108687265279477529125035024760235658637647784199299219845785600120348687834223444624656554633613057680872303960765492677646603555589688597205692229494034491062150724118531778562095348762839932755361591014963301083217141984042470939895351081120072909685239631885626505230773319473541389546041722088120623159475399232102745066403314582554817843367365877751510866540498475857085063275018346607852440326088212155194664068560135559713647288760551684642351450817133057735476617123963936049924491887408974745097204588635414550314956944740752663636996212412187671705756538623931257012362634907883180907121099275940360596371088511808218771500708843291531050714876408086388042857807412101392334097511758597338673329147322870512304418360559511803307017113159904954298264052101908050115743726557364058335626545230560166676115075507577495420093107710895959206337922673028541670584217873312241571904634373617349395068946559204061431269481172235400591314665644821114844436371467175169061946688330440920440673435883391740389082482057964718978150872434901014446023806498760955984601236560412036842138492157020836262960745572519400393121063668742005632247143818726380736937316221579718219215529962322986099791167479458854144641885590212742178706569059709817423310941188783861963693193090604265541253244297313376453177651079767254075219525553557576514611164616122320345839732800980229236838761679679516185201434910465925762402781783028953340328685256684162336277391059807248156752826378254960789283108501663283040383116933776107341122649763025720511592173266179208693247793957536117283718854679978284172023243690465054837477441209274667277084524467716267520183655771352093499749478241995733319560588605568389316405342965638755222816022201926582735782221072070924830268173186966977498323316185739586137042784681315290681903231326244948488141355420013354818172492297383966550891685547721772972627783275279469359866625713292939005181629837878876169678501947248382305793627393251646926136919239264949522198467963434553555826767019328825217591986822262351948342658379316561804186168849489651180986565485999346819027521076144057955413500598986257009716477429682549928488829896859638779245636396440813490906599151986933458355110868587816451086280505656033376645736924361403410383818355916384860692322451638193033416008566656200050422928077419346995507037276440982303943446162209128966849551391211148883449806022560135777671009636674265599224733797618490887048266984004446547368873341468396093170957438126291864454998810083695483056717322318753261169881370609141484157423360935256655163314204481987324304296194942512408554905574486461216415566939188580643003237664536814824487729208872110861497423243190900781658719031154999030678087367341589237720873877103633255478461449357416212545827851387368607515152406603229602188934975135102919004896655380356754041436414602515271345894092317464705331399147492185985519454569808145261849092825744177423132448726564318039073970797533646742085550403491477485305584798084908265438274659233525399076247833589178598726428560532238990304198547532189133056826538426869122417115337711131241949344636513145310571974782550636050637306767778297068973224420847950089622250119285036766777792840136304702512359790705488821415597097642965119973704065745162510214435477648042673466554119633940407478221221736424767949393164976539197706224946612118948804346518692646028509256045096306854988224091484974227017735744256116534027652276063469401435598884661713341535590312146009092338220082189852256898086969497331959875584863262270663433065928894195173755228505257228782837163813368207285799516938491397637743495312499325729004554723439717870911904398514319579621184003595251642748297005138667233681380399209381115511331838357585931425725977926396004298706605336297709235810186697299135871376871432121149537951446344256105552661447900368365675469127649147706046111331242778876285379939771226372444192299248669958710504778911977997143552065748131312937464713162316647820081573572476153532782102962804266814835451027418551467804320503737194293468111586307126712124199145326192579897865535881517724019603518696787557826995092355042464015222469902329778511724233838609208532703787575652482756217952915033894938497347607277843661268561260250790324884723265855102376025169774173564776899056962773156800305372954242134972061743331051938687081064989759756894835536960273920215466962248750021200551667319445329659783985092832844317105605500589853475375584736922978393486000744159271689555875646942204300643951315560988539396578591268120234029126704844189369908614929335224691005428482551852949384580422495687423771030177881223892545396791909450680914255391116435288788032338395261952150016637436644927483406697230687871133334164983432038068927880350643309884454263625203680577868786574552100435930331306121432587448291708975325673801362181319546744099859545600741213984762177414415723689067259646465488611772545111560873211462957539807246818771953996589793991805820485226922715149941582895755859478720818035958317349151883976313107678526928755729892628436028894720375477325464139595697896296930801107679712790936231790605558783287332876707201069572285755565950142464719550337865695328614209448392511928421288648801031736186568994587339427977216630225002971707245275222683221080994223137342088545637432211040835253460917792114327284959528465473772248952509893303724189613009862802814300587759149188226438248024718225640265825974353675507262298951860951289835618760206016442380132686939597680218866219119062525860504641297235035871209385940371426715043903162917555261753883653040290406968911899337990762054891127602339342152348381370484117330618377423390378135544943236317465955445918414199780479625978469561921668823632073543307441491971096333118842427015601841070816286245887985825612328988776388724122552963336113616944777345049743351346979902615787064435929338140940062895560426112799284650448566680813482128157599106237030131031240604351766232396345926582929672472037936724347873674644767541067722459241130017454292149205008846768460812382609656896802427532206749642709985547469900587454983269624960436365686826348295851323993277470883488466882312176234105649786900671242620743572813413484033322691565006852806070672470866556434612444150455336112434184198576351569718572485849040463891183239695902916069536112494732868003306023945787008037682542572418828316495200224638208872283949434395560006392875824455716665406016412305219075995316886798267058341098116582299020592175333197572288756781408234636054731485009517731707285522876993636169588631317351675143159796474277814533594877877911923219981464253105315323179830726209444931013749042158295043091440155165941023562927106636132697948451357162322962659923121662400274787655412941697163847770597172480875877883504243606793479508434036472394660910927817268816571458728254584868186967622158322311958924558024354965576713725566704247248246268445800768905520496312044755709156901828897329455830220749838184044117507075520576396058534936022610379015902190883575046515673224420434726183436514783272002170497490438289842227674765593092934941689009057225520634365760389207588162232243006189106626166098370453335062113364314412154877772731743418676559741076618074640400476193274582606380542177092800143915341389270155004599021683922326641810894951493236467580641792457726276320671628340464474024314222617036381255322323437738981985768087655242281111430712801662574582826375855667266928382395937644542574734965140135579692139819582163530156862413830530635807936258509891736001478768912746966605228597460549967262557399348536911197492582411871154951711758483197880368694003214834969953567308884005647811589171039448819160303259027107095940795088668095133774455131131266585152202767536211634085445639836219525342667502462769181846148566577522922714253962992602716043862268361105778525670130593883849253753107066832602991525939989367634292373797893200146388915281259103962907637553127560596045588513250300174955252732233676442471380435195326329862374362932938982982724976378568898703196093142761683515346390420855299521529901776039183887195989462856899209835921048673026501297663816105972968638087299979817518527676791921497663428809707003870219120063322421391946642493526308271872931653605023128643424444587313072094521220936816975683459187976561477220542676741000910617522698967925886063288325175626118474658499096851820323250615635889113382843785106336445514914305675522736445188034263264847772583779004335068045440544408151399290477666363081326334682318746963804249382933789734716822456477283405648288746295688745004620799050524371715385675041994939742432978960125849833087957933391984329877181794575460115823922641306606506173059707387872019439698002927254138178208121315845602152666121302305344792635119445219770237978551264626322063262399901465386322668177926745468164795603863147242347621672772409190656857135428885822624730769088961711845869092201797368441976945229521633964279754580484604872043825225196284990910486079177321855623479910293105213752193822297383026986877168189291750938488502149872962305593123055140021298303259144601090792503419898439621838984871947031908528479202082797892446249422314206077494614236524626224111903682645650527061262078524347450531849439647441685132551357772710855297561892527511258761142914322288194370688858549109411028321753734608680764490912808225757760856118891298474098390415354478226444557780013085020131937900937009710946690528004903810285396750142093063336365818608912059818251391953439674620170861724105566362227104835049189356699399104228866099875416733653892106108728787845539408329219542810040258889046353197719716225147040169725539989280860096295731163799259431673688598178835346012288237365647879811621308635501283799223144168835939365895159046499533871539130186071279223250864299031471373258711183915746750397156265638128222487886284848576373231855751960928355426440588418917898489594395857306747908099432137547755606621518779940144941926799670381022461790181346667014782644990945099405505164145588360229996268332332000931672123135491608209234379826004328624452631211151794395469749745622793020527835991199534339274671588278984437046485065391119718452106378196433293512274945008440191162088573299560573540397793556494714926048987683653838551493047234807676662393786807746070466529015036061268352294605546741019370047848051258863572502850430185881264485540077323728996912174577503117434764866851229666300692684584026854290667055075317206555808129008892281605755103814727032079244668440734326890533419715829192665514324044056804139535895811630293058590123003646817427927888202720402113215539401566575876413898323673564789158899737126634721525599993181767376399982060275153962539011573219971226703617899910639059236142710005733704609797105050126068753236655996464485521415976960353581624928323461468488010037498496371245644103611512139546943649917326568284905076149416371901157569204869188225831579412842591847330422790307370876331764137462356224858549497301602933317366185469447020868496985016518358475783058495058173461700167762962163713273413098173014582001672810598750174734941856701876896340442273897671532509588152682098440104173570563293404655717203572918544974984430111844738907982320445856151506971124786814617502289904138985174920038196545703326780873519206955684624787433811002923675185591444810635179882320379147586587302224120160315345966446272852021190480156001966149886808837211498087025763458494896835403362163951014743992994324394718907596173149721250282067292351020156511689067548117512423554360195051880907579429694425612631370765800716596360737794924767222519479214810682554176975085811520018709803497880373080411063685094683731423291983966497270947988308407936830376997923075159852436554103831913014974936001804261394594711274878453852474377891603559221603018712450002829172336000727132362457087627966149103992586829179325395908252138025451611691260294270319978979930444160130592824427261438176450682491414015420670781153856081096827094180769410150715065950776415866672803085512632708974415703553261604903569887288145336675425566449781803393123709790804997884481758286666095663796372869844540977111877865378514383738894706237276475573380179504898807805036299419895995918773309077669379741391201972026406581774227882820012061986025113140186056612422865669768538844283954495755253483892320531288687898366666871156982318117872236250362334089583844247586155357400773790748445897786818296602242435752011271568650221366791161204070471545170722494594892097208179790661068302028248373826248127924331490775251291375753172986589020690845019091732389156887509746586828501906712867554860395932152335191702116983771925873796047777978990842468246443733208050568902119181642653256398713407685933437612500057052928268878049570826545193240628666240479714793177500155900211752078634506540539931090634751136366556519003551793912632639492057684458002556454495325618200588810788675271597882074974365244614722894132809421004762335925789199030041500328569535373060693010783744543094286546103995427665206874586811891883069880988241147898383475603268349758412827456282199126280778708616020827007898487260085886305001428588148736678008338006429726747009291254163846040018803469732540106805188607374383121746770379466212364119494988616904196089824914173532056242399954135081045102131601024584950509531351447908104793917364751597023827738544778414720443219270401987550225142680233519181747110931630631918310596308935264679362315401680347620032315279641972911739000882889065019129709595304119692633509387841080013282678976462086222053383073390674892092694500006041432155830031064829567405379802739903642875456650420040395395666340764270948284929676739557449752475291001795472158261257887781587528940518808767955990059483395810467714866228372591095038482277150327723874093967317409179443511766622289850107073485586993491360593349859842756866771770331340253293896290191649180062344513260920771815789788441474618488244475337731202581750555011998570017852753884370581491403259158879921310091332038928055875471894196617336463870886254999173624237645854897295005363641735319036984758467479279589173984849816670002628280881966322225602535460303250100575480671114997760941411410651202388334139873144707465610386081989836818811748751048247593737020924661947035853516919820935252500571872428019582586768931219403640208355869578862867658263735196050585504011415322054556807040467665685620653924029884529153700765180586095579705714693413984554792720598624708853395358929874020586486830754146028644924300545210053346293513276634331089617627572764018301917436732573072841710274910882548755590651563840529314714778733601864285477005484395994294772183041071602092199360617386233864389454155254329658032874907645028866223942366475820489685242303298847506884925062984906329627144526139317027817018072115951882447156739411054431278870165168405596903945569395291028748246193941587148628795170066977657653428030168272267224927532184560017662010809407552819393077251444646698728408461180881607775180103235353382268477007605175826453049762366149422190277033335814307783586718457399116557776430559762204004329687260313806359908242714453436216729941801400672200555777132547849642604826751121302112156909131616159338098357971831041194685483407210386045829799853180222068364651111464369668284880865630987447126333549792300280071612769554017016191370549973628163867222131002095027075818475263853233830143215944491771749902197871715605124627127979218038268750436319273982509594308421421278957295093248491034861724122226070752173378906549376545615025965432667733821614829757269126272660054597807615391889642796458864055461945021372604290503240849807987961161681952624024406427677026084398522992455990082234315000259874841026689180599819075109208689667712435391566810897653424682497609563403353966857457657372948028280428990491735167440889326497234030092010110784607439436499384520599126524919034907859009451260961649919689268981005140403291810743060183169190872024444388489403770922439960494976875672946704365124934872651943783832000031559166636113423061070374264623506311432352154105868334673737012161818916572301165554144328052100908328828224238367391538293124754790874772649537457060947828445044342290208346081007572922166622098811139307880660600071996215833885874415119494831880473156479699433477313849756617223498351735845822989417135654878683357170882482295031590087316218559364619301195737218446109000958210703444365732798187296100865622847178419507716618879169327829269610496323553029476506021162654191647281039517782620133380086622041479522709607610954531868677888326405495766539253456155291333408944722073644558881030702961026552042057191691983978040157228697501252314891999493744325300291166958866386435460706766786177689739090645898961189760455632305061030227389513190234075139631340399088900616895053002827340082533189155361827930869114611639927615922199444591618162578531394978348418890610957811175639847360936931793501509640303451175798166375917047045944476705261134651075131996609437332442930187919762136302244751875193042753564276596549055575434169863848473777814184099690880347360019633630147733967710246753071487357231592511478634333663941202213392002134030192426525849461618595091595854860777772532915521489475706304590012836017726585113075128764353187617676291386504052113123876671696996164340930635304188292312787831303577531724602248034061009256678577881401003486155824858850351482291074242281746831658719654711081492886181978088814231440965698974565493059671124579579183556182590291356628163691761212930097325020616253731166656941187251688503260894318474138863266761306986094891763259740620224559575598290974610686120486189777235159133120730775245133047259472690162424262896248765005636365221240152223323095403461947924360201740563592590627263461900738021714456776260344011420553361741193358338235968817659681818654241670669813384620989260531999071658690231685902534495442469557536131572105297711130752623850698581764094819776645566471811972905732731850347845883682276104328743781619017797692527755172380248374617901395887979360379898973661604980832964512128242539464382566498006979283195519780243316354457841439106764275671196176030178534129322731365264812065331666105641517275864242588242447163045624782453583324313799167548230430857476238420074017151649142019706941815762031153226465434698711852215659379594468314242361505421335317815232834564042986110009217020508675284631605847419682515696673868479139495289961802230683174502914373702103751421527695790391060238648626418353805778742634801776291669925921286006491493010102973983409748593937865477831098609054061822296213901908339477107530756122391950744241129687637414935366098736815935227582965972997672594518271961380213157936527777032858793684712693628309413217257212717167101460758388891663023653857073100433521719159675031643313043105451269639148665863048926596206214316724594509614121616408811393907670440499453650992925159049812676647952016592422223774145952460995675252250816794361342541150636805322766800462971653132861707340124961422970377590839588840483375994080312179486954718532147964398961666346426622495764546467696318261411001038589231395825833733964824571485672431342596026025127684593900137312979897570444671228568871303239821383571809133516324418349775611482017208115009820768373705632392533669971219223127791426745911460343768578757304927896835508340920175348009491897729149091212825176121069250541153085946941143768838756945350195042440222864587538898826325639547690003535278483151259528616519355616280793512907273229321402414603389593980431669636746353780121458272817106112198854908232140995432711146133341848434230899068814555314313110422271499464937657707666381608452733144997482379254577916342097023524350616266550619720239576523197107922541129313452395864981803970008514630522173221369907012445745965514909375983353856819876425205207292772511393486693304607313525159003817853552606718069845243521663536335377452153663141961453221127143566206021113536475834573615980153501740572216786632457402127127871582176488360886880442016245996787450844455777836744123126074951404410383793092881137124926650736412623158330301411422561770613827834319327218859194753398952195772655859409671930137266011320130650280639718883112936164422737553256473182785741973260087699164364340312229079734008468516565362160555620338958809694573780875490104697982953933755384635224534925629344872554475203273165482628052468107518174470433919840198638326402975033613187358721967553896665704428541594942447047488640350496808699188461437883281397890169422993984581405440533873334055861992801908092273645741316482721242822336393580461831404368928234671902537274872975540726061379625198391790606170536651209413639724173086696618309952846918793316016572737923556914981078883353927617795872316849772485708225600615049169015071345312462913715049069903857797006667914712186596270444448311032233350430844075610274596496375808503929059095561910057503512738104489621650641890401346323658174907099852540344401700185241899352293501316269129487301410655175125377865995278370058503284141741411905986334795814631493905286267801047790343719398203774433905289243304164106866816250031613853047842612356727249488053493774827841914418844470280082935396362871175442549133380385561178843160819334117038030406693887999799921246583296556422922605894235998893876777129049616827860883312331965298768173288991160377078649882487409638662246414665309269567373897397975781340770995920536011579578638483711718864432040272791727691025282562417449141542966897921479983341323755869642435888041053884101149175634919134908706632705265433746709376203569534981582162195404842822771729409158638103887083420520643697652619120023222277884906289800887762757220899024985502589521655015879553169075250283096539039645062698161599867659961999077441764578520050974128027760666870384125817542000579693037996747494827071274510882666096020739834713088475050962076172149053588810605311547497134784973118470954963917378374804893820771154801253953847087892761206080463295810414155055735451489936626164737121894292068940783524012015010868172293851359936870753667608415597457417009459510909292854696691532577845078559133087150673158712157622659319558092542653226970735635401804472749905314498036776146743188326190938079613156313797469075028504503041167605703583525919326180051039565641426472665831654612443088199536969568938768215317195727885615256682399527244866337148550368118193193848818192575702432951909686877612815295546179068395421837761101402429986909735341928876570921829677820898454458832801978801154894106505505978581092144682224958196802314392284926881815431797519529877781000467058909329190829349886960750500852364549752971577667110735010176481932560647611963509886835232597436515348871828342636375668827207289838557814634809176532119058381148282314517774473366921162369692235527507271325187828594210989989094541941237575337857990559872955436649098972514267297964892432546392100233525154897321096514977206105855111463978465567333863759194591177672550757570726722395300551117805838876516665869289151632227716615882029969311708825839921591398257782642998927483811341799436753500888321771407227922475887710911946102512420619631591433637559258939350595638103113537671741763146171124314014582286027416011958745847652913096627616606008605745237373039353370317073933593311639246668765637748905641572789777680956511361784941396376529230699683371429259365108759309096106248207771311932911105359673889984597208192311051417583466267120645130035444909256585001093175834499698592048766660898544542898774112589948051716042401164217213938162348568486692875690558766828715712778991859062507408310183260057369384122555317603037831490661729926396414966257254921657958520049297015700673426391576462246845409384351138629623549094366707241909027187534335159026552513972835872729262390855046410456403298294429078366648209243535925174650186515145767558055024204185567137631534696082879208722162209559949763421497859526643474000039137730155641759389069415342706174580440275409256788306026603909628458376284829665037728369280251577319526004947086324264515732006858320805756702521249358003977081727992054686055223821776386523577865928947332101487024803274035306195358935486977110429332240299620082667289257476273772450906464730887629800210231455750369867656326228434583259524327730910003261954534842659134448453525628024691097306123868226598363317563219291932477067191530687219856327045090636128889925603723764860312107555044633709844169499195892606567300841552291121493588427543005656875526746035591032142126088850709136695099927078506992438958918268144958307331995817742348086519700049253642436396954966687779709657344607321990327561980000525092200874996630152524336096476452623642819264408669638108794526826109840930245491346741540114303803489109090085130410065501175522714864779102126878637785840314884037832477437886319679928727201121784489859254474332150505013365438447186665327105743697620302935965512758462936897466388305490463734279307430893029334029204338129352324527935540919940903975866447427623785755412139220622616529437952654446477513356708901758873996462486135765359862142402401097263945386009988947296132029302844231849743776777515919716139438167509614214499504794563785236041055836999957223273681215415595235061761095451484586084018601567066619021184123012798806927899482765047258253334718009422204612266001365105269523800402095586637820270075844529635263158607745183329027247422351025442484141694523503677743403535599389239917483068941065672352123005264538027185737221995222833382171035474329776087747562588680579048101808611771307984067882065497245223966352891796453961995406820679360740166963080219529358026826052335429107341856429136428867094337956188349674108817864689915883140002175189039731572821135030188484113940061897032194479543187535245028833639985789669540751194135073595137311247998942300506935000482422750396682489694661299484115437336653256084844819217704831061300371896432218403994993441437055372021272138211451925476500763146907279630917437270049788982695318026330110093936303118315029132777731450908553955813093664362897687871995150314541501600107168270396206429418853605678532263634351289389763489192756056586459918760109019828020683267377987108613705615270902979061289396880558441952792497752091462521142174434506191015291376017821169128267334617765884943048192861951220680029959120302674388828130687208759011571399005014396345687935825079580359028919153244658474298417661246510773138590862348491543104482766373574337518710841732182215929403862064398607612539042255493309244824973664950667460546565986717528136940078871557092762575962281751963923123925331859903086526450661989115751303012696357988570197712815688178098344508936781018159760840866687808203777281189106443134031827405117226565859625987565830908090987129837840228526994526917670679158373606850763301092791681764857573190981406261558245171360216340700289790555548466116377303275070352644304528836256052456763779644276189831772990198536473612653777299750262709699931773412563778126878934396006218411413626774793289505488596933788065572513702457533667490298370886850451750223332479814666453076049084602339623877098084941755898162032800129744969927522893953052378275913775782699377439720607037615371753857625551550338082209437892990713596672386373056920381429684802795768139604110753802158253694126774046694008256640079981697082600650554297344685067148673028366673374016019403035637045172456328279514550432252921149457640863800040807384915166976860019668075176299176082592507293283954360757513609410706116781108040843856687955162779586549778374011595498863127970423164378137073790152394209495930692245376679758816714825429507136597700967847852325273414461280827067186465857831643538973010395107162979414173370264357226742418348811932197465410528016991032036653843292083278932407120481448551264585970885871612359344063217114143722775793586522808199422537660621501177731803727969749772128281904992692445153807403473919894977812322052913230067212362284911124159756564699923613389885821459401686116399682582101163215337183230063886318656651928303668562926495206936407050795835302937198984052713901892169485836089041328022709420127109432573996945748038253348415467897931912567836399051965738037888702543019866828969268744846214122341955535812564249195687723887676720608162780524015824800124496882908084560456334002177077521034332918339781463958741058869208616435836131550825852785418722624305067167125595868297339829343137668532581595545608925001161978543312030846373622501227129141194355568641745787012472562919569923559441282620422529260723848532051242590275072080633244034015579385112041608135128969993075900423638347859220525684845566199211774909945216438717759673803287956102561493883086039643225988386382860099281313646057405604783636334212984947390854184268548256918749784755943980117266710850314454974618561211050409074458749619393578275285248422930909965518575446565158252005686127333320978156768064373189403305873070585742732547144448059420316262665981883642435038028549558329011649827257260676031651212280996905618921012782519942556399838658678749576520513808984482899340104618280068094631862063471908662542581681094048045317977448332612189464547111191453830020436572857215982600807980700162523351982401727482047385092671168523888804356608200837147400191423463478469655425844971738745921067148479645816899381912190939538637045314914117026930115500849962523254750953349714918645997620217754502372792662519861798045668537616309650869171359792769279578991314373800692226576455931709008796345664138663522270431272722781349442693275205956237522381404478506160678184288186641929000527473587823964581865879199087794684297443732252873118620700736765273162933049123817137402474533952844094521630447566737297520997202908501472358127747696857028557847230288385226524474719214098945765884023035952579533127147901240485729620894087998500489026261432049535275180682094321799275988453655556262336088656287599081880718046963672897372341996123689197233806268713349273744613880144046729438434767441050667924647864807437915596765665281910656139988581691347602494457195990821529762989376895295318048683858650871882388665940217751910891966834757272908716907044377985201487840012073273730822847206404610084978271987526263640530944538645480206765791387050597840058050598878854183527063896932782742776054554549359282162420139569435453735999397063824274678680114070411230028646964326111896611617101133477900739094895993311649947214944230147788746659996748433620600459900540352614130665226717748244794441638377001987808922963416170274929952975896881852624639604470546998229707396138641369440402744554813654848239229027314429815486152040134097388130939835644718828249978894776127473161805833305987827891071188986843460127659422967504983998664273771147108104800743118625201204145641858762203831787880215386070788190768532718476341741990455131616479557501164736466593886831939169899338644003513527848643072282178228851841947763658307089344957059376202358447501363472525056903011441343109421458229699391241477443454879886065083088644944393161606726131050923494010667986354117815086302420156898610765640681807410690708895849243994706490456545552611252799691279095622683303966919047021011876721276842246165327156413896140828005318396145824583080181895823234059121010154361160805237302717781367610590411727569108740337821489905135840178101915379478209634998474795860816792570653638149556091438463856975151812172686740198439077510176542369440750849987906984999420674498557503832449532955323929543709901794127178694487137608711876261999724230777589654881120904142954076606945582137821500629407229549336832003072313119902556267561607299140540876055615329766704322153114297545241460967401589976989574066219160883995286446064463310028325940432764580069551186366973014811669729123771185751569071820314021626793619900427113444114447659964447282378930721750076852585563270484604835424718874029382449261826573066398831222937865139428810685285855011469623947825853093655639453771784130440748102658118875077380811277606889544843825105432164200219977117784602206207887978870340988562297366968502945714970026403698024708714132526043341159778147155361383585701862244775512047259189071762240142469252177414239645850866394841292595218692762013856459641499246253614829643981916552033089700147139468346224958970145913154736454401112040458947799258174118894084265558694557692865860707442265632639398239347998269323676583148961586812539175243738528161441895248350035777373477465051020987690759229862185612091560319169301237300224118351817420605392691476059274742421492465090421684030159552742078271811552363027016741143219232959662621914716174104823032213967179918842674127541697492028259510758409690596137891255797679930309735941655739335916713712859823227390106320478548907145819809799495891984115532384666523736452749951354022260882850728648339014954589318633064700040745106342185249728088555239742342195122298209993326654862314069251370698005809979718348811748660974508939124351064062972930534167711497187657288259075611758261039355618423925404804138892741355091246990482394604051923001464904661847408671466501236754416899873653182972551728321493419270878215941098187593783345102917056687840011788979800230070118975274812426354876549532982357722953452712763411837025187869528288178888001333818024385401068601816209578886698751661628462535065633685524203597529887808055239743087197768040801719221828866298435951696858161307721998961069129486580057740357049376954408526155863599005949497039256070240282323425292987597390071408829730247319340661631660925883323483115391876867314072468961606644468420590904608245074822924023886112625425878761795047227249440452919294885912033065072173677883672356511536662208551159628511597109901875891312622304737363907877570257406872491057898217595183994800418471693778675065273072871336281601350407703085213592129776476684002450462825878885698662557659528181291938578620006341452488941123740675809478466232036250582087791421989021018296035566843355900676203720954453715177536153570987084844425141174228109126551226116621048077457560451636617702132880186573189375709323700019035672395618332547198512475068345393409765555293777618818619965719369275492000735260975538264464795948770792913634701038953504104297034123294129191745695899191702013355519794571597066198343496363563878319570795557657150056043284544828964388464199176250847435703259762161403290676471958348716857666500815874292895646569255683149081485736678539523747233903356611313237229071740175045778023199164390320970689193592235956430220183903663234842143914930796851997359571342280017620550931602850300722322797479366273870876784262890969690348342916594111530712392124137605239673192235744908559425214995488239497152838907869725363628657690550344325882506948133433479510315809502834804801096633663614433012542375860668769633290837825215341180168544730637743162315431551396768938198797865418624894651313376525807471555331519716470355907357897286614091033422708899330636003867101392902323564873797955661081112320920568345372397474877122553637969663379447788648199392320226349266062922475813074758075893220980636153952195964789046875332722721021674449736230020293230335578900601433751138419838331176456378036331576070624599032789019631939554273524485458029410193159293287784512465773497222736455506439738936235157650227842140482002086459920010575448487057397708110496449514349276577854780621185779141770686207528473494207232654983774331943407004039048512373914904471134458970743089370304927257874131636625415585765233575699170107991160878420731639139980607737915369762939517901770356606480825977810575619498681506774828947308789954625323546785680090548162013116844728763247323511030839355016052128140260339147974216888713463617344086767954802572580022539609758252375137198360294721350972225766686856588694333860293802333717059207878822428995983597496747405844471305238079039539172344356480651047996031733394254205392498129526551327081741103455560284165007893167252973622144608812680532945654473410047601286843054518922804573061183974945963313914275925578395594883621852069198938167002227129110741935404537811444324908293504356760841689626318388690082384229862221028407371116697509892034108012061708885751133940483943456760841560037460320100011984240941919008687197956388618507157769197782551537076525937092418564865432500619429645063834868391982782704695296559318090974610323658582708644728745270719606142924226666016198073107798326570745935049387239830462979939705739250281723353869948302104770918107976991677512488949273745377209266953719265060988491832748657598249592119353828414000145418789605068280945279378652093001778742820289528676203117980257374463582130776628608834080348601470209086454190959847131315959245793656613784098810221330012972992537633989022631278385225517855071447824660910311406546868657705963747520899986187296915566414033303683621406561632059934155076253341740045969742039821587412214574491224745429146757496053228929409662897209166641292941340490721854851362542155340626044939415035477954820846164332973850192968186871971753799644434685825970174160393950048611745877971019955948330269517965475461354842943344339347958213442159785867215196952921133115904194217351712334003206183465281040385919076196876207528956341604329517167295323994851954069484097859106827844743072875816412137210084148118677642079601955486502653046603429359743170063856981267515603364183502174214245925593004828566644494450737710141510908906327827822702995158063215921180357318391319588091389270179331831931497705482230690675981423946197821589915901246476513508808886178554525809878030226271419125902584752949792326434194146304337039602536612847120415470175831083219480930045634540985915614174092278635909667429248724191137216571379367062846299865122342390161629533763972746790726432867768003201853006256292800750608082953649105442829059609590094457273449382643051201064680303374993919880696590369944621447021751317335246613757426452356594306253464917797808036462480467066284604422786908457376042093111769904397141671830138449124857349579691313582093841218324617000732204841255833176135042088827943435359171603140111780662006321996186204713693635109641088789969011506634668055417157125662337497486348921522805383071978417402724780504611327176204667848088309765329549523890859431415981533856668066908854775994967498991225360667395526058588530741233976056764626001845351214959122149753500246043254229620375832797541307302718923720199671548496828987416108341811365741082569660936886175851227055059653291060331596834879831983639951529181964904865267786442106844619538769990755915001450402596483130707144497765839278931421256029780466060507527987444878848984501710065890341807823489447276946595539016750914897318868387870735859739518473977139477996255621872933419058668653463975782631387077722721399831210591155889216788725302963578303453608752475256872727635829904089422107384373216126332173642196702701311520509672937982563139093534342201469823629761635049323267218337681113537957586177864951297962886538174610602736590322660287357118318778572056609860403356874131490902971944865436218744560292058821141662588014289496898179189571978649414308331402923935352866590570776372778376207660036437807077235081707159507603142505647548300637316968121804892693010807838511776738750901176133416339021353897733267990102171117205718928739860341930912482834061609754057487188725934450081535192827948301950038740276702991527161292873351921513398977434601646451187625471494346030448973110902532658837515368861965389254835644095463072759409857877515635565538392063147058337088739376703983049169076706853870914512834484802382899339997733579324830640386620024944397947461949808782258298885545180436511700251857440099021051474175164085408897612817216734904778621407172149477764645694650658922739388159533125452120589722742933324584968181609048356963246324595069328618100286329209379804232318347968626785213893295754144736033130595337734760326971685957265497892278207788086295539276106130630578080008159324398027586468482512863299455233380390700005026736697494090265316968835850083508229401068154343582276407391253271503775663839348047092192016928243608360858739630704839460010969982354555944645370751061924652474975890253651367815968258908743082833177822000415314278663406959351211879634544392972403987465624077766614360391457082815175398456585123455034597356431059429111070792839906733820947417523290149181737206860158205437354523947022388185869751386618991987105034301909515530514715954288105671281482629927847521202291483673033391520510294907080333768255040828533388177187913674270303394922163912606757258426131274191393095943411959380355707850851048264259973100557072433735668388390384439761993037397424030425816602258204470755937989581053768270062563658700620476869981097082434531178377264667023917625973823880067631414285765853001571305368889163564675065961004667792489390976535315249328647525510871655137655342616264828466526740940654127221922234889584828989354945405246131997092412938097089745226998364019557680001380821210674278881816057947731931099225393947640225491489951011943983320664009424257481966382714269468286643995083913073576042750273284714917288703675846981032341385437722787552613555468077275280519373833767661735448472378992206722060033858091291624610882554783275148107779726176982854013430847786750152801682260203332276833019016581180928046062207927879452788413604783557573212260202914110236144126136902968697856927457485088070253258825180359856994349236199218040778128227921071579694143461015514027852582099568019102915082756815731525787411156216172243286684028386094506106486807790319785381269222673388772479032975317750616141295514008030171507262727129661891424547491316231391122087327615966590532078223548391749233227606420797817468640182497721562451119250886817125899893846998679073633907579805931144454346403423262346833086182427014215087375411310819147748186544257587971135946330020345840089920603222837405304337638678895839184809135316046219021362582959829523737393143958430442846241322208314113012592833777015729502192424494152983107809627986090797531854925331628498968139445187764970627083169018003986096027316256217619480669447670954935078168530086479285791021289352148095860505810504124222850743612399070356300644314225477350929020791452868387177904522683010727208865444502832028542163257457377024674401125585942436809092753537353425030292884075287308319707559219013909982741400039887947916242912339278030314394417593959460011226880203471925501754787422437764443969753682933437754129351442358745173522897483536143465954383851960260550299909522650885484992963076599696619792823230694813976472393391124396067431692074113151450589554870448486049227441367476784137038237126225047397972616846435862412253596149068190167159751375504293563446602630160239020891331892847914903354689576152351261256237272226369828331727529079714708966271356484272265487174487141349254800756031807917195210692415477043957294734851651462278869866023565934948126152326603188037331256112543144620634439396050896717552092216598446185757404201868338886837804035460720179189897327464166720673665318797159209543913260470772125483193926834702023400167451579512900281167712484596276401023974701875607636247271913810236329442551426485075931406361302668139947465475720752614158703187291294071983641075784291567864740175653724232226800059144626618156412610738224611084448946150623220029324473143140944936738007712334454968798519394959515192096480490791789698870765590165786855917033203681614944578909183027911547999481457201048290565881297173854919622616406011410169254732917455248396026884299644561126443429578563374358514967386850562223251601384793420731920785671811102613432902343057515492918180533100981667318228104694379953881620004644250975685426802038874911576545988753397869379236619935763672159880951402185567877824665066096845697371172316843147590831542446189399640327056753003469400975422820659212617514166137699555830532299450270879275444464294310725191837650061925566936610247413727532726673984842789189732947951510755293521289228311321239196893452818800753198584379969819441444661189183550056666589245334049316400810967113534714570691181403021808259551230885629950112291931938241542872557739677360513166019103213844469340859307297997007861539964578402426634104792024837437357784670192418593024685395875170596385163619409352480567474960972892276958195634394954630021109833056385178625457920286341216504083081896884809325542569854196028259820626022618681682181052705506615092415736424597993620680309716976388226984503450127358843236915226098880732458725731798263328472031164133086689866610324576956378867370518536085869813612163922213164438940964085151518845120927990242735938838580593998095699620707368498360576990085534164337078515168238296470473008488748037227156405857037283154014020566047886342568680272853616786873119924577266225673737389598430727200666415258110833789047391117109847055951763082452082226858528312980814177516301558776035533802319518446193249976154912138663581700455119822280163853437854189975249141015108882996432514670040185956794563472867638400137413042327374670040352656221594186248047568300338209600227899681564281000135522248985625873463816589142874881131457172104551776780835010771474798295285553156653615123015344066560173891879191234195242889760840277024123858237154139510930900111733798738480961187708734521355471564369914347245812522668550031139449128505183638288443397011201644375195291721186648603488521430526321377250242035210499077560642085987144498605166029809124454129502934239297245648439286745633167926431455816818339910256371502351931044687313265050401128078408120449006844251076833056549458766167837697809237714339272783477881044378079300426357264411003727494659977633608606303741695032276641488221874056141682610192765513807493546216230170107398971865913311009572141138958949847740256632602530033806763603599923743718528000268997593399646881513351922356066076044307257754898140523955636243666195542646903804989029150856762560845816515566747989809698290717301553840864133079759898785389978344718016498201438871534053315044137798697769434457695528971289735899443976185920304287738997622640803551612956811046499017598410657122848963264001010021567704571746594405801803213776572988182566075346365517413597636911773349190048041200026836358338483683364336450133452949637696625829680800122733896861053333828237775768000331542512574368553150546714764482812407273028809136184884864080843127098274912069365743301696727397165240379344920620407259762305864049963584886103636748338018890693922161698252701116876494472488328213291266128688088323983525968481858268013516663463343823721884336311244110231802908473444430894633007987802050637101508522284785581448317595008700250636459621006984791613021285030059082415734606240828553000132876633382047213688546816377738984906881007777270620169341290144704304153201301507992966904509631744272163668971342377037513825629763235092631086635017693504677496434532465250917078860134292791665327142552868332530673633160977381088206336059372050810200576760429289916393082209894774587141113007900545441462117630102975322818711080277351069098771268224703883972416782364330515685507229319284728061628527761659845125234085080483391994992975811268930323336909386926683506866370869542449997808964569348167892888962763898831664549003213867816778130268501321323851766665858311564903002298570851740435246468784177800194419304436325973552353698595451365819045257420341937390133809064191553763358868987069343573534214672306093029576086743808155792125624210563975565861693481947116077617222984745545666445536808179976145532824661807448243799035807309949388169781920905945574617330155864781999190521661180660919332369756758410346955434246882994570724729637805801333772475134503599364202626849966812107624220808494276295863640916742345530159599344777198514782670558426671833582100871701835531362521548579459784424400226199062336178646960898178438196986757319058116621411718746351130058564899096819298298684647619529152572017775799055754660424842994713840768090848090235480137631165755150099399601002360048447273081970967605197702638795313460274836771877285369105560457587468018120606201326146952235690618477903594510814450080331302433729436199595161608671616853360413098544378210402130958364259965860475429412561123137543632222151636321777404396885390107639295341946674484169801781405569922953211014798808194956981979535921175105983600498231657000685780093815018566946713443657662407549513827806838778778020396087751909055662232038765443479022247780810176421676879973395349906660504869581306788130263352390218222091370144612481546255010111256882540482840186432236135526943992994506811431348221363675113257362325451660925066931597512445778471889944024867104087680755276126311635959303517709851087238407251427573887813865581798223203708057779602538757636330127440297083370987010611485042599970379090845061231860105481447376473737034644262677929688472772857034956126038124424194558306082745450368621798346547823072548247006530680329709837323160792835246335041780480551357025016997436768349117462818206928112154138258218759433820383548478505517798963842956213499534150109624927019163511324471465296125271839994936252467849392449228223339915269994641789716692449098254012964947291161100669850665417020420940154350212333155284617437516563604208619242637477114481855971734777848996825229371642370300999739037566265910346159310940665934478406978742067761334204004456134589938974564031825302163809951807658745761570967267347478747833272123507249720395943488917293584800955320673796130276186705235298844491580166190638055133132674852202019844078204152227235938510154814351806142870206836423104204313420967913820291024644089056148849196584490635574295988271779995168209000595483299895284528576888087285510320576063625122458037548950724700756132857362134729360845182089948444422888585508535598871587750138636359987359094587114978539916511968670645289613931857604584352983521544773873736697780108570679638679484625549210243866087356251607650272833218164657662966698370725589491688463322062589334794649302622328300540174443520523977102046292744680029819585361476000695143361097622877408561849899446961697281145802523032346622367386761296306610070874888670265925467288205635012504097583437443309776095103188395528226639200891783090803085437474711775779872950523238992390722422629610967854030317573923546684652126137073535979361754119348086984641748317751486512054549288759685603817974192471213584640879004163061358233758730957155476639573178901071045434910874665391662970289097290173658373614892829299169845256243318522406478318405724555152089971590915094634574069608113359885960660034898426360813957594360519426186370031199324467366497498187633734037905950872314078408765587851045775222917305736315181116804505498623602567801426371287463224448076238632566793669400962423656776866737136138486118170234744378967021629348060318973012584030986796896200275396588410499901374165501319664929561327966568185210666860409113640032483790789295972096284672057289754080381212276498457978732052418789438380299104326650897093099116669803793540900838567992429421829224519018034645902047526038069114596971921663738820102986027183945127508340609997904120926302022764098656111673918872997570757030427566221629300096133609248715857738703955400441810857682085911886051850541757557693939705121369191047965716356987996637830467965946869691578330435234304430325646498971319280336454791931174488125670536848209309556539609431588495621654156162900127055243203002202710957765368755117067903662112709294286367708011841478378382951115936893024729723190737172162525088814201692573840583563347949499055372846556671164076050302877783478646237814898902966463884534230670382525428350677766194658032980572841043346555434510887131362336120948845802955702585201766172898001328639740303944232159510318828083641149911003779383700106542505536373729608896024632573583061300726849806460370664283999052010999699487431826040732454018030527891569539271192601593040960423748999739222864205650405420134508769299738276920336528754793760671845698254468099066964378484680028006222552585873866623597659178286767784335606226148636778142834063749282512201095632105745748919433069527467281064369092204088969393233591995764925303113503712381473627787505904816664100405800943674360549033152380998914775288397815631902263175227599584875986988677473271067463468345784248260708661960143456163558692043246451589826820163533199273472761553048618373342642985334799393608692612664637191740657893691852155024853031936859137695606698441472695307222826571847093570281865765606181323838818894097693560233265124030415454688140402827956077048332069738789105024162292990376521560619929721331841519096298307836156725687627171863067079405273243598068744141606582348607283877791864619736126111523376515854960979604209865865066418287191430760930758363334961398100853835667650185360956470198917550359767883956672747312337207519160700509928386900244628745903707718197718145861326427313463589962202247291284694461016532177897331012568966619326381376388842944408269834651171999064718528341027125169134796072114389814984782249354510834004806875594836639051598741717057466367248058977140016312017457216051452903216192921823533704231652391571295028850463456676470174441494540914301842225489778436394847806358052743557140693963233764495560359316889373352259270304996435466306053035892793707173880447539298256202396752100116818058647446399808198464359072948443528391863062488509586773536144290690488628425283641522338536646403484714401964463819418872559081271501290481581969086428521732697098926073640617009003700296317762767981061004740932314511202199681362784620961773111589804378882980206840436687203760934231421260912754325908848632275914000966198127653157994104275379853879325062679230334874790282999425247891697628710065544940367608432298426307380715750701364990224807881027727573836066552778263587124937933358700339781008031340901725110787821919818335561477712868570967562825041754085357486861098936224286313013992397152786996496219604439340471832740824755472996762221684505979316861475833889660164690686611522739843871726882597112848562536130852296101976817566467732839618033768517022129885424734693260042024830480598366268366466006449811296090507055575295096176710396123678871356426226179800237466141585249516484510126356078038736325863158128444273740258445087046422295563734669936097354093146943171069044747407427861719829895705833350893475779837931291841818851601625617661514827806553380707874084579613819477678366607618252092088955089918815623520718309679470265795420225110244105659019367158240412867485984628351184656452219898369447441742762168335331652289898435621906465972415771855230411988126274366125354961178525875570719988819013564100170783064391392815624471332884031306551734780450494904219667465869347285679552382027633138796600644933883373995244503283807435580536058657701022391209308350043478422218494004506078766715424918325199852973199173492189722645103548907257959566587935903908533324742637653798671327585859190890223378532262429673759199572958214122651563031565234584564614528904611928239354429992714221189382920069388080032347957642979580782444870358137170083330662975568571521212666335233263313057334081677880830794233563374374440209366229801214377530716485851967515293301106878406678114892838664970721068509190981522961838534189650873973442177525637644740657414319341436012738539628231197086129674794601572468789984222105164490284974019231817684707291176673549196729978314962088833959912971351156167294408328586999774411480315586476256247062679045563997103454050187675925786928803118034509108002762677049044001267598724984430745879728169778069396692237657257878113021368771498361197256815578924469280467918681144849961632697606433891088433696361193272974884564373829522299783508167817425155891333858982824130248875029664221997392615890901227172001626384668496388345639744423841327524596637121822261344543809399164920662749017587578740057804925200734144694756075893531692874089916660028665212355247680048407690924786734693559335884813719977813671056733057732042735645108928230443790923631801763277662510618626789613768809261700485664156411301937434186242113186600225667978064201128280079139421131563278985935109134598830930840732863607269341730153955182709287745653461634662452078010420513122261911621486650052787513962133053900615152907542529938297400198291901798057536973966464750430996884011288400244418980157692599967679597182289117488827913710233103280098870997587641363584820972935070267933353679010357659360662245100136650389024176269279679174310821410858575294982317530122696136738626928433510090182955984151995866914012779072253078554247535385838389064127772813839731195801035861058718003065745977011891769847007310778662218777068284596303375391406928577635551698972387026182536851999990888847650156868173241011548258896114891353863559183189566643666722272931788890792240793205429875677699207419366532599281512966781056533987624539672160212389432496710937217674620033413169718127672269083921282880585129054045035847345167627579993215466939654672978659516112029255830963471671289966780694499462830739881934711566765859981670473494185864407210044691061600950515538970133867518644427516816880284793378945415867516271370753277280020328570882603457010682925857971600171287168156582689474769130314780582932684964125913413913921003500482881288403417094070007827099942208220124856805038900332184618248246323282176615580278648257538367597906041989249611000353615139707981592628502380914402371319653824305430441583861013020848287964944653544021671356044172806869995724899389929721008350378382837886439690122556035465475888233260025502704149279806287247212382634793476272854110861281347424473457130161214410195989868371844585901896575819332502925821877548350158577970637317077008085675451832067249034949176488748980190996222383604565579311973396149164613952784904936418486845865255128455301167610035667984001616050003720179742789145447320526199121642990239230544981294348334127981735092597393671225137642623107123626217146418298091405972995635669178984287405200458970158481629847872829654545995424435016734971300465079580184837653191991314428429242236028833888427696717548557135158950988894183391203879458784197219814151086442575555194333742053125988216023696851103691226379229564597574084628133637923160855799045534645315995876769853194394267379198932644012505755144056291794720710838916552518586473016565189699218274971924184605965924900216364039062841536474784127024672810132680134653606487827567142065645604159249964721245419420209552272411207989781314490318285983755291990747303787601164333197711153650048554084945412482030816224159125575271727068905782219592220460645884155907580382037595149305749522768716172645023072832622930807080803027653622335976920402382420322277667569959431013851305415378844281825761269003640172309273334774066984488110286453175574705466278571038388165664310068715258159396685460158740091922661189492694894066113742110202573052248549678748479077463618269836578173853126849166612645244586639659269903659109541557715862106064301467198950994743595237057126884267402438827160380860772819949222723388683253264810549570313847321473584448756462126313433993546598720477305192540122959247887209873915912021814438596141052780324440363499391760152184448336486435922113858151312493415155306069434646653702791633416040214738254502183034578258359997801474893854370949382397259879018866202075586083397759930791841344881219757454987680438534917018118005458923074849617269847239535472337536881725668115427019592314899196880428851577582128825619845758109754102612743369273025007101336505837728900921208761896200288505268366834104243180653891172620985928869391407732996199670218964158858260202620798652647418061875476702089768536785766851522660485091817219913481041923373709255606609684728126607848013452346536495848206050100274848693362559514611902552035108053343437524330731852262143239355870351840810043458527545970239300433143901962464493198966281720596389643252192373119882272308910628605060943803826917581540373369586524308024815040107822150536801013395851131941738318435111593067828298351052293292253890347422611667195307600898785464358406777194505364696646509941805046112955321202800584370748109442678485612765059910559191987340438901221768827074896996918649204495610561576232417020386023200118324020690121577036180231922330723652019915320004748764779672352079834345714893722373605168675892251524190409827005401838950411791298746203087640551953139611569442545063682391767602027446402005066609273439348626805533516735939823864313520064161447882601027432576109118134530973038392450799096538851359875154720715228695113853261915775950417684877476384602641039362518503241931558294026272458948265335647894465605553364082477893778069252644322434524122937383233035887854707088810129365591885144037783599012354193946446059024315558622538036513511109464596100364311795137879320495589876918207796411123941551304599189297660383875179454039683474841290965123491158354805710939048190502526360565892092812456092022850604635666205828720513985232123036700301034390045417373592454934020807039536441211356162184459696490514406241436935751343242631137018414152248788607046496361325044419097629532800281891161317354412310963429551714379287868809361301179020563075518581165660765806532477267240299757334149158431940071349628580475308665135431255935372678125746928330144541504426764136814480920763168123421083594392421359711468685979800170705848883316836507895574390373653666939150983870755979910380161308393872037092201575777510565767060748709307389425956445674547706132477632364665701785676933580584298743218716259495660303435865333317657919376819094970815916744216285227296032159744527672495813431706547304561423099251903255657440204172975318892648377774259348981099914895758835163669358268853041800955892629390000027578917997593480982019968936229449773022965696427371672771315775620833954109630451089852230768902260685899046215973944129030565474693360176346702675434308040471405280397366299823277296397923689760912503916376853846947467293508940611806428744255415735811603102260337016493884062120625933943406586955468630655159250441296179863292264553550452615443037830090445590804437025223125267710295700113088008809096475967712159581548195863809916755405674398897460478324154021039792462885358324029841556990434757075373309363516375859937829624137006876281600892062461498361887590021371534944423662915943904941002665433733471059984781380836263671577243232443747475166798915818895018368629079971581258782257000836034651707579193291489632089281590338892631805420945553150323729046456459702358857401424689510229863955822951559936125702515045829408784571962322280551632627252469222741535053487996755954113963556141706647869622885161171505504059154175282238914367283056982081314302527012284628078681508944052790429244351685983188282154858119772626535497126610559280558841192724241261445055771505579489656779463145467070555770063708515762438166087537224772737583192620419765850807710594481026056992778403355256888354305307151522675910504113476375549668861055367660466049298282654968517425125878586410163698393872145686290279329673516766970916493234064965218933926211978912207168799711566042630426242530170541934814972515109807009462705036681686873197757001287646739177330430366978221176179630130809613940640577086505234901103302845610692143739420631425367781868878528975682006512776408150820821650119168853168362384554478924203024361209450351187422123061059510030505196314750561942266252909630828629616004931543336170760639471967556705285425496943590581350105017619723167339283183720590868189944617576115002636161422842206040562614012523494536248515778562986972008657518022515884550747071079512986203119268535247778548761525160711444873241130271143846569153912286940037270602153949531879157061803661942936622531176938466674365394278544868792927009050123499380088451106289857076271057542583588668928489809408476426672104180896734057621895352937427907073068271639650813078597177437809213277539682699068480102386471877332367908228012296213106504804103995336936503784042031081987329766426384749408350448157937417294762038040096848234323160164476195470023955133728798283043861258075679884093880492356313259514886912946370888534755260270045402504261483880945902578089594860073043116063056846340676909351427699181049416577367665426742394361526827222437015354963167750762442653291968890415747796123696751610827868183350202308643096116355667074596827105155767574888977936480681938927148400492487562521424242282605021310870860372595669681307986944130041148280271261417073844531595816467061036781381949425287191104751944578800567446016963932128612850633522888373551873038067161612246760580199759290963330103087053660368899141118180247920487644800065397745769564981089768380509449957731625985852534294413647674964340494200976731518735328428927017338093592260780575387416161426891835012493150954817993911223584521523833876270963821321141464637906252310952366140232324422281279722745809305444366903343903410574808616252659785637024589232820720145962954484390727645442503952261268627303328740918987368070385241971591897738956026824444236175477908688995175144967406493935009650640701303903083052721148984531546544202742711443631478306672081548757580671845307048165898622385921219045996317596355194768653833457536912653021750692406200281113936697364580526109431954468949863235591636739333897211843953532295630695177417759859643334457588010478140371329600545333029920040016748628850522496690138804708873954932415530288286634863596893138457352831246663451148078397592433895631297388142576985682743440768277371196309665930248992373879998017479600276087882250595300378379250811251788656574323091302910431344684669982205693319639707390585785410774037664285696852668950702943996378596123868584548869052402261796729030922287139201638513034357464098856353436297750436759683570700182503005335005737623032779555933839599947363177330484513518271005648738703302825712529106229297365688180962717321270744462471269734226326457113157553095382297933132213756103018579567554143333395080792460319696494061576162959326808101730229150204076072880061811148894047620102973170545104654319264994016403916570761614780439877356017386201775713228195397170441096878742109120924830726322502245612844033422318270550755974684711464195748990935488610442021185125096787758984540924711240734839443328438084997393908337801385487536649747177259946771369245288475704769994048579136164239287780326764278856477528165763559993480921524416433060826452563455085037493588688924622903257010605177433099847001431063400887226267289164690709601366871389599184133893593238024488240500297431920438320330720697360550315947807581411293547015007333509016769365929739848617324816131232700655372321690767202310451104132898288402636190587728689196578311453226599244666335608486072858897590244330889671472170332071422144773702997361957113313326666244223344989680223355213621025090287249162521776937424214913521150022214220535248556958985807917526747140783859913605006133724925886192507366417741951878938471197134488905709650686502856473692759972239612816824740198815460954012685619041654862152619927245467054956282972103587139781514464208710156627391748295078189966191709560687748831469648569695048270750225766580515340418156681870177200226721277715504773385446814857253717705730035603896895185012761579100356729801312651838529746019387179923644162219097769931494751388925450677511331010663220613289404902196777875586933690294295303529192331085400451957575201804977712180079754347489840683657285085399998355301936337067318228758210532037976272562266884830223255100216484439145520046632578839879977118614461989599456423914246982491607038490068160662065637680344248190490639301469617105672357980807657829595728860606947205081045997867095457928242747704856825411524676193953814207017783273869951844832152960959838879009557611989787530024364417498531837368503560162855862262919502561136516065104137200932730613479539215510544081335828826711467300464553287063913558810393247361489087875206476147695407858541291333276998958596153225299348318420263582806478863300659430971447869755694261552672482327894399454725703735143760524402951166654583191000935054388257154718086056536622700683665417568109669579118637419738855008871113754876738171186087031074307856000835207930413964596025187390176561487809668186572392757632680513191503592056634632252481146053948010391297693150761542159459349967344432872878265757964836847505524149284172205699789808650243054152092459820203542470835330610259246148940515114850287758579437320354249498021209528082075092543323877707453889250576751717958411839219112484400220813186918736332842918553173900569746075538590397112631483714869121128379242629653293206989576700656133196556339028887048757472620814569661390348720514601204501624863300707386708072792771742584695902309210228974857024527005216965281502945652382814273096565759932114544923609379734854763461884159293740321746345108743374068860440217321548946908398529163356881349375093819911812623236887258544973266332375057282140499831151199936940889852826865147160605131665674841713541461377083644072313339132165728900941783585157317218506768338097872391216233373767244740424483987706767618124941856793143867972508247296550610205368716855883669101315630288794588889711438448486774638623212421759062047152245240596876085110927871462512262411993309509231892954483989535693032781554537442316914292499555886587279727501426946975945826273995139565659723004974590454227189602656705825458640345265253621310771579840104461078490318644258158578419239310805544448853725533435179573371287124730008269403654497430798306964205521493631551960564840995667536070413899168548543898221812973251640223800929660913211955492551217049101443400740944464239781008750679623004775555191188377996561719166063168467627451017800254335246473071978249494714244793117441461298368634941291859805431979552318906677740150112356873349852503225125614842491164070876442775815804357226927787715136440426954553355825058753125118303655441100096784813144651470043831429745842093157556399519349595940771664618654163387751626425173412786112017998547278570821336638230036238349228943527984659300315782428679734460466165127602525141527666759812153611541569462166126781585115112837435690675875780962490998417271228397153605083856515474928477017554003116228862099471407399302062379431206064308444252729356590863810963553868845798267666739951367465496075890029716577574861330888986315804188144011004204543183732782515953428536869751896680984735092155283747940304107197976371262150716061014504883655303995717828508533261135824991877385048822304959242692000071823531875951768610543232165268607403538392097494246790753338135033250828932384328154365432904466939039203784329913189897217325362812382753106889887841902462717934387554126835990441479240037628995066017420796532083289935390926763691562067333142611761950352323395473268556308823941649843866787138596937422992821493576969795335243591645086326177531821508954158018449079537224684256034738584147376818339694603217717876803603416199733563698599657572468547770251050131024574850368066767511171633518422083528447856685371570693525222484608405587915477800214628442014003697909542528644360378053754461560195705257494229901305778651244103229008102903870564477829768320904902992994415857922676727580514538588545050992275014944670405216438265869262670876527894850202024045026599058120614353577241484949370780594029443796865234176612605526279170379588051122638963682281622341101539084675061763309190028631544601754872615145125896572131442458266380729577460463962045138820540766287303045022543305413968139252179708890079323707238765060423823028314005535076410384395551967769836253584122738882088768208654545610540700694642560118163226869864215201584045453401514840298052328910594266611726753568392142157400825560901776793548811515258913346456781529039084796137249730101061884249138694349983788740880788184622995977324864223899374900449452384361798949076508788323901964596792872389204777863278982934071964672210773657941856268617586725589011173537193744549968659960984618475072050391972288515256702343922233456700243593276559934726200164938059878897509579599931191094499351363323436076263765215166024740178585576310548391263369889513507518966507926844729272761697067910569299155292309567882809255595674052840383246854662311309068942610201588409940005564113705810487720783050452482645376823824384320649859371455602527802463127285911510094089118824177370786313254435328871218098371838144849882664705376397290564811536242348212250694405255398610132144671734741776942859432093069298752693187910462125448727546474886195487278872968406619480960658981880103882907180511821210236937599389916547650091276746786995321433351117281483903112922805191318640293107309511794127160970396815758782460280156664157836193781096887240692840064370526591580132302067434829263218685538531455624415659578685003055435111116497946374287244877897906884558609533776064701595899460702519313398663507546203858749835296270774503557752419416289859787046860161529969676683500960196076959129958978703564708190964033122692249992320737673572810422573149225671856005574826768396887772668995791225296564896146363252574904686976770274079687922718000078236688328510047064418764718615191811095530899418763504326862335506519345830485381163128097982364072002271958395815778975029091660180078064724301222679225521783884641631679490153586108605381556152418605045706362789468472055069180288811110101851440330149130570985032846242038953151463616278989526883862185018411249024691678557493911267476140267068950813486658776162794173888856189126907847391498857120032283993778150080669374831488504717812085126045758918077044978163695790231519833200666468664516472961693135758782131394793119219947539339120751681953688603611448400633066170313823856099274064350279421032626469978221629744466705176235734086940335908910755811968943361100127317767183331258265371336501055060081619478245420335293591309041003296793214444304798931859110175928803940769409182341656135580786725448183438938929447476331413677136795410988817367659177326711943933131300127884505559551918267755822582284983871442366004012607908259299143004366595316552890797608300805238310609531184180724679552600276920946803923569475128699151655944891110780241822727400136099750311733918619437678271858410087090612313787318932438737501267358101669017617201829719047973127246349231100287653933369362233050940429229875875810773783004636837942429223423049327680945475964466455156415318215156527490714959635781838945320289419135905783135999753177200114989077891393663044928918803274353142893966156969226765695255872069259657978561465651052823008010374953753244177483055718569665720545759112528471468560282270733732518215483118316953522301164774679923251553961083378688363619962325593581211325621951124242485857896158102346489429145884703581480960804814185778822330474135299322859142762365285237224323008982482749881791212146679911448981105621299593732193093020377039734671101146672772163461248845988372220860605432733717041055389772482743837456065270981463360845693250903596409271307851247382229346716029548330319169476151257905680219869216826755337229690923610706798940509834221872548387114590817652316439673412109509414989307540213459365535600184270862637871752241372673260391480684753786241266260887951947122863230830930729486890263181325329701736329879414039568752546158785291081290279941153577448445342132730145147536409135644700659049387839941729536221992166001394266037762425468966112786154823850295782082079443767184779543476849831238837471145675354256991267641346673850770120199481246070255996516082378967118555903056181510398607996959647962076179842918253992324834074001051390711290852502307592942774425841717298589807892255425143838844117901562779624816785208879186369138424221735991521168533669928531326271975165447971156366583520428869721653432468797430195594258287721706604886393209950402218701301996339280382402623088344226993549935580767068359853165952346536961332305874252395763359518019320770181156137128941688677925315844506860883300810505551837024275959961865255804764939076838535345915231669387930883099401585504257045635172472574472506208795940886219965416842075472854036952133641908782047155715986979380497839753911699956384506931818098855448820531871763569090669035594634540197873709496206498348500294887294710741918361676803919983368273224843776306164791319775016639489931409655908677424181578008532806756753611377005397130743575061429859592936501504787997222552355678364927706150968173542354344336958040719924362925769163393940755087743713478074763219113597873039150775626435118607451124485449393172396131665942434687006968889076070842948529302717660434985471680400914580086139702565988101982901814675322416226788450747801617014713845517761344402484895056434803578143401938275597670856291753342543611155721559026826059668876650525516215169088668691755426669343872884923667086909478385830988278584887407553923555304530756311086614605891258688401793222101375997483249182879356256121001823998993601214936763934108044694242378658944671634515035959630024545797660297718973218032217042802925592619952770714279104210660121614887346674905603363223675022864830375406273462985710612207255578028390358217799282346378280308370552019273737304862536448468753034878398510402402851592371640722443424861553670314380685493494205592295968643225131584825084596363152155690471006097473839344515279368993203714826542151898066671615032028231793518753675502172785763319207855893984950397693157149986052599620957418411216993050990062945066019227203153746325786003858544595170104208850043283424293368794434961698806698869110161963809151538108196466193298267338766885002714469386195463863973141158084506025454084669023913897788214825083554087605377771892814206528217941137476663481049914498517338131815472520989070380237950014351046744918434683652490507974315250222580922181236566558446185409246504174102339925421431074635664603737808645438036792738278088744394309083661691864616775643198412657863700930801715010909208314831059157833996138271116866043924601811739433070491114484104387378501653653161889381291879667169074375772077433151970939288945962116478240828824038358033722186256377544418435185409346572647046341046649928368172244596712071568731259734592037504787738790697004821483756569985192666817774120918228373027689287537505415106535288564442509772760156860300288555825524838990698374836749660707977892359306308276426759671958148916198804148058482899906836062343150224727583926610038914659932094664181935967905141777117762577087252432941789264581124639631057045490558466953067254596475571147899633930002203877354437141435599071721387090045358379942024020211203514235598958808410929446303087146386621465112664582555326643776681653354412175416401883853866418830102671159369530568914041731872799956070533249732947255504413657641332614213216832766922870956622146915758997011312523106813296081524553876335860196588085587994281442962784494347551051310081087230667405376483916225255053790089756204742844346343803153285584501039519565779479412662101952667873845957590836704552004844683756556543037762224154808422947407905560487334652029312230730216386729904451617551634658499744334112317831249931054208630044155865819638028644615061640347965670197184823563101623722078787089281605603483224389760832783634815642203757172625132794992515509641713975566673535930647191730487391733095957719519712590700951340001043247160443605672914537127943167058268230996832595209972623810727325198153065265568333523643193043553039621600391978749978719706544634284900069158243013341995759821591887720854381687684924482384482329066453672008163135142738557616708812916836037130415110521817774093214975558960173141566190008062023292469776994343438412664892904071767601494520351056448738611628720878913115414147900768540817802604682223943766036959544946445062165603208004690637681916409001137842226853996693124337771726969309249300238616434199645769164874737210704894762392762147048483209333984021149306148924250363432143719265885106503595147036137167906865631650472713771252567954837981770745017439015473208042662679113335457512866439652968386974560429129160424501718054445656190718089358387351025533361013204904338901823863470041243452511995903326299119202039795787838213881629930701138927317146012741486312386854479930934099810059987198853263064582884506836506422696304193732163078364322778003772247890481147012596266422336148625092010812765102428495849761058845342071625436246643152976380925711223738535459256626643359484533525348442717425171873480298516437591322606451324180615363379790036213179479786222359732701047676515404358541384481287273446525945495085600742583298304145410363551974883903914891683815836179938890300815599883719042220586595288727774470888078605660034561201457101350568490340756377822588104204764297118921759888578710896971524397521773675786117361830048932116214827805951505811021841292304746750826424767640771796090215464732668462504487101956101469883854282520960190628014443440296713404014432976001160269778848886324315701821474077700007233015879779745183295809140166878209608201296214416595079819838358590282971545062907678072391880736971784680629979812881050010305570173051743081702613360582016835987306203502625985832758240713584583898971665360172685792788811050254502946762622858998475919955464060351409873681424250421430117732550340715471203548181775274005028970066239363481861459036092027644222072765184743840797680495585705036268657818682373851825422292745979891427673047826654156025190236453804055773174139286304960708214176713748719188693798883810673510524800037079992193313995966806253830423731725927418969282710595693357878505101953460068305083757334876457539556805026971839190074753396821550918529857346795323505754821937524746993569328077709197012729189290372722037553642049446729805319709210791749664245937936457880688030473346089526103156552158279917383031522833633530250701281217023702928309674037017082106322364672928352458805345894013193432122483267029450429274374432115209241035689933217026779606419869457106181418702722103208537394816339149115668227729155213167352143173109086057596727605765301490048958232128877977324299031330966028272382946523947794716646462578254961225290408444306159467680273947197111644177130429536043187280221241626641502974676530303016505354760802373702792612986806095614920250003240820432460009687505322911735771299262218116263211980166789340108370525132885175102181400681611918792406106890234541195347064296119794881474960465720794866288146225396010720368009190859726080935805526009243580441833425903457773214932450867544042487467841262722146019492935035632833572965841610603231599901083381992612332752789036426687912201926247857774506080851141094157629591899118683514168668097755145783687554174229100583370446008757513526366195928331635641086596415824796952870095537911599081522726709168910811517268318457218788952612253277730098722859192607836791659081616980247328207527124080768500361855839095846670892065986633078047948794069360815554446325477630148351851553634360392138636610547453358298538621691252563051322419770930706491414050376568238112196672055730934740602669472540616189286270151162461209361157180627215741556672186115406663442161264195062874353082020056478897786487132969967586107346236456595162792356620504130355344647751187798689011900457039860523073622141464077814979920625224036926445864055622043094149400202920327017381122838962674453357102583530991456599821458631866361490314946084600108580715776085020819746912867736800092723337174781691680783174038029326594864646221586629630837578979589991633384740364265136552191967152401250025492980678231952482873231908335655684332228988728981082940589569217492742835521449065977632564015560637742013066760755896977934892484792277803141904633993635008647932366669982697295968584935798129871859878959431320047894904929807188106296462866677147702627886942133793567958612084329105583611860560049356456211019562340159695997240308631362914388365899524420883212911933214118103067039668012119209199936791500247136228635705238351435358524235475812645536671229312271600307234163407833906906640377341373341488274362103049029004023325011342614334766684238699148004959177439780961606376858262508010053280998786117994123001519274603264964086820983208556683680677629296792863598593333383839497785498896424673494914516895642207945969753450164001452392520734374625382859746324411402854962546390139214143154832183761316872580868948641923530225195758572045489533795039725028395718729880456866905468597164717505800055138572097623803461799755515669281710791726108573990427494464647463323676252183620427270407700737863728902628029590456039978462523894000566111692559867822839610950542052807200497943279464552983114823691317732497570193650285248234522086946968114301951721339393941367703558441350342340078103944372629952039044342137812294142129521174061155105037266592570675585350711765549295505765919208855369649485414732924327003140195859715289993076906252852848539037479826877714917501078098611918936293964524744743241547437089383982083758427159100753054974797270164159966272550170019755436045789048900544545265429289460958055797793351376632720485765574200334631016464435172813894086653094507783392179787740721891646710255791787095933837203737466966603775497511870387912261067598997664040201610613669980240222553451002111488130818073523421175673245763981728545387330605427726603571286101346918464785942751780026782517925654793526204286561788369929252318537109647211228993249036761842699034074308456735243269922719547178574129962137828287158497837135014617122083002551050878311046844486788609147339392188306984800986793797048083629318495101153959898203060682711386233665583968233350560933057516587957179909630878856690539652332236100872572447526709977227914012435005132699721673738898033527909423520163311657833100816322872623077712469506255582202092688577654686748464890293742750799495384822475755452233141683939368552032357243005045373309117723590385160118550032079552511221439239853470114271548409771859100768675100381995634086605929968928148157422694578903784366138488168565119137431817776779574846872747109254539983913277660411720319352414080437717989211372009031375970767018133064681040795572719637800830291531477653958139644316938786834799992338961675383743285879413500344752497135461927171586343159275143192513985926712097360645359849729119449971053828211766236861031100912755023931326725750912151032742614913950666285310096107669043251459033595514997420373195965410877452171508064220867065444857858471901239537866368896308588795229122375275725457211217586806456916663357738548815378223300940157187656832326093118935465944681566188366010335634472868809447868574394338678363461589894972736115498711498570256956835791499790821802638457310944220329794364544545051731473062276062626741964931365078119789348850610310728043029624174353691138166095938202205564292177467431188182533642594354498536090866720079822166635044039083888250632231701058169714328294095860400043671702091325866209940849403910808572927827459207743064487561466577069488154271082985963653993557811322136482909149071087814749716767081019367620322487167479666067651726315387555322678690737997342710481537267892318866740844802528153234269807417991699581977673061600876026453396356007460701760820847364059052303648371882851962204784290050516740508362017642377508528428863111825249293547571827395361067669214869608804837824242724004455671696693370277865426444385372998789316840910670633263808968134084199108729341225051280102533655114527469584319926605625528224637997379509628469622425079982070529260661635959920714462011123551283454452837575648121624960019599190468394430525799874099853028252451645933396587102381143757562331385627125162426212669323066363477780496112951332125478945605055229655754281977135269263950979579568614166230797699841622979758523847882433212252759332340292333492892808055707567567962043815047109801377080671575195957868737852732498061244733496341867814323986841005879661534403758413077081686982551888266406691258728974248625919550546400298334026896746291246903646193895754129792770137426393112771468038976920470354482250351002767359729235924975169650706328380704517739066609340671318255801836220081445935092868591772548418159354161317078484499590202294380130177281460685374274341178817845001110288424794045483129766540512038109638784909139232351613330702663462828788824493116833659969065543839975962554578297230098823528287895917643714334275337110122136793821729753042774605421064879472765928370371088449010602848532803958012140803834211961937102235057350030690817830379210610406276353294220230157018813708556612689815750183803764660555307323383848477778640358797678794601464478245940195404850747972998991713974216368650172038186969367698164026404538510121508204497924676450779145465342367355962493574828471940317184658970662323423937963755124954561261950964665226250860235467718432329122002584602942564982459800337322279579793805342894623421415474101822762716852598628452830709258306870473492530450879858202317417846943947638997701350926998650012423799887148950668142551022239897853272619572849084635942963923875015307859264055861933291217116980911041364927454163986535000872520638295281630705887887229474727690340789725474231119536228583552525844025044621521500588035846586111526922639300973459449120367134658639061424387823368983699687256808353156360442698641950722904652743157292994347556326592201969650571996885720950238124508303041588939763317897697511913271773984601393127583639479284656286937282679593227588564098973590260102392377281941380024785952250094518935531212061168099029317105511134778951596502201092388636351609818602742693902559967833536663216001839356737676928783087014047487532220941122229124269356414503013560832780338627717441075566465334856183327040168876503152379418236008242950259993758273122236668859472225796995733880022039890985769933431720463475774840819675728593457882871625349432027964424631162300819144914852751195003489970351072447851869787693858408005522917990588571810288854290112568069065793711833142100341233165850592597627609706738638955360366983091995385400001914596907925401321988006982696867032086455294092638569197083988812072627996088318874357646890227102767784879007221274499242408462375244587517548714547674277134101283066019403503606876065911361044444995944708950482673222359536045641243858545484795835427557184015650442994583004219836531438930157397801487668656804464712865610832564371481024692825384016587063727604373069309158599159768813383729880595914739215022673069699305531866833634318269811924505943719411222655124034565904274112354131347066735629492529551753455711789993175613862742647848185564105576098918609340708277130897079126810898601097993920922525459755147380520671139314767850935452862137123833762730220362085052595876698994950587894883358904312637760741850506798381991965601643633049970842007765666118703527675730058989276907591026320695053237185035286151990522039821230934064306049085074519531350993625716702035205891414187589937006378465881636351933063963349452760443372647210384595605705175961445899042726399574100019166795365808517059114902930731469057549737348525396434663749380402407092175113639006572924649318120110517653655472613568926088229955059095700039208554579524643916765596506025365639661664328186165604704507952590022113829701816266037226854412930065139106745549454597185420294452188615196860594010319439104976320260015543715513412567477848774292607500512350360489059493975307950985034345922253767487012208024022172111809340576211568019480832906153818505418830777308761804351488447438630402123524942128054982954041226624519006928703561373332144021410654189939762506021565885625432389092142029152792325832192557960140715210491328930134427946876914268713602732764942707162526537418962244043971330229145405755293009197607018254473465440054827234155888399635298468235877975005197293164589187356764549432200871105737266127088329250797367746163469601857178224582088656650749285479284408705512086132425801955824018301571130385762189832327421183033379515718005634320658233744637975548196428825761698414178289029796644505616719369551971471129889542188982949666287390736531761164802727149428457118096354169624264722321170702794144644419474524616915171882944550749758188140903717400433092776103650446567971145218870869724458452311257698546873687931425680713756428434269697131191094572831013628079411919948983639680662632470670063090732958119416320252498114461045404053319579649819130408036415014924648350149090014844914257059399319992360715307532175454038850520887713492970896330947380900633621652863997613188647440404959651906332592523954287165893801048000443356795018664966990420228599300599860301407474009310125237886935937893510156100662122301264987759200497586349745027899593033997399032957904910778469825915487459665579153541904430799113335982430342570580983898521726527027938304986148590536994232971264551830120064902817790400908854948506555950656257712947268880892790292867513289657958658052820972899272363047049228599345444705777107427511006004100910864087160623405561629076710630594902756698745939112022317702960213749695125594540376052332359948371670559244863961965217697996915903591046706080016410058265025184491040026834059946938025255620734900001165629068712320192251654173013378973024752541116231289719837048998517612523706010489093827606372873678041422000226363120149210166708918464219033137189552542380373330037935171525965646951382947687572163240916362489673717498026119401954321872615797167868140240808966898085202050058187564058590467933926992633026764218926066082832673911449353572999598312960620240873855222526531173327179374655776149531141000297283682704867049396527042495633486223507693785239604297829586231462216524440116374139350862754600158966490569682174280239747601689890929859478171607568145630168199705337062697521444587336788411685364451531672754592458270002889781453217042038542362384174900920452801612141003929520455969521737719888482014241744423814374011627092661105922889400325984926305979329778591198411499434650410329025919826255031387120802919240371782820632144055131952829630596923434862474353452090953345637703049973708887102442881562792751548322189453544669511319765227554875369346443474367925297879487407711892372021441900027581087748320932490126316059494366875935005314052346826001686990275395569307306037868454629635343628716097348305110252831893917727192416599124845405447548864235072307793581338819478350150149056660711596113860554204931724878909937561968301177059564902121322709882240599516240533146424240107748788017369376436813418574764281196027128501066251719067364211076578769711140593110677198119435393909485948487188714893890567494489941906589143825840723982451597010392242009375976570716003703919729069160011505160676525924974090646386150521447482221533683422523245361587404358375825691248495408175790060300550374972857878397002834603808532831498263701006177677939844299230520119608591345041895545178523823409949559920743692766154863480407932377974216429029299583311353154737193749957160568574717713151156657819878274615271057331571377722015524678955149107456517065606882520339263218067992993050298264892402952750884457777058317796885246670868428793823506008512416595045396417345937417566203557266583600835078823882966952039378751457564374290801938792369090834214463283495686042140940108938345558789310230068850343500092387851375254096080297945721345788107050044266589041456843608721581750151875835884072419803153001790032387283667245669854514306441537106976063379192797731423341063564488017225087427475983397438279858563997818107438358649733289888623208082680345196459066017355544105915775709685441468629883206892258788603042716427230579686722273342482552783521155331551189911009889092745354694192303523296409267832010297469249187567959637217390554438228734325052038023107114306355464961515990179593342805356764039717359972667139323676283708715642117198106586245885902681990439985614826634040798804826742143364315117205048504876198002059283428972410361753771066496065195008554454323316582549523597685233579888631864667696608507799898830922326267218500119060768588214249755604476283565092061274162216202103875758951319469944036598924253428612794124862224603681431427050732649812462944130428344546796266364867422952894394015437776437565875972733775491316260316799050375588530940830907221383813318840520171890253402727780035951242885892336138486901974833192667888057995103074976514952592508298081862119006614244457273432798276469369027701170505760049706318600941267580305452518977281909486044939216228594916014342402362549154398082638163067475926631584877545929751715979175972096194292058206464511123860687500088457440636174959839861737274944950236373993500881068063319893269925096730984630615699760586813792846781168912437980570854669817339366394175141682908756718541213098612371672078291957260204853555568646679175227215576764800417669764068941553126175244218183212406015644514257047989564054098802389318282607303436452653354256700341565449676383427354263643143545752896041262896730942524584298876791762404095598258174542664186106896642625478676734524818653141828496267558859502936381776375682806912295969224559913843075898613819093399137632949590321116924410989216353803336012914237674127280609627525299620634652474605093323030435967647426290119030461759561699582260836399661887727617357571772555661804082255646777732408824966873823736615712838723743511122817298254485397688618398213046574973732842880014906336980456905848030193916648023610549055923821283826271353242792514187718471396781632023819784175459694545373089833877467443454369756895189519702420265674592395833141786296744696549421112475414569385690875687476834975684108100084439861319097093131853382551712587085286304691000241937111596963955604116268730363280269267195638690437654594835454031946859156392906018074766443782707601477567005455912805742672477932024206607356336906554772043697998564676014996980393835136767117358464113693143228194013502861215516889750497932774703209595275710929745581419061594879172255862231704245787982609525097341905164781914682877634400606833091631689162826356632225425291618135211153071166459442763916192526566785369760527772853928858019514953103542664558513494262770397288997790233392091146458018310328806114609245463972207976382196304031140835788311409923902001245047105102965306684996056058459710422499070670312809335176352396018950032614425075819308662089077355234235014698531813376802214704594341000505412809284831287043748189099594182684044876971713815651013697233016342956038603975830076772164962859293996363255413997060560389279497361854009483597793189041471534080262937644188797894052985716119667967448227789164042743049307424075149199039627551618362157843973734780313506447391036782840759908465992237993945819929436969626480162905797356727907186074271042285860136545652664896437901992756730487524965451498718320565524680774080812102066195700326126148984870898996867932916267132415064750090468962167542792403405200670389645319231529080346173766228458968340400144509422216951379148897101033171499632277473073208313474523592550226745187151382312861228659507162958696884051822910250551243247600127494123957525925342449487174550988605087388764685943371258606553346346440020576361008266380835742774162890678324529080442631570533891320369244269394202584838547474952752408113243859560073271972413767093305298288929812238607085429334803179380412368221390333913816216869522192080111452205156323597334837527123089838613129278735033670394575531184672372112309460289977719929559235249127166343512699294579552638538789575164437459122448361519136864089334412360530083773312883004140171255466609109693596794335455232951753724804143886513077139883067962721195971581815148504742328551205120210531350689796426178456399622060618577994637105121577172965960349288806349356592870064572985848204809546408808982651190635896285604575913337171263800358752347631017910166604607632533828529932279075646656131858331606871775748900994146479341612993623585053175333984303996044237408765740050962716636497191944445801520284009079953818474851170567691926720549373139318403218346057356337227418329674934628389671585198727841084098286798397643460472357524982743924872841730400304588796282562816095939313785876761700443309218352002113444684164562888401423151641286857297632493704196196641229936006275522462842475621341434596538710734119515661476900771407825607894844196125870122952809748710699791957583030191237344201205930865566028141897973706909457874929588792479035756087932837882622935355459834187099046512676073503986278034936192153480094908450461672409144736467195437762555459960525916251423178864493734242934035998134255407413778656284063655734814977117345917106182073913728269265121607230338355680826093637223423655444195002036483241635236185102077302846276762495867294604940256309773965933039194636571025832094877854192534148182411466491752626497752323659621687839979681504404678610694071576104824513478729818742139109260032417041376253665491411390109201971494228142104437140811202033753955225846237478066566307859283804143236718501795693102079366619316862466069119079943850844438125807202618354822836670956902255627772299751153141155163046647262730599334554153769756176854627522394239533480021208087067432532453134772838338469002179462783739938027176996597543053126162056464157684376071231516860733069314477047241540688528473645898560795240749066181093747449386328032423615789209713315473446055962494233295228876440096724725126452995762104435149258596529476864823092363023649765621152296122016403875300112946886635499378179653643100471159433867446756282445573034779321886327876072870607968098268857463357548079493596583597262957236573355015137708277227892814562861134654147016009236973393699878902931581466336628573092173859395509775828339823581475495989971434219299556275548632400855756337193620065414853308317100680279835177059619216594111187494347843641168209908646895960841157423008434311240156502788633489018011118172585504565720490123902986528192272642041465209905699227355820639139398441041065329108717715876512862838536861707926679557202366660402432498044692274586190058850371218413635215068203622919115272723550301610763617967303967161000926167451712652047800578412882652049571744558589730607860084126829437599157253083094769628783780076462972903722928221806001189464290784481261789146887522118405926872821431342740255477798280462821120539376650649891468208411638911926896221001050011537502394444956884809102342310066113514505856885358067193790300075363679173355267776358923289175048494744810525495859306290684456300509639424605586418257613109133353990761060383178887321695921235319117578518767891292931740941408208297941155786907816360995683313567426539388667692895090858326687485831266008282672074525879911116762438898374024894646266930700199672900514359233123233487707135870054147077382970936603511696070160009291500396993360523924989908041548089783514987148232660567683529922291121089600412583938295986120648440482714740007728453520160546611262586984316703737190491066176532006474560452620868256938565022038824887402446923874888321890939068145631905775009211766186005824491943794403464134233871112651277112602555335959098048743083524484887827482277817230052135063750122761081779552422833992456582872401932756668591780264899882980087141210222081635558591486452178962100807691167645405396609730880648957730871331022390717759070442892471349650186621498220773125070753113755646592045037389078697344725756186793441347755717026323747702890331094781948419877269106459092453191138986436529545098798479004059280945778012353704602678048666536771485037325912642494285328712240241204703015313268974115949902308682063767755474707294467645273213505154377092949290377687579296382387322317299710180065025126501762036740664083732370992844221425065069537969072081971617433201095796131449449011610322900478074061269376412237650506980191681584301518959496384189932200446631121321527045729252265409340533213229237873568345598704112289887757020138935324774399630449944596518500188662294156934627430675222603796794901671034888009321073082667555529875406020730757145703542337446532725751898644516831596418239814462275383166033944985993723363470474097113434815626999193525674072307812793626768494136659189917848259128159448630952740099816984322196863650834640857323781737362148966789526343143205147429228981773407975166596133053679998487362819282480859592285796334066389820283053342643863703101722553744754455408451236173970025954786151810177526549445210074851116590986209697610646788322810107374071932893360576212237552316541156446636752161869277537046549391833158238940074292139305319158791415401805137714908543330633977323752114126618200027003054060122337964696542205733927731681511364571863648308553756812511748093195790361396953655918048830628379942980698231847931414929036889812055603909995767371633802329724743858127764165893539853973312398208670525242629900749750340956532980540893240771005846306717391797335258613002215203832808748529547631316128749686937142656464133863801817583406076836325808665045597808740226482514656133191141929770980413964582662891663163277613813965838015728579762164273027419681073312601670191526507775830672139900235932975763535764933266270519116439102688086267510395606257088033291944835024623069834891021363875561173509547485643247103301121799059053499657827990804984462916745579997561598541502676121007432507928158970585457401949229770628190481069612412759059857219821429897611629500682700108323359014558781768386639739096244427605430643706340173580911921734151555210644509167969819431774719299552749348502501236994257541987543005462884007682932727506453788112551593043720541348189552813624644616786056651319064161438087805060057277491342244581114709433328318106925144834620336751534560222605302623892019671792206253144493502151459152880297202587626611118356443730196202521944810393997835264667274224081257591223482163940490423897672164890848566703320753029567083174443086145059686542912612142132357762073166494461086402199874248750256724468338036492368104981205507289783737698527251617349743575451454978022613143839581900206276989351104178056923055581125391487366776165006185930446210824681820541291097595115239055918994494042279349869965887207918709771962629509591469501445104294836286678457424187006028827332785668513132579710190472003122250253975133604437683322462403386511245488518035482617724428032772379996170237684115019628298681114250764961695862714793714442610755005464033322157665273098662613268525209902728084359453643597058617608717998094804316994189058072187311865597713554282678016816928543499504507043625593498406823781280777453880311301225041904920624514501700731683632095219448547890473554948082867029011546448299336613881456181067655353816095267636518023817302933567017197180686143634085872459826280200447454041208888834437666979999113138096091388248753600236673908370483056251622837367136033430614200078837631054038148338360339430894512485391998183413644615064403065256693933136523928911677405313766883384643918201743441648085117918936673056470673213877649277468180426444736452850956504921867379711591105964323662875850389316529204653238212065239681013001009142932562022913067617279970848144386703341259799717737279814427119544961119283301021940783910894489808739758505187508008261425601148175016927219299245631098930565618099249574505308738240570940842484326360935092942124222174860108218640593983854383164314555101377465938647952093931327141444823294261460678504165305132736729017818134603175376807754688943577114712924367528545756611820376757377808537990489168529403427894550758218108660379168562828339906686811976595692058479310736343452096365458395346600244806396415000988706600357369089606166397353170141357801179987637268473682780084926739786533040603423127010025470332666700139651789139830370888778894504867051923926557500861739273772851845370634721565775043678956374630917120304828694447383303865023453937985472147255236735096667680851964239466063016774956207458241416079976382166076700936594960782533370290094437516522528772313310834078195366902715799875781013959558001131792741955971005376145905060479828507388370965874954996922332530489733647083802179298826380232097748911822839900388885114721945217572929252198888951900596238455757579516206093824863796010531639574903446121339913828032597931104500670442441893424678686914063957891468728657135564491645569602356284687779233112936772471445105482966944719694454657027455480759325240489970249184986467628574261618457433286955305855676185082522503243389978809697737908700317679958515394471712601428412144250127767498687669989868312646126436260781252531539285859932416013404446829697827931029529973872395551875311324917976472289463242695616901409067371947433552621958915381316711441049054951445895124764856602789116568333550675146018992491526354735525820635493053422214676587354997544095655245585368574525288351256619850275210007315278137092982139985120815363727853143270079151745987281418468522837181579314609303265573346223831861377627547667484655778293780009186683269251135121494013891252810093861472581009405509201764265755836695223604468191440137187191942140336001138255667322532069771016089529811321302449531445825944836151686684915772358184969242970241843056593143042821269271037643521959060231199329382735516330645870764517032349332836294603881125505752978794535507149220605464900625439514596272116907282403909845496211945503234898964845788599038248645816873216409213273589827067430443386747766482852958643105452015930246578921070846522456830013164308807723961186931434616570765099244478351677201787518383950298907328985810968065213144802944573636704297773526509366992521811886861150309601606233351503578291487887530600182964969046221505653238712372737034744273670682461053850372172436233365395777043301574040930878118764551213139069284322575700796148954877338599051897057438261160241086455602617784101461161592353585287643703759809334700852988362836633137607745429641350037956801569263289414564289392571575763133656825495741595916389471315964061540157233905338510756127109073787908991414728879392538256735810728826596679271226044048306561628129591627399887374443914427618583994648436850659164180691170966475537746346258077893412424319114465586139088016392837537860214496133722574993587557995259806729015395004574588845744344771789747717125662045334771312960462243145638568886209791715109754380850073632725192295004530552047646532570187254794321214866985804893204736054857110108151008629306231605158174380298593339265656015142762462575827289120696727511744403958704914445162044226221085511382067161120116022996057393819261711276117542095645698580104004123779721248526698426460435503049672872790416370821058229450122134607886119758820325959526996459585525468497251163854141394211965233228537284366330740808904180143973955699274561688695048091766219884031742514808220238351728063894174237637009147228330016807485701568062498369100248682973691178697894601572275325031144202278768651969609698843663160504873639962799853529218481859478007584891219816158300754314395845668960086378830940667571409880352864276400581225475729041349158019762844975248479313869056741115737495225674046258816845779569079737094104351397673010740371127537556646313765422979712247267637615492613425682635865391300542972119146835666061203011953870605603322896056793242582256993610807618008932527946304086951759077208997323314469104962758061001953270143514536539511201900999185955674782009952038035402227709955826319447728270495183190657751651764114295485965831276246917731859691532382837678467622849492746474180740857227033266597333354950214946090685123376189920592511416762548283611115283557823541557396883329920859759533720245652881134997642769020172322167540140705091025283626234869639925567326401360414336028260373407940781843130755851035994053532560997420981606370525220475736384592670207623673535034684111754784475943299096401327663564277719324433359980535471757366665764819573968321480349949647159909966650208742428925412874199603407429692362129753309743449507174833555002154915021797102282543011245498884023633747606469029198272467657726925123067833756186890231888727640755844015930439496386718644148552714028431997808584539530492233413907707011704090796358265904068800244878785197090598511279936860113541347926517403796602368998959165166228444268333024236426486444253396443506804032620220509899352720072329612291107577503143120114747547183388954914414168185715460820690351863802701800875233302911151787887141291988206008228839955809679983910636228035223116044026428477387110855953972980237961501820658745427338712057907961099961528032856715514014422944597977425272880357918108376101075288574915947801779053379316416919609272270134699990932427135201732578046450014227988215749328475564606027435572480422255856652091354025005501206282359025518417105632383246018371660539690920018945279244570268433621588863847266579521018519794223549456315649524062855172646119547754889423657778541255561709915960035220208632462330185748153504075215153313150902339523829942082107515028900931541360414118262526623033534261180237596694605609870153595423830073530662758328691346744417410239238994882407410961042477310742434285609940318483123856014946813054662112527335194242928593501855499142695369030976192658243230240584556589498678081611803537992368818731517848843372338018318775470293360352028886022828204533790237357715813486709566088622997058795495235140570546019773603033343872733944849435004205103774367679116682832474489176206774122304931687498670770206537124476028392727755123377347086701159177750455310227197606397276764833390738038724979408378723665205935053663866727837502852802434766007119012989489880717576766623646918291780719799120839527132819273161293540563079458138159575615692990912657259714114355507133031645893395061507252167935336310812178883277784842352273664631357854696334905683960396000713452545687043876751120167315485393364484133832626042571629240922520097899743244046448557686566589538974789050845961223046620729305863008609927026525941960738890435137949515610280577066321995212656208449069687420817646730576627653840909886627580355579374969944015241243772598410503383580694857409441260141197821629757647241124978164595767857780478818212365722503953867066678325336632906520653535823678325661802105565471208160567550014469094652861815077318401823803409887982745386265949754045341130144877107606537084857020029812763522190209453196056825261984444216684663493419379875644857324084277383921562251773336645337497086424875966301167846477797219354012344163240394377317985572166710856876016687238038108676555572485251065278220056392432459789036661674978692758142838170776050980991382675270383273170390031287353642238477363310190176889515414630365493364248435746428137741063948340654241368108187804390138323255907983884960000445875093696330125706492060821021321404469364770950857973636049804492908521244917354411085732549485744529186587477739653703534977551283034204249294629433597786516029643375609990458512932238476381653119530344305729737676107268452623281439159558678114998450134974575390275002179833260163028951446393737423291656915126047558763278045261307061613233828636900417907710221662349169432216556518100667066631888881853815446725137852101257791112603059938936216058189871849075017329662207822324166349406850729971775999984382714700719047479556044564736856111863340672928408879487745383878202189865143203862255803836561335726796810570027774643563412594417100923292128327569200541124113234427085431537395756003582319460407521552767151632423647489732598906626601103168246575315721672265440058463030254906345996914410150079458136768421884362559620696756114113865330719692962270505680141511927395909147069827281303665898687395340647232592772700773338706252384956762802610524771644955682454519155851590083713945946706227813222212248422781599810765331429034967606656554751838171214801178326209056916639196564254676386173256717313290304899012258057210715400330559074195373113061910638536325335343907805873633465081438554854275479506348783933560483587768869290092911622503506703852140643647873346214158117020222606419205548349932720071127426208013072371490808106428444633288708471728337916308527983702278853880838956575358681548107689256094321680082770557459897065913564045532274305079585673948130679374436345886360240854973514354195990622600070594704732142986156967773972959392992693743535351700891828505556937969645509110713711276924136254979484009851601917921312619113530889376777270204424288121001200401505730545139165868232324815218031849174426731986470648593202193747112248352135629109302935496150529420629444521677744003706396711214055091101704630872241894284959316258164910062227030595349247479193366110604645578677648125973593135177933978529733765078632238012596526220048395289529993933085331186898082781918033670668813262974148468587284181355769021621166683193532145519979029848024913321105558045144927130198424758109807858692718944958566040537059197941329727892675978122204915152009803135715740815599777991437043961071719405101337546630305580617453126424531184599685811726868102667782853251091328977055692140917099444885417776560042348913078861847155991277659276905163414527197268182247668296903957708430927784761827734609634479972909585953627453508189083866120079829926441412469729234967072961680044994773517934015051060905444646124769264032832272067860539805040477416827433128098635311250026019362430615333331080736152215412632775073594367352799304369363896226634313834967280975764714016588627956321889265715951773469587101746514743408190739710091120026167153080226873628015652633658139006981071132974517861847894655026710029029645203019612395174327654027497761570908106252935377186511078483693599590159214425758813000172412523446302930700140687729589045086794681184148590187700014566527821110563480487247136336052166575917207421909050764299402058056155566630725840607772438491031784903501841064525873462294223406496379571292433014038535067599603016188856041718606132531071191698013646806288984450873704270938604714385303803191458486108484524723095087969002552378890703528728423997733837051125589736247986810379043321787205630854193673144322726483649849010745395404482851253000690657354684508093762825704473348461984879395058293041177996588688290405710758523380338895758212506192639496628623053173502632847676187904021791127908424488717621846789194534116782668388142184284347690504676497750934859795133154030306322840990977765533802366213051285313450939385339273975780388721875348603704466328232948496194422804779372239802817142473133085420862675265220265131545001706048696094772481183007348902604594066972394025656134835181177963188818211778783528869177197092242105497806413520005954200791870618783776708318517214970861511204374752202797201473582607683259453735621393028316800645813170402149470128022657872251742031834844458104876138002816776215181769154444428274493042632772128693245685818087431041697471033196936422306817421152844699431339579187369461646312757120727677068169581762474213334414603959625475528238155359976161150425055983171853324089382232566601923497905191727500824598094157208794983846727716240302588286589635346080373256234053345818297737669580144566907670267847555282440460757725543456674398889744835921843948258111932670624945815823795580471211258729580728978753703386788393083889384849285601523835941123449239942278106284407514842359032055780439283190566617220436398786077808271448422711029035754031687983283612124892680273145877691210161888120491316800598362486207635006531120405813515862406689684375583328155835716057718073132218868700265290019671281469619503846731801391586587797275461880680416745605641779138682240985077019520296406820260137704094219217941931645796809944921233688027030868413697336508015422771787965753383708586023404076386307020169361072998276937663467385328987600333986045301049213060198242709962752280814493577373141133631468615869642617661736643239787788793431321500728760186491105751735748610851546278489421144369109448960560003897951576990139212315886150205320970769006104371102116346115635705402648296474271526679451566505780914999777121848200862600088047543803209748104524871597663453492588219748722929797422516847178466117881238019295227536198470170068341863971471863574762690240935465839970296621404763032476449249077966564129087927498165547579624317670477142910555473955379060972495571787916606477481456433031843890287032649366702336622303114928545563192185108816538326652018985350121136690816908671771759296264995944997156161625197319970339416359541296700100301563240695548888882699811673575971632923262896438195734231987020385806017390868604275022607940715878286304068294875505273881201002222049417713271460393599031508862294343077544771328023135415062037970082755909095409974177170237207727143045044629048923346640071958880751907937335832599793836640302534801786691277561424333735149997509043708054573711750813544163289175132464108595440324909120655864797101888128667347237780633031068970705662147204032354376020527685801019304144404194381719513660140165267226568313957062225963015472659591313759741523920179134027311409443251483399817916422691636176642926610415770944094905230805053270222248709746305754934486839827668936208497134382337289564927999540054256555486544770887995518684699261799055297131539349292341605180394573926899975824140786451257966167031888299467242331281576556355201876161619478388005789492350130795996284494200233876304203531297244990727503535312983304525664873638758069873182921449396796874569287230715281792958897162205765626503901101860268904816506903610205528115249636613147380436826730906997357643691761518762725817118091025557262433695912087882303408530613935403130010852815072087334354566089065398511286216809054650939456249919726976490299741028840456226312189385127272309752091128671733240884225891119013748876907855971013472105777094495388461672867637956233170399391262437553571378830174880474024897585281192101742827815228226786758688985402707173857390345989349722636461487121330546930455852232424517575990534538755978946720664627504835224878754426835357633267738467185653711654726629479757645221387783426240342617388502421406998597157047230510534153060370328836151522102716000093363652079317469189819743952649897851718205929239147504712386127438362948090060713373758981385036821475034637226067533017296141610268828805723474947722375055303467065396758289146274245728124654949391817907605862798410289108565752950898474975420708475265943988689349038615296734883566297311666604916288879646585975666688650858847831444428290463134581697824737948732415049244617594000626508401628088746739230470761421963198834390615940849532393716444436852928053153102973535698614705109756732247991705868228541242611110758653682723334422828057078518740003074949490629946310706476612614394122886173545243315469083226703635857388572195863093850861914214073123954872185359571616964796561633780513847568562582666756082199153919911233379545283228303730140516613902524414650488896605163064831452258404769243058272668190777464008277250723461522723829004214923896462057716591456863906133649523165325798357490512899583029463384601940265312513243407984209345723526576077748731250847533100788117471434041433209577208060227419005011060783880232898753395470801465403899896017336363688456869510144473278951746222480457526101379582093057877249005883684779684001065834439985370435897621948287797012174675602312054950719914298180365478926698220861119194012903692662783287327156074316470353689780158108572280023894984799359183851538509151854228655994121004157020932503815354336830845490980394250809329404087414391873604377357945189672982795845625570572340498907554555521301292422211012521913474115511916282012039917028159195977224854916740322568963889974585060715618608396391171183926328216213858842821477027206398540205817885893618633478431508413490527486279152184997652520341284680131086971393094823065888108689759408856447055192495931356744456857187875148986263758011829408969072311506820069000652842446015150650890004555563946712731172592411008938035367876845896775601272299572797183201775465363868200784770867213560733305774306987005236724331454187645038647112462421077347904567577608273490938561564931694842813830071686269129272808190191349483259410405795278742273254230947912595306343195921772594300302112575857080953382725521267876564156595864502597768773556655362202228467527415828727132026810942156565413746559939568030250880943327804885649064954008187136113375214179508932756846315154600683064438909786349668089484595430348492633614568102169552608761714202076552426989235830451147417653980177106697422608038489509913735862317206007520636290953402138039580666904793089165860111132389391599428668481022451015378780963808444774169936510577304132688756012392031631128336044947837400300553597817930452223116388366953865904797473379881246370300176162576518932518677934808315654207358934036743962785464521913419493336241495487117242624995760551364204426172418323721390450301960625605208265909007856888817141380542725267319507779098974006427812492932682091673797362293804315658850905305420329557110445964101137210421802913172801943734997511180514549339122224292458187749484329167035111668462926840165458131488047777179065955792359485660756455179998576342930594986932850284797058727165045400732061179065527404655670539969706104688534415885050249041058756124697944094104085772168534540510947043310376273947560537997436040631257283158085895661460829539947081420239177996497687224287937350431195663213198286880892816026460584371708379168182650696054621782085469133236899001080385649854748245189348618462071108605994233566725832705182554974160592072674912335701071189765726045782579434175519577311381687771519367173804587207041404365487991513206563618765620900214008995005606477240325066885646648323077099405201892250121371563829037704261975309806348915132834302068146939360524283631708736727591426321779605981285706750717166383649920577644661914799028884709948812604933981681459484041514516740815006846647710732345525850074554502859492910187808394440029820219982004236053360674682875336755846440643513546157269895770899506538440556219732816342481227820850899367173291754669606363909617906246766929554754703887136842811340235203010839205054497328850734589178283617787742906447243169891675600947180999507732614617241077949614666794469379958631717926007521656340230007868748634612500747413910142295895450600308774272657266889629054332718839133304394238313470083408983795854478746817103007771803062820749768746612359215688015725864435250511443758990576056532225995416145005004682308331078193737082705678241085028961185375073250644808740290018219289479680564776740667614365781948647099490392903851499258333449797862928241336705184228396611031537506849998884503640561969883468238080621230696447806527429261255908293309940075133381488775858987549251460329246300029765439133602755691128635057237820483779581603351625207720878088297715384955011889816122245851032591434475242654151201239699551503672905417142002018753868165755667162914989901968476108880552837522169155938318531076368453524994761481716888114113189126179072441445055111701495592087705006814722522524316012451129143852102432748427591511290113028982093979300386886038194736317422596805702599904500363060724739286749227377054841033078801360755213059151864430361807444972537116453071366884002389537969200463328697718174414692058947325573447409765356418691044723631916653588852227865582466485591883752870875542201671272571023281608811122821668790975563790300015451430782006379056742765128640902443345263498381202387452575538909268755229521059609429844391959977673041782082769336624289740717081527528002897420351126275956890504541370071695000348927657098650162281252787621007160397371125651246733423867797381300732660182898310142716770214781256567453973238933199951193018193760750743714469189053684443548761257988027694720415214925886030531979577671903142807377689584890412726815958777317551903125810674337053990949172319284956940476832902645162166192303963247875741013240683319766520711225281958424798390687802307366115124939370757661804825487571959436441231981811302832856780842813537184693753896748633545331149111587884753811079642199085132105473189315871924240097651344164619621293314860285979969471322945254672522826805569778550459447763351038748874093427661507825624493482410506940873348666257447726383995979704494260480110885203576293946452581101497488820578988914942922243167939572812456947889458758908899103710942873499244987646610517074529879559119952430967151674492459135625367342393081985374528729255258456135782541642537087531678867957536932318603962323271386131982728601833583127749694859216172663565144503719362873373278898759716863926126936727449419474821390400679984825018087142404998139622881679257706653004310980728202262341901312532181960317978551037514043967680471939954524637662513215195166822595143188877764658820955566324103096817309792801900780131479519919362224080692540210755574360858429053766617600442359054022480343286523004705213000439071749715945377771752551265793326869644781608452034704375845966310268459384064312013412296745349182369347931476129819283584796554810549148362237297367314362551039069672206574659438972116609473076450346097164776222878115849700885162661733939772406769413706370062398417226505075078883617269440989639659693633953865985803270632250064664527368660524603547613102499493661853114012621368384422269986250181346661267644238130951798133024358042430256251672129695058919070292722107057954820377104644007299310252168502663710553340753371380734684989797110196263878037486729700792498719501440168534402516873061154264791711003037620173445743778577642295839030035733073163693912499142642633588852209037856430810128691447380395801871702851836396556705122261557177393765468262522190000814289837263539931067606014453784269906739421155577897533340427532789906736278209608001669102628660648007047941057400428333779303262068254807844929195944495246043817052703311327903676530029444046666538778843496883281808526201193802086188710182901806215157091757990732410229081683690865752405172607338244620406618528648512786932059078900569077354430824375929001194530688476976222190536653176140828627202573397515514747310429880039960836119661792874976124126693187358711914570250775600894493594125952857489554452334471751097822221964395709147059326271613316224585169042408275610795462748783381626611511073248654976052323861924660086282809891271138424730313239681966830063874536206246581572493232703790399502437315934684265485174160817274395903163233761167612097317977675376524963525335723549680711151694769883241347377164126578033098974278832909963009548819436759807086511219025768362229799038827673572426600649443121927486769030068381116358685618444313175492956585850890630187927425829191062284464471805675154169387510668540441978376943693165870786254243622415188286236176512238708794583792203679108534720064144367945835437106044640929004145402666573620237987026841777758971715763686909593940326972730980991467151449448548783468095749390821049900236955246036723030309771728781384657609254199059939325303050510326466650892893085744573693071979649722394797973183104242234070405869819935757858057333794228436345072692427588917380081366114105010470955924648178434425746917750232799618043535851528888796216027297336990292083548204799596901148934777658904428019033888123763552720395779741728445576004775183669256012786503816210143393468137982825939300260684690032720317689091448202490845565635502269631241133678300795793067886278581599241187335595273680123710348012158535705691175400295855869920630984552147272843584398714394006029910618398162950001192142325580646409555923790442476980559762662184085300972441609313518196909636123764127750301290908833855844202251512999358302448129378818190724645427821023308148048507624932260956090468661353435436622523052801240128508907472367850922850148626511619955901463398003595568834597347071465171524395864308916696318150406351108607231409588289685038649964949982334725828065035897314831887934721101127375905294455303842721728400522273380661883530606674991454561287447692162950476732401575180848129079007187014982984447224100994822355876575182783349457221681400666740900401904222802468318583921728320899497509950034098783904830542802446053384016404270355639022543441322682387661926749479562516670692944960376409005105837595188336508153687117390655029389455943796560729784235425467707677874310124119779659127373401279938102476593929560172341423514763371430041949984671891412394492524592804958162946488314643143490095902493052912595857814605613922163982356897340365453053666196173174080427627651518307463966981620427237243160254690900674570594901246012813314144638703445416878941010908463126876009934122872424511876167454657604528100397664754409169004676362503672820669808815647611793174342533928885099691634180830602745595195567284622665924895235031911861690187856181493795617826777703363642810780091649236375234386693028922322049640680500346882419926401482525119576471729715307970225660801623634835000344994611337499941967990717505608137614203139928463782769183525413189902086411061632799940403658602151498162095950584636367685811146821127131962241086558638041890281961317220290042219896923457922176629697187472539296547012605528294682540394992435177765913771787651539930063787143663496980032230992806344761536848677867964740805378336399766873309715992867745638424247628559183759961917559221802744974210660225254038703933283358616688705507664883640039598200262191196590673968045982107981321830355468464747051353203171743260324991209046258356731393689772286381260135035362004772027510712661614257526428222957655572381141062975984930795418529579980027473595327766601936920161118411727822062782330961025806490298728859246630915004331107739966493371798628970748370540004599015638139768856070906246249698044853964011398539369822339793752520623231252882204328880550354000220101033959406628956039209547956034830016557951617554181997832279903284502509873680641648766873335582504538174802424481875864587559692471383617061983537628777480110084272147114389337616854723221864729345741581338385907783767127871907299325543465208488051471829966793372743550150516725538832989106999950035611495295317365426580924304414691953110810133122042150955220639256222569927136566476844777187500492157445449989443657777808476517913481904780013584476202500896856199743742872112660111723182305920136449627875426842109130148701052078749981258584783546650201452287022986856014585305601550957645600834720643722949257909843921297436087876340442529090018083556047081471893024682873575249058152273249608995724758842546070054307480446782560813377362601521341428419431995343117336530496047482797353989514329640588280931467105714733807564296660757801481537106962696817236213281321243179109553542106292355403137825300543052992382166427531926326466602465911337540834923980917802557406239771671659527991979339910066071919701228842684652292440730301968047458514008376991394359240145111721679696339224089843850419966676079319878413289834675822379139974647843698829881737772351821345789161270472157453560221947414184988705088295807319889546182669074512541813344047505899971347804005836543494877851496490413835017960874009261292690348762128477893398044171761597697622089151471794789095732672951549918336660612097825239963970812485518503215900601566955314285875162304380952627770073019163960359851534726718127787746094196175310790593939954950224172851609921339117011442197623475874358482201375935936580686377957506144736790861568179372762034644719950936028006651025645438466409279140481194532023354729443944705358976827891407852965974502832854983863253791766571459892071986193699863572302789762187980250987112732173272648777938603840648952263621625201055302372348778655557891153619401931230961264156499342724995755012525816646707662321393003101457189593290027034277413966031275779226613621488705969290036654497047989976867586956290066756136693142223734065569821388936036459063268054617776983540079732745030699037696566626075879042462501453942272448268784230529242498825158411894766617214244947457160779200789370135710229300062258220525085667132030133032429443508832946388095109851972697134524335617961623135128839718990937596743149371380345143095897090108887665962350606782194445417711740464748388655854935249375336621806024721740677095678090651785512464403183176904523886199881992037350856551620892936151658648419610323393741622086791057131911210577045967476301262550763799465872947627656741081720784085899913579940462473276292517431125655168491351125735218854485508660315778936438528696681884859043298722945276839844973493755009986416772534798655308514765772281923976083014153956061412898501476257497759358114865379865486689411930524093558692685726836898376977211520967954850146457355735478499858423854523407723822932655655293657024468597701384426487068982176869801906253900133709330171000455257497482895765272867740520604541474675272214127961360619388189689612620710520458012634840296928024226028461103718967153531107130070748709425084518617482497746732824955260530016353089492981690206351979126315393328894708138695264247126557031443801940644138408712659643971954196708211413433602912040579922783920557440028039416376118758888069799549484936905499938340659797432249543042928126944256530415442659985499351066519863056018652805102623755676037038165096677218056817264807165608030761095876893376494022957089545849429206168868655107857908662245887784516672564412327465050362650816916987178078191328243725252370588263573064283037930746764270485157412397388107326219844059037085354860026223443454825415955688769572279695993714844903531338035604439738996351081379159193915418540158750654366159071089646000425038583510614598801614232667704354509445004158901488478693720376365102086437214613085963654228546779432410645070559904429709961838575061269526715355553057249906821427730315274015365332345495291509507088465990336974341371778303559255385550420037885999717586498095959462163689015032675084384501472876378209815488116538130712503699735059619552430599158270727717404722723781001433049871598496097781773752015136628167793403457318826722304901390568561625236499387292613895351359158202220103709791706714180569836372171673429817863993289517524864523852148431884260675453748540391514594018141641210292903033628459534513038751402487415745724098448267234815072616407053051329662647460720879129820839155234068361074646995340724131439926394980186193852627052163928404298899397417176081884520914451929468991291505665192525053797159297854453833004978108645321051274607292533014164355733534357470549030037104378135462571945700081594504247108364257774039749978611944057962363983205605121008192852870011553530256526570030780594590371353187192967430104361221179475679909355151897043932012067337365341777082007864625765367403305497327879230130040773310106673588911373296426126666839274921070456864141754440014483328235691315742648218135170199621411399334738298256831783443126460468101351914297884421762152017720688076122517545443196165521645123537524574807048558153188674793810159828620587372869185030895361169669332539084322323477578695312697583552010321540890428415211158105864125744433799052926787187040464533886283374000159866389984966738520291022426794290216069150832704302084212094753667595583787795003684988402878628418750847532914168825526260663960168396211878824589971525720669227368956200687065548295575953512611559742212725375559863343003652374689109673717891418708406144896082585889586448899751144730403053571951869109738937077185429172945894458568651331144642093834397036362435831276002181169068088697429494739456324566312054537038233188982401165224920170570431069698689137599294233349314524254468460104197909090342251339892761668684949175512420280096298891353620400013866585653716667507080273972013705781006482794447685610969003595771175219969924346507286573848786228532318238253275905535304470056737248073305753395663418482135192644114906084339516131253012580206385692158810394347431033232443373077947662879033912287643119854023779794090008742494143950983513537687552467779238246123182989828918017884576883770445735911457016863989968365003016616353684624411711893017949135430432174319508296310636170960669321264632365397110080052897958036201557213712991977788727268570492196986955571489993178002867918659951245771441586653010711053141716945061982782021006943966866559513154361116931725381232557306072310250731782033481228463303713057215869798001779019527536719929243347778297133639703503250119545870670298753888625381827232551105274571208767200760599057990699136196189774203038492187765174973781426179304019620985234652380690755624123378610472911582093224762130725382694770059296913016238628881285147985353055324533666407328402693956499125172277147663720781750265870503231030993831068750040479686787467354164981823112813764451381041128714695652625431017280689487379903579175788111484477114662406027933735271242236619439159934327348085366251380580038565949551045806057387641182996943802922361042940909452835397023717396385429270063601949523802542302931314356496301546127553424909775487271533576644793530896096270851001209818183496302842812441029882215242410885753802361433428283085572825658247132173185088816847160800724560575438448317361516482003424981456955891074159782484741550025587734488601623159698903584548011096299153993287605060081298846774926187119890922151358163802496439903751472173770383242125487410589748310001191120125912926807830859954999308267941409824798440303578721958159248116282941938428017021491304585608381757122996299330342679983874242301781744006318719891716088619377835570250551960538853429925274249019357868031578944786871348384528538040179663097250537811872732134405258454691243737197186778638064089193472119239320633322523200995716249451763747465726057787293751347575487100351623060387646648799125803205094962562007252448693848157585025309378945752272096459660937044827372115444549439580189143654692347714711309001795852447917101086417077804763678584507305624515586217953932393414750706206333662465621562426314336165242304594825521591455995215898290838949254068560809983748816592705871569962177040625658745245194235599073741826696037346329548240327419725087144348383579131161355985968179850470711393857588641278516326820735410329940069732031933025033429761801639831140093366374407149232845415071753657709116875883282844484201336167290936653179834088952988681395337353678054888233219971747014360833213427356639447045130106005867311652391186103874903916619329036489337647398232534784278592827931868476140358387028455405926372297133520742042388169482820860994917755055751960339081764599118576125256761149252290578054012726845881726064696458315866028066754797499176554841243122472112705300056730995170848508148177304754985604642792978884905412392110485105133565878354424542613294613085364496167797128622462003219010949549504011818566356601856724762814065260593087782484148509618256813338788870284852381603232163711813046026215114369472673791525052719507656426628921086525508275516129063930892201284932141688918287786880240492204524812021569578528612286999494771674423762721794746188329131941750640384368370084972038478856006589458184757531469106303746625115373778145288551167231323747518701911005882934697116119786326337585718221880536702033743143842503371159890449081268470818031250707276470746390311677050711990836819128350270456648068307337457587175220755271916989130164314830700791740612379882048246880256198319154571710343528396077078198780729670948751504557871283220587521562513980089962084455580896775522233524743941744247927196456675733284938207775945812844140682090007833472740405889249788465835609702423523818612717330029302961719062285189403253228140516605156221326083900415844067212652078940690625534227638214051041724550128772368821907044356247174507329242383716335228744958037843840735881743792167671518821883825736442935144230745780369540595304766450436458598546369014665408048114918404081211649714085036240213684383324396338447917801351203016752442288829181290014286574145841622540404896339262002972093913615915081746863599283391096405272037855697802052039066794011100675896042957125254337337800604291028805786350685450979720159579093838670302884642978026339160153667767381188712337947899211588848799916124504522156423316604490752494595023950476642102742665887992433916733873705516060074912600347982653290647660254454381751280253205368211670981868790194380573414126471165346810358722959987457410233794144071757785020694472399218023046576043312111599636516029681548451368899291405806969320153100130624768712391544106414182434310348944664887067848081300275362391314583330105289208858485069047534484907848591216344912241084123971079380664869670380619062913449891946183507295240377866600823551847601845643977484253109572228890898758663189433102336797317760638128988876914249180380928626737134333820015081303428538786374811133383971111997238319261928133690029394745607697001375269157431548809571630317719295639210406445893788429622537871233246976966044277772679035842274736713973187840831820952376459363154190117194987966373923383628670175716061844049245888777974872631373227277947938691545855233261229752646321972953612069290907519921190451541573666305448204875693879272516635628983776519393464576794820623639148684145501040504540317830262322709265765239590245651459268156996595856746357266542832696618983289054134261485709210977823371500808865667623057119381596600788187723796684483716115721256708814737241843048360888304760335192136292647040426218350050494139900344959853996286109940387820204884783285866126079338563525972485049173288432870156863995839049576558587203604371928227274061025075295719243323097563301354620185542228643881017780983065735601542864248303899303180512371501645877151152185080799338069024900574691795853896773530136055690916286512915952412890709680372522861089416061962359584671613014680290225891606368662699226162448077458630732418667292842808593673847950010490735002476529651750525182099121048010034202101494134058052324872036585761358071031457808749493842259103489529576895911832881296120530741023309876931229177286083900550800490438508577854989149241748854312727011717619026967810246098714709377903371002760312486277600228953015995877547166713563976936994597741634617625227601800181097799314502163198196225902576780640377152752563791738388270087761511349211653451894750679143975919698734323064883079872084319492240065156539966156172762193750360135314569126753441055093969447417206249227579684162066423007963071896448899160918328313477909438158342605314060449488293246998790810519290442258381602428423973951145796624296428665789190467157785757802801299705635372318541183288523456591295254779931828502308455400351711936799760347012153195369941170012162187824955218460033267631748711572629248046321034686767980643419316857782373321700113447882972869467483043970477903132231986345869436358649411730866110987032291770587585245215586365222444976141714285581934569161732110538866530304400229506098478550765674821509580008401089947868656457204704832239262109474218600929637475271126107985303005615842454732923513527465847505897418493363571533874795165126317463818319794047518263481231308521161670061922389724377224082336021405647399509227284430116055727780073198636304740689996830222053425842067472026664024835854990059149492510173618295358004133788066481752777038095157953435980951501130670707851057178547828199837185893423550588475769341517964628214759821219113665200182218249531546044599504569865791048550923412363288080228399880635243076044843562633270346892913015162942554807215914717034194912170819010172417658264990586732547397633825510745976227131707193437399470592792036103757262902848736148223795895113801672529742599505297948226929965212541213586648557656607521317357496794029973618690527541976523150520461755204776170166252882130643685203403028061660326467864818919968302638268848857024678010727636357684927941978675645313101346670038975262456918230524236751794991863279937917092454939166357739416000188394905871811497416916614529491839636601259762272677100571807568126675603654529397260629287242711720850878918893197480071167866342246412933741542664822989999834862880278311517832283396254528068193695658362741857226086860968067771297398206485258545223261354276519697488825177512040508087368773322908549784569045693651247051539101420516102637208298067942442615847612450330521569182697278027196455275113114554953875001541053921432525436594950606810446963816281606761617588919896669952112096780765816305145088860124372289863587209342570961783379274447485810232676456526645819251851874728237102452983479992044258015089342765680876737758857414871260112365738196545513730670778008863680462881367486747801338662275125582734037007508942686328038515822405121430468576068748411514254335897709839723275326190916438232595108558111383904874677619916059267089881521934075916245256223760131523234851052453277691673325869266472076164120490770297926635613882421090035859831825047783019651400838511219418726938990465824275383407141914632962642067262546961650037946604416002960118266272392300391534991372303846023582191418751723657863128619189910381633977425153540460852240704182151259688113243079818093983327014154578113219077264546685140123003726610744001362746831960931446432193441338287743208657035612265802499583083295761834211480033503988284550575502133012077990006849343361773771746918327274955223834004141622415964181102878307422414854989241432777981307283065599614664370391631817959725770675392789565900097427151889504509592053537162124080552644887649256840651595539001290596765180618543039206936821019223995890064776700623285656745190152312349446556121764630631408531844277674179487665060547580193741949479240858594650421771493412872092354820010164807962409296898440997314428866895815896385937147669205476314154078355311192882983845595488875084848088159354856999726731971343224740320594667986844836481842914919610057995779447031508241530343081617230193737705781365215794419502547595620380466399175890446808250874480199144467441649771500834303410253691000123746165901277461779188537892560015106277292697225613471593361388908575051241797389725044103219555279558767368293757605560890352731133347250867062071053419552349111379091185872926478472334284146103528265727355162739033964955395043838783631614907985899608692791679951634089314081023828265098489533707813969152571003376180866273533200621330505082477816030840981390234518326385460516514553607083149731267621074056323607613766725769928300526463127065091028845383081916439127779199898480164484351593872542879033058713329488192870270582448338754287924395690723102887987590429246606042500069359346912005204917228364186652454729876696997579147051152524681937931719762258559531144188084955216902987229098230415040793491582469439803492810599875176690927454141958498628807692744640659468666220525453543878303204844890642496555556851504859411754304074420451703326654118687621281127194261714295133889951665220584759824906061732264090365505379219411982417147595697405731390333674946921987211218419397215352107506726334135012937795547254008365888944839132443247953246870354925646113695776332900981676639810454495957987515855306956860347095570341743750200965758177586177836894599587146230301487224340852877989411710095948274310886066524841612617617750849149599575348657011546669588056151399515954236330545409778087078547157183507480559843085469464541950390945238685052702185920287537639482099314940172746966645595911749454607912970838278490201510849041600325792377489650879591401910049096346210578838656920882689225168971943454973250112401589580895705753674352677542818360083607898669065807012570315163946653306905290516676312145470465725815663372931482649749850332493942127195208608732294661932898059080231424111942185298187134974064453761570528274360551034293771127740177807574734058995399321061665341381164624583346484352289195570629147315763975371276943966695614664021696746032703765640075693372265633680107637731974948973571843562525719803503371284910363828905576908189266349895968272841143288243058038812111060950068522539981177320457505433723034967171621832275049002122100013984515665178376642595294702407367208820311332273628395542632050902941065556258260395105209655521591359261842903770955879090327478997214482086160522209004877159095683525864982166045843308304318263916802781384040802613242923469438912348389972179192629153582295416327056244000216154126605166825686044439876111161858551655141781436797981304367476784149717730247852789168323221711525231713948292924934678559146108402871500791080722130355241000566120849249227874321053578323274682943575023574004300802522506395265065839271609355977970246675920104572353535229454986931170202578704154974201441348481988284967728371851260121940824038453518827065461895049389690701714387965396255091303631054948944288768242896878704558658179331436143139072728172564270551146572887535084830649535875171032116809563723362043866268236961497813281051785556589870116498515911158114326889116317136436236655922566403126960199397272664327435947229072136660850397476291793015304608598197302326670732150881999068854687942078788218862228017863707756615756260893667870526975536777088175759425341490907491801997052082371705031068374014994004911718933006213597104520418847100871966040094219798239056283794745401558290818390066620082847065099490774589490654706349530059598328340502689825660217361942180545166964799519338923338293058525252641119148550795194557131264841853157051191252299019515252259754259019518665479366566007905300344337273711662868799030991305497272261349138725178643235894258526648155626732530493573475301089633048613283826617479855139609004506736667398679801897742438633659186476641877107986878609077167897035925747913363133871623493744382865649573740500540332835674597534774842108415096889991676709028399041594327237421957849776250828678420696227846874472098144646169806877646406840807538954802722400338041218995591381963450056747712262819648724084244725781178524522411503580292257214703128957559959883127207033465476536578694732109904384530369795178097673763976937524522125627451593968445182724287694042119721791275099385521150068709548665328288541800470410570327356274844145171242964867384392067788317431479103836409022771828803608779076784910762354149308526122083323471931377053645162443922521436809577128749276912284217909599506293864488576891768819133073117657560418723676109561226734047624749024179693638946040946527515864073804742790848242609054508847482895170817797165384078472073054138490039830424309845790335316127665266283767298969814990708749708739261080648374650718413509140688652895648320035271197100389032968174881240297052324897840455243762235793747270274535036342551680547363046738727340758149703401759891102365119893926370020716579629105299030021192953830939744858329402852286275681992814998504321064170793321800826372965409591096313415792326579464058395630757668335209327164903023539198779759701787932378161646665723565528468190030521014079275684893242298332103789585153589796191954823994052614992144167771372087497990993733745057765001104546394719770962736329385070325899084298901950334847475364247502925953677805076161329897966903482959020845310895370258613134503477035774523032833126470973542246795627503658359372276437441962012311626009124408017413690013692639669469572757040822771813207366244761519717533704100364855842114148693477590691719068065924171631578672255430024150026488458731964679098288171720359478892262908838142676239036715223632835207775637976617743122932800534230425491180791929942281364480635725679402944777638723957335053691722604619366167965241027887945512642251578537400816640797693904619765728366416033189933259014683444063379969407907863563217808062381352720625097426515387968697601367248084320361974921134374155506042504881622205123533912396898143110549446542964433294829605260181857585001931448242610613480918624707206317038341959353058604353076832221345854144431631868376788563836109211546069713883803320459757344675350016027443744264270590801145393703239421378938025318614372952389439789392650968986084553787307975307648043066476477363307163836433550741588701909369498558110709661223129851255210728736350050698599138191230632903391888527727314250038569706326044756226185702191757932041365904734981309004031802727603320282773801886138497440204696887571262804941601707106674006920637019945671281241221950912249868754114986529681256044654014323855791963249825581896202423018926538701764117239673073889513117585023911525104675246436263790555384096420386266952069623833216034159181520585612491228975842246248599203040388889429091194253548361276629004861001668662013663969773090905612306520915578868138202219902114822380250179010029344190693251544897995130375136252727173605388476655214806769802640910868101881453027292871196095871561920851471033846302825647139748069451234982926078322991760890440176768622640804437968774058534784929616513905202850976536403392666995869382185431267111572166933969772002698539930252793646066271437871853336109951320125547453927300060825604832172018982287518765645571397572289453062509956371452434544575808221740979917354864859472453424302699904028385384593464698366655167288358214703672997472452214968179400542019097762841094336689804550903043490096608370149040485417994299951308806637230713191381913463106415353817247132904087204210380291113144225724609663585732326436199372405905882084249147457186289805088590317490092673688369936224841966638076688962146810346931252630119431806357646430120824101682455619971559022029415607746065496920799300989575817210481189710277581240750140575731875954810575298760881265549476136780450024317211134104816904313837358297041551054626179845760089746305799941128008801054079790235025276258228321922140828950991679588185000847684821645866033863476359140604834180071675861908637911825654705265814904879119604514862166175596842236747925864349456183261948610092475503657091873745106952480068204780893798494479935611573839607545747667006846678514901319766910741998672008103975061358962371276251908747533810379884798477119129941605814233868687004062443116291592470449107664674286515914500291846891930109296265686240113683515736230115704950845663667479909268599119199370240492534640869738028682326887553506668157436241491302957172315474585443937537920525064526291438269998356223860791572615787840883787313533244577608393244937102384714652592962571455827713967246139889305854170990881156772812380539831889355816317745153848659020831738280498193742291159667144573203003469581850775768942774389832547207746010701824010930540651464046356753628723324190891627831085540182944057715804341437154746612530881229725889346442734287209756275403703876300393037026491597374037058025038795570598524342782329207767039524166780147246459847391058062663226081624093480967158284394675869973058409024051802353150175775887732567280280159817625720054952931628552661673200470999177839326326159253872188776056597018374735116445549007205450051776491115244068828309418034959164421426161559428311692500688347095252341104192246385979265041494290650321075601581433126682130856740054968874143733619071331118426867228074703483129626761337347569321666563571303238695880325515507016091634193116234732020828809795622317743951642548801632737940987114844269224417707131389914016899864817639460976021393216285734558705244911840368371664281013220189043850364688706183295638016941401170072079133025593717639024825184963576603391163499246892330676646500932583446033405356304052231443927505057887757213058949532141716691169744317501354239963783521252617916039486072997557866436269801060416938444124008265885603364504396410022701052364713471578192443165224911095214305130644643837124003910102609388919034803514178807718011748400083589458408937230881648613535743751296385667507558895570092698836516359209680650592821454544632814202729438991436250320140905958487087468821090689214652964395963320377801863661447387652734351921859188604099186449681128807992672705688791913234732397558914334233662321422259580931071187919445164151733018541454794889586690537928252579122329944069658221758927598091237674257946847346621962692887092723288887211823054543724517629207282677072250322008190952004832068115322576145476026666463614187423905648995174784060509372470764820086584061755264283331777264479225902649786822040975167369999081104762679819371701839805211582796047538847671964691164438498770298102878927207481062263610812770906023234025388753750222812507569796268372822732194338531967679547326641130185086166209520310549643262266270127762525984970927997110390062168241161204803311015899357822778050111404423345610838489842221057360711911910546981943237104731383670180581861910784851690143812767439185440364613672413328275359707097373129575100984160170551600639641984542963123850666784919316796051440075856327410630249915864923770962764184953871416748163317512198871340278529835023772417519120852642794357772091372016813713774690980778653185699407084176408905059239312455968447061306704592280787798792304617087030336480579896424187847550384368356227945081449166472944096441957789661356414199239664362464107300925339913472490124674658068384870968483192919510305074640744409914233885072730119462874583910305239237107317977918081322662950514796585527226676432923384621773204418858084217412917370287592940167007326525915560316326271271105695837184530437245323000522267173215300624130436838334355438778905153868656730571324713041646858688237849476329244514829625431358965651631952063601874820672649642798954729744026559214328892374284845418347328869936082950816345654053183397694254988869789231485711967243916046719047624937045410095746539911130399072135717662106216362221317805650702823491070437544274814618604191835483411221381037969899619298728874195789813106632431208278687902408493006010473754257753503493844061327398451604026404256702561199894405658475670313638650128634132188393419946810125610336361049280548972708366008170492240208609092724138366871793244541920658447335113420578963619141355828413718852984956164753854211245447176127828704357104453462364021883203196350803226222011962632011674732690831701441639796608306681440710681459900786669618153256124814159941120168604749182263137345701343078768530351071651163265456369512900639628450724903422434147399236222553482304081803207458831242752920023427754292120125334135678430928706480275779787866119114201745185656970027623284315332772980769146183292860980354370642045158212189124948969045156118571842309753484230144708363419312510946053902947936059765801623644290854482464502814266590621285626522171578326169839648348672466665484687105538148018247588933300001765402821291715639220314582538704580904486298757828839629139568212035539501236955332589473227009426010593807858637133834934800992542450331988455686102081400139481964499053602760685348381162485704688129073960476406874674447262339016915327909315329137513689499079431216939367896146952222281025598795815973171574004708352030004888660065777889494430525830224449862290930409960213176319490116103291487521659400009026242181487380553190930138663116480588851324831827370015036327824385461016062236165894664774834705468336219078279225522076214272991541603581432598598815753009665906289764768855257902294819248922846683772643799644217881792872899390115693477597109068348919638351977594337121133876337071831332415200327930704460366594271243150095546875130465534954937946178642444057629864148045651652493702888045783004401674527076665070933217563782022428563014577520336599935747717278130109335887456565717349621307095696827722215851832154192436157712293919650196275805238806316506736160013420601864663760297208646250084350521807727495066170585534355605168896871450674510855583911846121558039283006332964618902089879540028720558425751526692343695025322638540443244632205817199528153933047071109518803545642144344652158306409147237742985895639271380566699287935635685262323006123266712036696273778709384720051638376295942120768466325994057349559004103871399834326157454158896931447563825612325736153680945488092696128837135789343358910598089352030586870114054916388522472118568753540863255378913134405989962194989590501143972622584502401880663115427091196521858345898319702434166375674625094900147102723179873971626779433798344522464005258100442342782640190440315531553159638981785521282719092419962171538126648824220286067436647899780543274452488549433857101711840565559852787732797409415300657877052708580371672608911470805959976028285264928214886712988835314157106247054112580150736783228271050590732155228788558810424618803142777430185865452669337331704428473777409061687062760239481843685773194292972243179506661591926279608874250309600740276299056232705550867268980241524728610202465850839548735777167413178178244215204196792036512977947840555937019053922984008556086751343858172707469671710866298776145087366171891486119659642735310559882736396476529760594258334259029055831234976303469283722619958777407479354169668155371159183085029867423167037034153764299213941443701614440629572600040582794430443200568116768822684030108745880657344603167308561412352830161333725249897822442980144326595376322916461486364147271436127986285174983281367546658314605512397500483885656939339731425129125522853702802220734361062418801641985953285972449333167691382251262863929414075511272262024669252396118575587798284300109797791902508376344227279456856262185809561895061901260026979585754373631806863929025948682044407124869348249816993008643104304150764085016777414216040567773869783110683515219555325347255421437039534514978313082752546599849499447593486915873851311525165160440107781126278129522378710314240134776697357657819614236207252320686300956290978932739170613814792538097280948325509181251060848715607925870486848445912540543208258212712619721868851016481098768708439157375607721450146871583773852834812836777988886060142087517268033806374030221507189741229753553922851870188265629868862782180642156132017194621868628581782693545744907008051032313261138318333267784141828017930924571314474189416334699523229345267718696697910371761214646674956324780995386565022027168900531609073286442491676419074034984666953782299493687084351201897684186103396074675791642663243882247609522712672253986268312823628821015316551684619243444599951647068425451718571250897286158394163945980010042971051021232943878230135990518362088366273790877511132316278416575030968140762150542318856102590634357719733197232930636736771085676549949391254063068935461541630307867503841741794707137451920835414474304528935971371202200965710779113013205792992579557081618780739231730960503990146903598780167930802107675098202192295253757102773080676290421475839462067484791536725051057566713003621437329509557125853331014160645335495343448488668422934346071622218355177593739534260046418559929332374159338257907667835047627158584310954379777491943428544294796649973394871870400634887487535004871841664768608129528435913168271702091544577109520189815501335181067454919716891317047862212994496694520300754042847145609082709022000165227096976796271912376239377799567176975883968238812558745381219752888630589961511333737168116725815563972890421877350800765980796495452004477181575174747714383684433006312777841417812343560408684129057818230454614177934600605086131839381958417013467776030698560582644625823212908685396980197996537508018416201639330316335225462303958462423092876078203010273375590819600901513709788669227542178955944736232890335194213477878856022428061398540108262160097449629654124048040778833610271240050208712693394247372941132351982272137647059277693968385973757783754298717369034495673587265390476254030260558677877661833736443329370394547211646371584663260005473309815434081732762730061366750196525090725391447810545282505860698364006975762599809071067122745463929132522947252996269730321610871153894684236864820431868886556023915584751836086372613921564579664250934828091150876901984822185871844498655751133140873095633110194256681087290163276307678893496708072265738173345579064582719180576641583608870550034875927895777969233383264654897648278394625888128862117253229153654963920842190708207800531942136980120758136289996388312852209454224908334341685754598473380681332252060126740019753487210208142170442573698769163773578993417764305348309576952097827736524561798530519024892352978002167955556578580367705444033236471023251124607571210322572813163191576502208260109909123363023532628651797218401698104484660687510803465380553675181292281989279946229785576721704927961184597845191444974419912964205605736294316842580672271140243296767613443898494296937431471454204943533323607844120944776666612413576028313495343892781921053112202227210262520311541691531469690113413862763850729024135123638941949802469907616414594998411555597907462681700643937356876623777052952779531176318915514574981089249035016602703059769674552473064268126546095058998833538177022640485347305370675930096910269118040883227795889150462361018692636308975023453241077061319691083228707201193723060029546380790241303825516338764079777565541196494925623933794119599011917906494219431016255768618770647805086834017833975897521692244358193037976407092836084291486826931093585938376614632896660879361727162057836393496091096700298789462566923238458114645946905118345289923640189513336941912314824937638069107176063782798301295836431427556248887160087198405994439904471172309394426915783490453522419096762306543870634687664734725673091933304234238945657689175265399504587687757088482713051561852866790067716461105888167192911143546687107151929552609888967506152125355427983596613224876172861186073441128607668494940964898772108459757129333319711516975571382329269250326325959161653837030132614673168479876814761291702071887014171065010995765070077747067806264651919916228190206267902262163124016552605830431583182708781148515444133431264728310045301548068523582526217242779207681214759194057413278253982372543879629287819048354738475197821255744715129209781013958314035437933293689455165455875305947168239829294821198548923423164333003251051241978706866690804297768781752094070343961375193729747960629278292387045902945373782321706671348190588302006379582303531494880694260539485950842162866233971699497398453722893567664456968799952843897672429851669721618795524366214931849951895670691328248396049384055969032540003893366473859911086744562837139215457109106268319819753574123802617303819759646245761176340040296654452196605903796544271311873942012956209861287964800361356892731463870983599121447964409938571460875825697171586324951885576533114078559126935706812221077305450642483542854619945144269989530714891868823424094283140280599433363976620689066300591202286577280493341340636421821875945693944815449727824382548264240308557148855011818119986673090957172840289826691368343430030577881961027081280156604112483598846351696532093849079738755179670641786262974819035759078545104568250205943665600996559078353102505072238461147223400332885195873184276536973081190524011222098558805523739319187078430026635650785697102638868606925376674664786941390914184812057364426630111554621301163952814016534735649783632225948945463944394606006067825124030354396471924283280243365779351791309514183403378169431062845647374543232891224764802448745207697974927566193844133376635775033022294908287390158198402790764603294509250404557880047225972603106282824852994898803747997711587400104427712730485269385015038588505647313788901282651422093245595234839060365572964129522579596666559320567319716448565706118559781892291329999688465262611276142109574432110100565058358210776990721652645756700338253582836280487330057169578787746305604354676389920140657257654393108019546600431939973241531639408631060420404780330299380438657059766854100123504880555715681021064376649607817736236037165334066728037358453015826501483825266547715125645969525713498584253867025195305370708270643745924207711105699447900714616276675976370757188983121735053003176676933901324956520665092344715705958238662422988738903326844569907337343984279886272709412889319621543547137536587469506995780810919518713893948436917311018391840544615959890267501204285096294423270372427086073000526492248786120282058464943742759972845186700571042611271278703761994041124469812408074250394359072534638093345372982247908687249489648335561647658636414507783616686015884946586168523149758982166660545525347098795394580226632916065963502704902298686145415181926659756507513527361313407380530320802668306654050989526427190309100160792888636904484495945478916587272185468273840352301071830343253380987320985358941956813380863881465220156350264157079568403323421985508707226623148078323030886305865401480765082574880725474546408452257800944321569302376538293653207799381885137653667355187350737268716825943027497897676402454609508527749019829389163737827069940664678906451019454389206917107091398790117988332294082683409819607513550950509002917696543986662480236673586036560502008609077949158787175111670418889967860680493219927913155798000829788299554908762419018004046415465794898004358662858415752913717837834667309248410629808982242228949838734115194152880578627747753924734147524392842481771895836796414379217059301203893997621885405772697546891539554860457386536069505782864280034895374082661821802193627699201568980122519021773516445368993122195399757159685842795061869371258496422444417470034847224763979149957163097472363611672141412844622752984744217220135308248503647489058913358188184921694958801284452640660247733527987523275187924262122592673611683324665843922871212163456184746792311394206269260666655707936560495231470020707944310420014865542624551191499525631517151836324442582125134609153076677691214955715646806758346805222153682664516759911948854940570549180951641840712553038976757451753082364013595688692584592044055750856247286916103794456957196648284564296895089160211031909202436723569812503787907779423925355107753992497840237747816953054446413332327839159432689939391714843875755366655026480201220080975896511089020989012805207467290403645422591810383028561302433861514575537729689327266600044758199831091710664999351207103144192338621144616025203090157796857415903231996389630250642519921706069504574269292136821185316293749248499590249591151881129390272298915303049999751906029196391160647552400313737954317058598762822567724542924874633492957144958799251671018770946225781459876982811637068746665350687842749780825765431814591071133139050075780285531571206049915649748660507379667987283243474561702432381472757322134387939779933787827227569343606375120106764798396654438514238145011642843768896893540737582316355093352819437600844419102262045962790735999871384640247627278715163818165912574120657487005087886794277163047148189847286770322273136631862665533379944335598972599348217073150842819504435885634034420864144194403216986988156228407929502659106648436199854181812554908622582411596153457553402752492297219883970275889092076553932903130150692032785528585211915256045754063991729826987633161437600451853178740368549921388806764949106325267344747606508805674856685710449697279201751501275121523326776287033828131297034658874869024147161540563285667833685510840965974611926353305089264690188260166374202274209853339388474484159049284279891246140525291889666951405412897114138446159343189976628285973509045571164286260550654501418812838215584065231755082605574963511369771768417643913203377374210186595422711024067950706305707077732807241646756777698104094920271286596821956558929616356853883669853379384788773054231416050519128138732588018745181307634534166997367235649726920534392308357762635434716741913159307925776004878635221473676777351643158438640362288526927610032802620072575498300963053404301141272002979093710868977237159792417178437100134136139607446891640005250295925010067727483097880344142416149487864495728933441069953396641970959660400153475035400428372516856676188090947062884324320556279206701002132614668216503768077637031740560484126584686024213356868614294765554294225134477713644897565524222191934447010139069491596196006040164174897761909430323698496728688403716266017197677143172761778829658620166098830310053375854151047651707094358469886927295599939263560404416570479895891301224252566571601942852627231170607675655963301382160628952160435552248447125765065899716592468834131266821624990240093270867864789697149551686462599535818634580711018343755888534137145738867040473786914777616296371228714310375785612940229095041373622085003061704732224229456649924570127265845730597843028429420389675285411985192615263659048625522614004406945973091396849425559524471074953369722631238007223213460411353519000742473926869701063123936963770035101735435775043496115360354028863416959769828978448790795788164728977642751879137922077769070667943987239252267299217562123769283612803324360975764450181993623827751617470292678496466563142601786090456220006871750644314285045872724737916132712116085266258760722367490337577491939662250851716751662210683122643156745040521739924183476308243964449055084163409198636800688387231793210825783152159822166297183627635165188531860405378902678064928757004833641506914274809733942664884376384547061382599335479131619193206194354510947435345192709353351991292986188335787818553802431770902123829491102668164801090008020910121629427007709544876493737421390948329984654254631979051563374928786998846299541664816513039583553008899663960720112318608796273375630393102635286174462174989224355699251874738713148084673359351907247831511911424329164312752608374245267659403231679714206185482330773908671130040525962437338663811626689459852050178501959805588012072877903319503480733362273493770720494101092770013629791598737776192423006365340320296103217486371734964963349524007747190365735903330082637171375993640619095859507657407445757637580705699840802081175489422859757737754898096900326792159134040722263835441782199579706120468149046327025118104288792033524029065348101352717301757516466937980305604721968749448337191030172121171237238181524339147476241806727140902432900567951837584377883596597242975433231022449694965242578863840768312082159048649678574249510572643610697902495016861142232561832110382615067100432171993343421714115701289796897631463935412863814007357708540955451251678683036566987406001125117776303783497739427021044666353055072021031172240945902831113572516748869076026530582333266529923178792634248303354427861359893949563962736004976776564967469970191754224626970273819038866857869336813797997386623868079780949497719588675510463336165571065031071691236879086206647712277159073806231385115740188391382817785839515145589001356440723450859387370249795320093809381877871039890860124213277076273472423573481825680894065368975725233265064215984134688027635440599053941553795529240780445995006027861179900929540666106773783541156124471478524474692000733919543348296409992342542169644565032687064392818275833273776351260200600886294035719326650587506661874054252095353799317277923046144526315480307410315952054504993970247742724960388667091000142453238830101811782655132124174747027037002036008973387222470547038778656247641409710391607483693681086574412448812349517089419353174614717431088879346190913771485530801959620353107313326197312718002816961476279051316576606215104995965089053465322316826833326054953622188346159944964841813809810650403122634925826880543876479681361754473062876499231053122442111837750079766993485002062225643717234348702738973589262712648115877974644752516054678179071636164409135827693089143733032918237976703714016551252884264918837650923165373737851108865206828271231132571235705136752711236341536972692731796579245761571084022870763279332193609140946208074792610098352883267190072265675954591515857817513200390458397513592655048632266179000839770285168540140662126064965682730876167511447941813502689453345995951991421351173956009963765012985040328393760209764594563598722601957144709509165130510602621347428946543940013252472904782504968688781218744753731779794045381703893636987455958290517321195689784819362704465667333988866630317267496935046695662723206590206662689267869166546995423455713469713866099571307776239872210478986786883997956494907155721311150492440658356219807782464691277810405016176011198663933114403455847580217206178278167830187112210489708731018504632203726685964563895414616318466077541753159105945492851899289137173285441738913001829804404265461594127112810367615628156982319115700179820863334455252203219478261321726049915442264383952420769209853510767055405589366305121108035274605547719041792132347213162532088354540331203542197978692869762366386168213067469007521618408827325143704546037568153791274715164852953633193994294019747249784900494360590795485539333220783246042384714261353992311524748286052829013277125881692292418395264983499423740864604620825039824038472694711226790654447402146699142680873393302086752732008226151957055605948365804307268864938033881598106894316368255248485932709315078144388847028530131240844516547106336164422838781801154979756163609592729578700811066942263517204414748732464993834115807536071710804228830318508640492935951583449071014459173427298594898822140561390677653122801684879231073060146466191768919522097234722589329435963363341689334654085830523966006396127245262108864604657472562319156805969813674803970815082464061086025662654830322104975592160499755899857288776095823029547718381461277386066502768821300204879101276603969760628081742945911283129607003713747946298022758991588524010787844367252977867969539054271395241704022537287255916848197396268813392587720682726477004277694580523414055167888861933566615551721011107155658154873982028724276661561514381827426263412788106965701076835298477311724484438985979519632533496905118944373851090790218154465407301712629907834169234376005441162945947708300771688941042488736876608112445647010766630909753066195508486914237071133959772660884688184532780885723771635226261020222239351448884052579250893135144415110920336038613732922012886798932791065828824274892758285066543241669381952518549717064847955195758329292075977852308344146067526780406016045208613499871893505941953186617975563849291525482170089117572908964635689450470062739512411931498854415748038118023030903138797423746461904162154840507565520514376218442969428550913441362890574020544775259400859977393641707745813112397379812408645801842845068020100174277277870309571354093717811364413487280885829162572911624742640864716639577955539381593495892078814373210365902562926658266776940465156665789411943813048399545350379072901827258305684802375398865578043557993198809663969440675739912879459282684822899005176195407112076719255636445441853624895704522777755320290406778657621801957899844891573718948849337841642595698526065244154718893272583815468641304240261770576740574264643803167212155175124420052194595756830110178611470289617805534912367773069719450762881248542565431126905420784974753552862369634818310705099344729902675499930161081577112945142205530024428588328289908910714303372554122090152492136615219000779689949011274168343360240494786219469225220648341230608798895754227317358996708101622316890062894219408595970981363070677459922014950462580947774560005645526695535771426297354037625712902858681234705904729531764603938701599990071243319862950829344245143690282332481354057352381074458488085354416910824531735173256432303545809044016703874055148432240596889863069998732158615472119512706567722972942575005610621220373847956097181141399231054247018331395135857164386560276056773352558166990796366245526215994944195841863123468338503822452933613004198978739504647700011273003566793328985478063793066048966137380141537516841575051674613192951684178443248673611726225401711058034452663264864026436329461830896636503504606487080396423725757736472122923996125089715413527702755370346864232291236273527703155089966716925627229539404552959674471039518554016205189922298107257608333351931121446466692074709492928832953205672420101255543018350136522618531659214752156749717800003178262306672364577056080253105248634836902614970521381558324863309740832149612632529789527629631347069495040610668807533719670218240966919499879422993076427449926892355269727421861678633139890827989418388666760964732883362177371749239305701480557466601288578312596892530901971001140098826079059177289959406109798137632874562366572460272400401127564138361486887971232556839524226684773372344391544538492711104360881494010475685808101506035437983386213411841262280834538851966872937832778833353434937121374366045860634933061685446272347504322475561154691970151044913489586002385056634502200549810274303533426367676766265874497273078533246259720292420231728360025910019633499261807899969088632994918758909747797407194827968972280732643814443311165061232225271154460477662786245919242517097372774818467764930599865321668587187842772305093830912818158875463444875142810835546513207394474724879736120820046638260794536151455140907066002460728798478339316344969440031232561056317389399323391594110593688239967997197537003107200722927993197672791676376328538639765835971609091907219491255824364510961793217235109138704279261516348393713508441810300663843004926962679492989637665099533266950756554764230071814701033335304452096482745120067637651333251241557525178052649227629577725942883042482482226322103411055606086638894999568132723448436392621570725011656917357321105901307053757398815855595297106545015876966993377182282107838484652255116073490937887620677018747790295407959413001679124082963052551067136815440940434547772769292981424295572002958581726338666262469876745868055597597045612553280944880662648000233696584839572035416655429782744274755127118584216352928751213388285500040800784636712185460898711266577007411497012611440718259840697791390010328068698018537446431954117176845836277282062611617737203537075575526057797280114270731616076500397016429330974219138104046618794227671272023139759241709040953364133209506841250302278106278698791383276763230357523368842238278948855054924339089959676652237437654480413533163907472725753540344632238125149027052286182226864341329579680270046704110162753311408912780285789123774670124539435233377879971733553025530837975697521151867570834710954549034587791130605694172491564215441134316827272842061706205766790569510480452948778878984261415751546777612360544131799214146701306409434957625056346012029014335162389412553762272713479772879657345799995572065174640434978695143740312674061629779536289681404925713397195132530309137351663413468776637527048821796794104479085401550571777176051205692258785914209756875573409837430204326975561968956696644587524680478765301389502626507592002499202413173547020916592852290878024805607148219252926005121468834302821123365657157468306583697699879036637039647549368793806995976903035012453809869012879775604798298692716974343272618642146786749648334939091072390641345442703181747439597980301141688163042976067558780132158227075578479599919102775955101974477293911526014728936423725387814837824990897280136896000458458408710867312084546555599286049543591480573546038163393114595021354325576751633625493833253463717566785963233792023750330930393020801881162622625948848895134166719143432386424161043461504084560254156742671839999330113410470292461014437780757561444319380504618480660395768364244856716280971853607794483640893084276935382110653286149657760798730523803205474832881027582651110885002150620097245530606614284835063248494126429394136222215759052968815935186640140291900607977182050004112273941897875376210724991789007692779037666547039834456920525232568735325674915784224486179684240451383508975673544595998217199364872667008351275990269850721209914497916302105503560639266802819717752595923912125796549894991350272401737289366565252831985625315827922086735274788578115247859839324223050708606999096735554062216779207644625255395847769720849161137154518096879958133939991366265800905248148600184204311670299264252754733236524033250744807665180327930392144904349911232860975932492624507524048922976560180622988452151011835227913088617552799368668197613376125958848093775996305766097924020397157991534586759980378211409541039860740873609020106745798381201136463757218194976415884719852409502876727690615394142413437380638375572986101120610397912820699628628069030024049877773332614026208702560207325873065201666763804189834067911992591058992203664104588355888531967523533284544220895867557722775104569997124425301458551665128665619336891359062708633974799455854415660002574478983695176989338012886727637653266618860717206703716476921994430417801487875576458690734085636174019099016653700922039710647698071745611767412429836562461185937455668217869301919448030368013465268979754601649981898701267076855556053969858232004253190829332666663733402704845151940618901399297012608386231834397473220325068693383583497453552869240131031281448890859736892363189613993255490858664042886084737797205652319260524926552468038395735608368687162233980306772259688421836382256297136667457254976044155874955038536701101859870105818211291329831618541464921333988955454081993844481069220401552948485269355902797324063863339565658827809516172158146846820026258271080944890638653977093586594428669386296081191557244776930918295210438687402637139157725921311736927116955457827052259601210883739582661045571668030730932940799713693178853613520487098982404296824802683181910370021364185936308132317041375167202792667357601450731753445637514671735659313374719337158666792133964538103348365406385634162668422340543603253666730670852062342396309564589363710763866773984246017279335894317848753429551740736302438679438223154349309623749747477437734960684132070851328018287501772886235266812542189534266415173168463809090426801953316484616388712155905800743096017747552625521637541415182130624623246662123075059840679467785675737301697973784726664122961213503054371343050825569598205560677375119038482054418755017308786314377207006954346743256950455740159576517790468728863665411996793258651497860459819132043220729367124424471240779432962120209593196885213557486030452942948165805780720239637737202511099072852447343837851482313587384070424598739263953937374994836635375915939042157322610488133736235884506187662989112335140342937632488082749278229974917385161834070018132849020369980588204664315857893484865939130893407607091936315948800608528024648656831319057790645504475698498332993525017145458065055479479147942366414355170510492678177351262205804232958796693259887144123202105016713085422199175812238630010071459278296701166440144023911958836038081811838286508054727750672182364420564826304222779764283285070013769247998214058440035377863390045970410995535568554138739290982519953236083997825669361146897779306735409024809041324493687925331112227222669274945197436407328649752925412021960379145967688928444435853962896978611411436671548587945701626928732592641486308343969876265175694737475769789751712950830076935022847825688979713383148942039096208654864635865603609094592737232837793314375732854708362767465766738294006784179587023468614782968598146894310785659639192877089363653235891697358875144993905455225312171295709189616500516966478189050925502204874463636349963167449680805997725923399617848422021933811853195715403608196675078582561580145596421237476142244220633934773934396901425920333887071405486658622331434894860051090876885986853540198344426306623774742946549459817674976017416582389312662525438126870232765065243389172329820375140141857675024827441065111075372043246070570312048804550192688783003172106621217378888570910207741124676734837519570445955574333169567811204763523350442032350842231336356710100854394943120601553914323016654383382766450031919980481583942163784487608289021420076474397503206267754107248493061122553100077049042748617074304032553563182414922954923491715071275157192807987519917376382660405414133819874755669856432005897094624581874809870046312177032640104540136278740520098472755491629461133046842517175923534666410249969087634473140338835283137990857287430884228649440908268989672583895472032078207650107077742611934964001287703213289851646303624373209283684715808382298372720493130670564850312647156328169531579892280349951147997081396762955875820268899500957317976967542122613009083666647088909805523167669971051282382873147177345935630636924288755740317364476496721474533447989897428300167361865751453141478318993951721778475481890709903994251856065728652401509033098910377256593830981313386797330511011341938457626444003230126808301217408829491011573318177967754990569635286089228560079606275257293220379225012644658735159682300576593479009169888021896888474212534748704638947616234853586557626871388620589879890539225373305899955569717799712750112733715497520599439889091547694315026681137157861680014343302658829258416476581845472313498961056684725469691741369461416171550758161013092995322490935250151094568420519801929996940672161853391672111413211883960160913290092346820466930690850809147954438335000221224120809370862662711541547440625237420826510838176830955144321188648361143260786980139615555486336047335479329043121654253888963237080663182618050904254034402481469164220159375267095451085320080228217527046832146746707406638636671860710081498177176382455481806035581771732390237823271100518553674555644098951821394223712928485075630338111307034079032654167492922393654756610654634805549408689903823466405995363818382368706361216185402668422553255004645994999205113482079749037082313617575727215579024044763816909697234077888879554332537854284766669280389017469518985456437127933586304574253381293358898735499756671758698249644720333404108535212517919262122282011462599728716089026098404104668427999741277082783819157434980022520196447371096267052038767982847896649142737133892657752895883153558827454223155472247102942189492693658210496097810440161304369675239344769245291220384887096068296206199737436280675138415318906222037742709784515686208073004888823175583875144431640197903000251389216773390461695218623929854461503979962780188211483406078928451876627959214387570774350599675986589743352869521245148712098639052004164421957252825388826315696412378388104164502657655926065931779862527977909363140423456702700354068195991622045807269905887132010295650363742316787287773508420555342598409021690289736914833975331351842956137281965402678765115834452159719254269184826751442656373587983308010134571994345611071324960456756982001000221450976291268599220736001686914592334207068490665644068714386686280770763076966746620564153015245299073688070676253533070663240075674805535521433588111668698017056266497352131011535716705287317862434171195357236955413486700875205717276815053117167278365863177426896005840643390583776050516413478877674018301415568821315515916789132204030319870812291114430100520824872439127809466639507984396953273021834873273359533225356680668057519160316937717315156649389185159669490374369359593344306328641570801644199794107958069633105593113744974931561899859090549243164030120185730329936233308402008079574317901028315524465014453096367938878490122220422498324055812121138604066076090062784209616940055259933154845415314169210982271754615282608807556928580294445010802009482018927770214935599118198656027993499382719863737262792301285592502946018781883756786442811547070903831808060124504968144887372867135175818922029758667343705229918431376534568696099073586726317732803480440557253082646791870017196297172530512304492640334574850205408012155358522947158014607044675814274620337860259818079306869241201846541535268445626368218368647259681602709739029999921184770539156983786488042357616629539517235617957605847450506597138818373588616667300951543179838934319579287630935517813225219698054540752599849104790738152389720273087843856621028708950159555673059983123089833491205261037166144193099804882932645606519715663279063001204605655063981556212870098992463851206965716866309409773445607376082338758095177511651626607075710343770125357147395472056910689610652988933496294762537356586085358461997046850827090873782473634636017087027509165539207070695269729987508297010610085209298565645848940284261755958097930852358594955147525822204355062536292479860167600452667100076260912582314795660208870883203903217739064320041663489616663605834906808346326939268450850611161079629572971265376505477073615077692873001643774084844103231449092633641987503289076775547504353405450759029106461445694595923048175164994384652886353357119097840419413522177931854509632120269661414794859197142419182166720880808897549544670308420338007392272738852326587851689938245837127712611264114545981794032960031342767242408438964525160640960239596817365871613844193007340740487004031581246155012807677679795738928992362245951890325925169603325113716991098912672618355736499580852493924245888440848017301973582507562575922539514609761205865027250462456522819062922645715045532732727245079963986760780271753608357652926967311442408551798051072281099315761588765530569756068448685307753292175554844902118199795157350559002992763843929201363961591065796406600822927117987735115381922174348859685605004687920895861872858540335495279626500319152693799788781498812559755465407502261963154493629441873674695421242321582765477630511378454693505141126437608962316445311619919102031997955882831099965054223789479762194947323446665902950209491116306310080539980064011547054595274956540022267513689229798835914291117476777645834837408526502166669787903573051520016030770446843670315183503311415810555100395132717650100826140129256140940821452105343747268129788588037094083260508220668517809367513319642616892854213779182704503583134135447999671090431845676897146471302119223582248790390320947967938710472425932210774628908670206502216720519689393016112347485685949774054941769047308258373122653144167360534817025469931286447455528490873084631392245491449249226538501047287127242042167979913703917215146078864258144284136455954743516938087008043563517751498479264727962848633650530812539722070485289854356271923233372714052155888675594597492584965856111076528206513714151084738797121617193577192427116890279633305727535115955254939279895105381381752875170076225414697126606352504642939354033419442364853334915151038602407764576340383212678895923153249911017701754468443503435569384856014710185563044313866545781328713089959977561323386595526282377855982893456821762024078609000322599254820815697210184707808713846876740362550862999648466011803986021937775769586672401061490871818711409551230352275772634418207630741428772505629931419397177498378629600660584406055913707948126038349089858210042569090803381428155485768819598682086940054056907058260101744554815559503001732980189127194331415013858843686251790919396446691978012501315575112444500843917371855214806908875164876460926676743005148728017311882098605044050850606636125284562712629088147673374551233479410223747834666926309644666346448435116380525256351495946771135785824627529326435867574747564564852600200714016536903755179518335618404735457477879567302268089132515894788926600058136842482973496624915936325210194471103262243947454228829467255006607841602976615059509625094929901722007022780595395731113914912837781853939673492138665329672592978476144192495367999727684598462997399038987795305460952539141393185443453116712543387129936550078691057905559053937162337431307078287762485471107987263449657221616392141023175430831841158787414696568309403189969827082904663260618540186129349133676762422214458085513505539966827481076307655220764278850209769758045492686731657049372932863204526503952134081098559648421783123077149972267523802751306567154734924159071722075423672509275789847223124602584847867548749659595878529544199037935205931261069149843018821305818615151565561983894757522598440629221484963578249895058436050190037273658726167599906217525460947089088130720453628146692163488620107026937361950984919934626872933780048802056130456383937479720466624354606317064221812938802381974005860240221672137079715806005402654576364845137256012702077293821376937084155301413336136270399003154584872344515106152674469144518194220977537060769464476553458379154223494726338986165895145761632221039289292563894767537485665731127400008297145803745905647141571373414520051596560352385206485823338633815836616209402455867085047194967336608697235267566111620925915626962448071762104787034660466340932611489336426864558295256544538893348798141650252706834972062123307132292032418052608734511791037857820108847437975395727841524939117513535864455172124633811686608461749951164069935352657388578755764154433592553038264732917295067540546590647233001823641372532395821781026208139259534096075950863909874655607754706788773535156175429468360757899706288890128653536417708387064580331316092703909867116867387698915650994926739740497309404827024703012767855728585727518456914416675333693563043565240702490856551085081259346330752201110869354976159904868943590279385742099869598707106987215735229826969742621668298100623987334689901626473100993165119705717006075551344878638803185369146475291536081541164836389666803624441233726331171772524924483436515226162881236020464331080435929333431244033329781997117368108499257120135000669463127805218542801754380050937119440713770304005955310651493493177057049000515191367221614924077043169958105470433195161588026917481538087943164100949721587570407272563806403528099872364382836835115787424542072659042979886702799367044062630727978486660432796681109158414035073620350501543857618532580424436839494847024776159699865364636318063087657312069302772685726044665735850573833724748894385065899123110628446724083012605248209858382939599647911996428438757456678148563660595199110238087036798104736391603449936234155058959706796653264958477625058882500231996889711464460094194563083024246395572546965006197002785489081550254572863679568192788739822233460555330562460639090393649077858577132484731147951115749553087672866371490716056616041649750165110227071404863949322552710107139987845420120153576655206766555405984189386491442911868110596378278214105662573539841923451856831749959097748333313392409918520495504884954830305895214933099298300009036904789009078175804767639717671585206737276052805071116113104797690554512198580933245973667835131804315105454374866763831075457600166335731469320527945754749774113088727311132805263488585154530319631350419188900385724179231656059516143260760173998146882465782096411433085008901873006639554938375858872133088936534211400884004033983798093470511821707662910718102632222251579177888279003347995363577410957676151304566531090959213660175274859886106588048865939479575484543353459743527198886390016497442334449727121412340855200978983965804781623944140400481275803527495498693975248631095571614757803807059195165801867228857322392238064735608350435208227795247669510067187079210242480350593326782542244331307500354543190115515248548662585507387667872533039415230272868747331825017011416882755724998456842777951758163389713127767248774925188631337463385115803199779992753798737060564306940688650415175176407409400012554684200292137030326286938782979714962865625703825683864683365619270354680210904263245256848759761509920383397887171652830535809586877587494127611217959912916286698280987379716188748154624778474112140319316433787174141998496116144802259324875773020467708089400218844073597015405661770299983127750112680241014249991820301207947337539458054959650544243886951732581620613690979592895095093361449013481675475814990857821883343327471617383988728346627135035212736964195130182428822940669550851615876489337919824344563699853224268486043347787410623982348987988122020206801460949042845369683032219194872478781991759417235333642782237522421705189469484411211100843818001515902457273155211114972356360013797581633206201918079453521955432663439078689551015928787741027579471380540237214362235573748288782229594986902619399669294361620566197787984546537032227510625459183175936118152414038663605479732365394792683984620623345018989440248025803545552468034674805506186203001431008993406016141159626327541694369907712188503279780687153859041052440828863156624066587336733786809032140944611753262159473336283128422014817621762137731872536476976724153374661718644653409413484781006204732934898338345979185492438037651142759312885848785485236188460663720897599779418400941809193404553594893778771119809217180651099875005073810157407789819919576361140106290827295846369917669210691887791650722481835965545663840512271197739001894558381622575719630206713078792650337108859492643800659056893134808543592544011390453190603439095701937938499640457407950349342841562299671761989377317483462434365702966144562497749526307051209051685478346387992555998127046943365900809827289369103911570315047406351999899755140005910565359550800166838492622663742746569635672620164710161963300380862180224750803571053800996966043730892050922990172565216219864839219516706895945269131816932351151749458672056617911204307733555388296090827514928034163052890571598741458721700572132432259164348471195153289479390700440424493854281690117986572321501634815737637502243647722995709787302445287450222721122027745568866889816317986054528314244152266135736512987645693856859859514667112817730357244345978720439394582560754455464117206780082789828206600410867503840197143676915577418861399052580595536191764829192696814155583136211087254082175460810478916634022886427328066212874168761867989604252843407881242086993116001543072714496462134566946825095852683500162231562667318619055164456904253077022113465663569865821745943336459658113537013779908850915658792485766137513006565734141306161827646047144181440864889260444818991346183258395332036118010341243760551242452743110064821316517325383819745863165920368502893703017469277936288242864637580404191844992217035800391864725802729058943513856736982132799201689119640939398645496611584098128928460246169643749732208731362883902171718672617275569945454957656924857734594718124686911164523480883673442356020166160697958806328884367542191406762585286587121298493222364472323890122658396437655021711445011654304587908704527406592052241223828064359770250469239162706952834533055516863056818524620495139414150971423680024317206985745335388207730932103732263982401703873492345121888078888146339980134970263771578966676306535325871424600079057485333746292032342706981095246708724711006698454379055951258418099841570606890532019752065357701330215439332592448163692985434997854580786439809553681179366296967513284285295656680379963779279220037881818019067204888654389896696747950483280490147098499716465819817049465030758186456728861282193611053330341470599613485000639690058290359413557842806850115471356722127531051104894709311717737730596810382304999626276130525295631614286092863907629613820042147668833108092045208480825370205586437195643078706201347909571786273697626858187198053626936535431287807676005823917041683758088192996960627781923202865559925812885288584434969574062163024174735473146634833332406102682077519092458422122495503367132536148350511436900333572345164570245774284064466868727479463880207778446919856172795440525956657234955499022972023120124768713990395520006596347669984222824177555395867030340926514253062164478605224649227714597975436041989773438844101027002534202148944856193191330538087744274408214634115366515373341101921712736828331335261415419754343554312205783439113619705399397511296802403744004340944609215718141115883794402798376452149031214009096583223032093245417167265357637522726546701347655225036323695117368109724982494238140957620215901562984048184047812337822963992001093394556087588512892804382910851713445912930282259588473536576341649948898049108999348334964839592961043646603250511237315087018376972098713651797947539285831267944891719002576814322611402171659075649109207136113510311091050393800123315988674934140492984779556621980846819528193722704654349814572783068818896577499013093229451169762435734219860022426302520855815793864460236221803042890111247341532698636542923007449565035953409481192063223660227249796737715614803905549465541073510015571834151173092656503356614205023943738731667177248968547065963379738922517752027724511191606595976548555705733848516215274172135743711261934452360511765818959651825714273516658193994238884748844791121704427813133522838473861002965092509263380136422399924584239609983232021465170256727126845963148143672893978943441589477823743592909388310055907330853439269813575295090917778820310169268843354696794416007285082956993684140028909897815823460316598330061056262073833213982093531684730924464365668441241894643550875877210931988142169367540720294733879111675732516824232825309577282914880814387647356602852886348886316712215013972855667137604719158586410525732105382401751431214276752684376013482269631530440370857969361282538976802524738726959116871304633664200638832574140067752882145171451862396327246394836227906373564825778532822394032589210307491878709807193539439490208232998043841974693231474805879636039411417737851926969178457272386424108831732856004412545013314019788302776406270879540835030485126599950639869989809782313717602353183276825686897802071385668418140870620880716872375492174036825381016904108220162661510553213182779459488490677858207955034841870947239860668781280274427522197830616301308164300525852618601374718781420284900380855811865663061318157027017635650828615257398682636714837320348994318139141392015783100526161025635655143632447801433814209909846757607521501169265051181456421855025018184013769076250956601814993199403086528884261822723231304519959194905430446449202055737698719615901558940279934941182230283718759671199077831552790256952590925769506491178336368033930050238158683157895793401755378253486713453001287778667030651033593374662126761854914513310316296523149785156857928507593134104809606000445103802611546961578233024253367287117736072123550357088197958043412802031007921740214562490623099063506805933959813770343176753826641690441532455087078565397127895249761466308565727064686093492778474371206709277601574965684142179782779632536912888258940955665438849806826882456602487318259163685807497963084483554364061908178163844636864906921851352042626693973567669418762649379420912868219625307536138455348967508840740620539708056370934333372970559591993479597005337720124231474106047399055522097576252277820430413927078517591990911652541495476480886707322821875811461482814800745686164591309192807060198605151395351414298409678984311478832597326462030988185598110080995487394905418262878062760697799902473605693137361054425952099700084831262195924551025781350129002205769676126893641472105196920522537101184200605339210878635135485318611861223835422428450704139476433190410600709817867752758063258903118680540406757795248437332980285155284336500717170426800865162755182410433901008423365590497266694517658229104344977484165393677700515997577341875466488016324798257422170342359387162668262619741437060812571293738045639517030045845039613547753237741008206017443105569207753043703371021631027386218311786974777439520194482163355440204640763699348557972483831571199272312914487230594562326585105483966308672242540273085805087196201859599533801687006329001098017741207485155863427738130489078762020024213424479025746243785567714435741138452979324893418228776968962879027190351285649149822237384939039656224462799765459220433192736746319316703649098818441530563964482049225345991088444361325565217780738604890399173263201422625950275658993277179245991084168595867009820583865488727437193883917412074617449962307950077492078921632590810158624614492014221245243643300221623596825636047431579570644065249085305228163798932460877031889669367852423559612986340477839021641026418126663436226474573182938940904775193104412991249520773926908516624768210959049117191245496845242040745555667613305458586806330056263627717607483180361304927403735739725874327476150489441835545134913970005790734360733532451202044760052321916281562675385106918983855657105310235750539779331601469255581212676587509842066421705955730784422534735722510735840023388916950326088690181184500924343538136601246365306218254149647133521845222925312140594742993718853183279796437263509039792929869177302367624004538039520529110130002678502645655285525595301434811535370115202286618765620166458891013269346136163256367280830508512990469222885152083258772975814249748198749632627492056333091270260117970967284398431279346645961362389002271775177132182150864331142604792306537857762031171685036776821679085133333921968230098379425749307476203087384328261528741728632770128123375714909084983106340687769359606961701576146495814028243880501323008402365564123597221495310969902123461703843381300575789467366217349181379307165096981573273252738316894600484596094228105801478089029928429274370110513322364202669516131514171896103591349339899952246881544095164137110998115752878911903478292729043579374411391912087601656234353587061215639337019227751711955669337768546656714660303156608572875894239388037454140815962221515989575725229169759927120785114954591849520257732872384236530844548013906907897037741448364066570929169196526906827133589925165500671310072588251186295641101176022013828156659587700607500698107478002171551188440691142248302676500753846172651761238521499333085392294971630414389147152961959070077224626643103739864890817139640968642215259017348103888256388974277534945064039675416237584150894368857601198628060007404044228479955083340800398985956226279261175809081221247878827532206201539347457888347101789690757970290512619068947498019334563740580276843350127204442731284900986401500340266405523283142517274304051170013926327668614403110280080659815797862660981654497968830856788859847884640745359051914748925307320153551269223441332432878801174988810601636566965423630714004148160382995411327548668366545665826412862895146068409034165697971513145130970692294131945198587612989409819272899636563652763322409538684396369153286192029229604784748863144170674082766596727504481055630344621337017038735067835634831085178031413519403169316008959093445093253713062371707222163589950105490012757783243903832437836941720171406318282202926469148147401373207897925563055869351344817413744804865291263405627503982134071471129690884375681875430316311880395818400815529794779933523012131195060435046697789884957950873373883775604704571742406090358214456617824375118494730386103827333235310997434147399071255189323101652272787531892568821146470993973236842417124750891894855445954415602846796525137719769708573726859685236443719817665586292386743200707375936060966103300441009655804122665513227878976193971430845410929441404493052427812669263296774017038550279575158286280037600078313439300433128767611989517528862493607218425923052183738027675926062795192414320340106450434108511327733166473028823258147138264586719154817254485254337860409967335501699792428519314063518047797481031753112996198704838676781202589707945933950520207592709473633588744130670264641227697744574566299199504640308946041815753121914042999587196361458573999709088877544413090092048018265058735425429055347833965219011993301914488090717040995702516201644483681548525332797551373306974149107003472130804946510637045397621099620380989644400545196073007064592140554928166936758350650282400156145941459872924602316873370689501764338097073871014342500851674952685908795885717701085459311134131719074235329018356225333967118541035944441140143019400140719505102741202375951818966866806553295251261703596748211399351001034588738034148272438288750154100430085756962720052692607713387518681458549418150188872335571450776880670972335316120117719550033888458267321118396097570886068659458469320433081108930142397107195605907755048666064702625883158544016593811202165716058735291205426476456000903230519526967441509887060989261592349746951442477663949199813577839458907335272075201767276465252977811113773832960535857536787535840413763216844555278389704491468191202416132515442331796677672651426359431577533889280364367034705316464981405185326544128795759741141908639517912380681877849155406587671661218435702751755982907985951040628763202465507864264966546258991283504812039861054409083564229459877243497061778213624836630584176274391785904815364629447292134916340093682992479898695736819006196606163146629507102939807642597370248908799623984486142433319966156234033798778576238117814228710142788097931374663525764190177734358949366881408578871454660360310774532381667186366458761195447655193402030023879486105935032032398746948321035235348021829663516573883641487435283144955824977676735231286380328959183810039460613386300482660556353073778876969688150454593025240625567938997756790243419632215061180555699884780033825250336357989228596697886106081752989629605302213845111952407695686063870547989333796234098902959528499044111595362856866561370369032878878056893050058242874117842198680852155907011030394457826265423250665322903990162332813295273867209771796773164313543663563885346150149705861022368378723364283847096037805083173757037955347893853857448973873716606583027097783469228584902297241825661593922053669304487062393493915490126163500849617865011254972134222353926338877444742239809193442845186176925509148918186327039918012939438878577335419144202250988740572935177612317107179766845028821597539039408626687096156810863051109232453488499568247430521455449836879648000131397356636048626963281796436682004848942632158980172898912311731440022579405847693416834026105675170581364848379326338108200496665553858795993642817249331883043159875544482457568113050689111326937115459885248081569932383796554841540265116072364429682152977470649416768607301471974264991107830571085484011462876951814258645398294293761156929522051387689612912506208917559486494350135066520321271808322220747453759816157772958387230362469175424859835965878517663094589649756772245412208553026061144235387058106331262713705298965593653275063339781697449536491571910959492408591517311464363038252507483111079537139926966813181997786956659735858470786140379396527657866774461447902650706118492691834306887398616209276998243865849368852691365878758218624929123018080473074688989467776829964841090689187069943661816198172910871064000199369656831189988881464295307821090006209753949405647740593570827849803568892601083378065950452430508293830623366788302368203649487413690887435239954575686478717288634004092664329607489829812682641801577597902643182346224404892071858530017628687690229694366858890578325901339267786994795130209196631479864896937428070809859919235069226691143456171087976125534231934459596229406391756972662255642107563029057402595462325086693153840889141728422432304315446733948278137284932404905139483548920508690482340611381747310911633984072133796652361418899713705138424573397696530736290150419264101896615366719543860125744639504095762702300185528942177740074286776958910391966276227130900313903431657008848799367415783683647803833446790918032336760639458909535200272584799568712871425062531674013474092650516650568946663485889025902428975819672719306277532767444073002893332361172885076373347056782080718096669144940909857109008476355520380887074804901213670667078402113474428318778933016428543907217940589862074502462779020853410323801429754402290999532028067260609802365860710711370265442104936675535644330439621560997318491761548241340903424088057464241973319622876665199165612094051831234859338449440288076725662989201943818788314137656197461948509368999270401819940607968029237864510658966543901291970353470724566020829493107317480567860244217190851254040201231194663711121813087749714392992128788707706115576671200759587119697607705216486715897806103596348589256232374922077025992770552328752847417941414593140889321850309215528988257114935377327933535565276203102743703261062586019220984766795796706976774570646007354463227396883887834159743088498144853422844422178653144844332807331451488592329201414761967596036579110144563597435811043069275174385482669024760084493064835320063512081031347086405053690832441854649964122620111176916691876802308027714647221087023234263244296844913057338905740237841937215294250970763732167003402902249099105252345330287076531763421397203861927496172973752977670970361784276095443465017248697094984500908733568724496008879898325156691354404345553369549861128423045851699851457719929550262387632565294114063931419159328513763451594993901268230749409791251418559367649654726426278507804877331759697147772468209701349076783485093506993852229296309270716529187102660111208058476366721964886515947590723908111118910955577247676281877396275801544295908328980685544124042155700153388266920289860701165416041966472216186889801856264993421943286044604094461418654636359996151167637701186054809522238229534694282263623572580439640974813855074650180010118000609999349662760031148708936967971466612322081236203684491442339848275095173373973584123737785889233194906632588994482435258746621188776074022570480106775669545802572307887945411898768251260669622997240049931052956978607997438843213044515910320634168121052038578577616328307314115584537453029240133893661799932630201981667330473041297201582048048800242541530725915103951709491886136294471113424457037239701041573912520392972334138357757667172027068166548538610116791070434928920497306396120497131921953072378153056339593102384720142787780409747426324068929978220373987558481334634142337089014155348533937335481500954420284061850773840409459242889272843378382785004027885315220203809134203636598859815853606738414974619058609302408483448958988594207113100985131106190768790428973525683960529158830791147301719067894646349005535159309020595868662819206470584582473286778275154923780562169153807553365294132531278648328044932167281687057830999331568272707979061355470858851215075873832127217336391281763077948344402161059347003865025187087251653570051111730301603771990712536206607463190496167683385873622961521559124635776520603318441963002581779096039821427684602367878490687476653846611654494752241085830228727103733642633370888955845547256871243871879981267934778425693185015210883629517942862182580284793303511329766461603201348811736791859669385670354746831665913598215754971990740170042842188172765915541949182847869144163438130976276506485885559070789435856600390572981160390140121989715742737387155156381055892231349497068896304876419008428349143903723895068097601713324508558436257809851182368695554814690474818155170885527776073618735583248235718646610636800943122071028424304903808039839893482659279154659919184579760168833918511918645060391263569024677473322923134466880398766533463173280343928119444110358592735970995892027668937062672459846672749096714752586300361681490725240597491779995659995815934771555973093973684503063213305612182192371919290509615596330318782349555858669641624507500958684323860501980080180415309404921666356899689581651304471387511465876181501062626043415945221379320437483446293340611638660294331945937863677362361033743892639164118916839127620982001324319583986903974077746363319875018028302809432113659380458075484076324586136901581511987327303842318168110514263068437207422624915139338618373166783695989542257762238420958451892000256134491468788656312007191498519472065577516305797932925898990004397515443483460519598959212574970572659820587705088801314443274212668181872997490141799129024615691109059829526582402244101376974897370447502956084126410763441850227489894437871061243519231474878720216687865741209982654619657384967059326625836960952503093671222509211995098022170979388231998660240085210763665462159457809041977780455239552157366093214889692477695041487315716430146118594472404461491197551520421059752776260380929617105903715850614636447258600881050677713515365338094302585906411132082945083730053867290879664637569830231758535959938129129313434888046545414236179242334719190846493199025386929416941623239852562963675036940762615864179013965126473351223127868253889078738399710838416250635871080415697376019318301578408768993235430897414860057588613476615056175078974799012347304777603594305626431841900921106348171356110392155730693666395966738769682793988754932546719550856183011311182166697720270373891655269959223954342713264688450961811641403632086465854799281626346396611482918304471036249190238174968921191408320404510623779735186401488751048313468656441993920449410479608735582427493566814870736899923976380415735006602283917273504667212505790230686038017438973630997257876440105571866249464771843863593410727570346235874327935049807667405911206746257892579280606720802622171358924444529053147486304599867199069393825861196438367166290012868052544638281499235093144153081786665901796910423976661474175360967062625451248695965909633373709171822246741350086411253581101069654011230172831298736592847532696965675653423264642279178236116302154401483803169257012903614083388751966818836475789119282290686593204330356497671037995253531118334673485739056869074708107871919769001100987948048192550581317127105185797789629017711845944611189344090118213955911287100190390379913087487137966797804933133162757914264570762795349376494248761436333919171502882029463148800225631878789072642556726128457340227402772828516383433753541346331535399097229420966609641534032198396321683851520764651970596162781892636568840237935924343309885147565853292258071701453593968440287002418579645024976498263093552920151492494460233234217598192122897387285092112678737659763879572957411602734443495951187355325908044058656913673400686468741080183940270978211978159533927228084758873953009743216428943995094526883271665233890457514100350082131993868987975159727513071027952148590668895245020078501217422676413051450637971301217106513818572961909987959746960382477260296671592257583906502088141039081914374861325579164995559000277644847607386755550913424701422018897997409616857928820461459508789234756655750350731916766771983778155868624390170998596490095225987071644415864146967177575852345951227417659050603171728784475751782486649188538592331380544973316900513262349991302384480899432841357822861144848028678697533649786525498382600909631361066337699609555370666297021814192269536462823564854321547202204849373949519030959164744685360281303593809213157655802689719870695253932025972169141652668847186274061204031036221986259994320296394419388066531396335948517063523764689248819878963669616996523315197828723665434550754542161495209514529200662220593908794171472524716554949811983061997179975438533701009983090532594471121474308344059062523073111318079854581736176849043225100780570707602597417473959174844755775256820985931501927871229486368341691388999906199286512694242594791042855981268873558467930846791415104069112547842710427788295348543182656919602215780677211810262894585884172434015736282266260501020973953434416917727469804398542536926656401679290018927381655271667250223937572894967351469066179438100189461648475910952647822897909287885043602325139332195602664987144955713071553617948853174023015132005381104977719917981280871822335748388111347782424528227441414188167795181466611072614495654879595002915546236122882218527303701708924193299224008047055030172612348136907464861676946364191994607230783727589200905362833250525700496660262478146212298482584456759012621738655748911255426875262984960390759006733706158190268035837577020330545698820887133928576776041743731473266554677526118201275162910452589775896998754070068772224913126208987363604859590156466050014948727428434370896058661167014805370114158687097275789921552182761551240474968561209440464846691284650510944108666574071589404303213773089372540612226898023991294248184968040031572356489756400713230285440033415031896496457100420601136870282226970610165858159973073777722677172255619689395132911121081674498702652269881806565127869677769932769715078351508530343243564374368832417914954639655672744951698486187187506365341520742875563837351807805847706401901977959652339868438603852452419200314663305047400767168934470026407038731856388373812085873383155516049448415162958668815080800085893462294731850047808749248326247224159293735967212432363176003041331840685926135480246128684580037768320939986564086540288166701364855651306764460104481714786902765061923370155242724872834676684610742146542703754378354262861365448735122156486490737474073676820285660587947300288904170628387094383653065985182814533612719494855761030199466388676830180286350024003949735619688833892174569176827973630243325921968719458482824312568816562032874750816288087559084745526733465778495916652590285842956569595275020374556014730254470594165328402531318562888009409958242839096947023451939361513657497150947503987690735476944807226392354645912578471242639671919308229856158320194732636788891612777749508150425357802715202630688596478318966395873517724182314130671722972223239301400265935029170236993861051837962717928889529825451131599371808819866890014342008785476770218760302621470298005263335544862712337836126499380105280961884955180957875308460070587497446381741177466138434667230476347513123440895952571488669027287099426038609837399694526257965597671790954603621332595036214880184283902854965147922286141128102319976114284485969455013841917235317406563539782741527782413866940020536813473563680116570891407783363081324130600604934527430100862154865168704460207978895082281335470938839536411007746268576694964951640508967735027023160048081604842779394251042784612691527555972626765172542248033883242365005508397954894958722800441655663543100641129608200008514246129639488947787966258394713455989683247431714009268487421745413165344089535526952436726263947280663669591980812810299284495643144787448431175924036105287851579667721362364308095622465977413561424901017791691365684427095437630300547289068675272430923293388404163923418871608260203148824509921976720261084274454337437913314216046500098788236001858045302992270609361006991115123847739921968386130046861669355824588121518655598602987373818206641556010194043064394976796024111277797198356567203462361883483194210184672452252210279333318096237517945573594757667977689710672215173513588385996468549403957023596933722249302628214876340199146532322353034695095376448473982787390173224096526037776567111878634831102505928573723937262593723062435134257747425582891256877416179793245932623102690533070114701743655439711246363169295801018853964499072113150149935887429374455045387028721003413433286549291445453076705349125487273182416931869859461034001359659823613184369424340903658547144276744094778479549390721256103472978914393651610946859086773906582077786493274458100432333251689885446708606897586187528294675042241723514447731831252911421530674430975302382990298734498588563253164990444824100579543990959164575196171921936791450234998275452547233028688719902648620317516004173286400849207523304453935943352634075556542596465110737108578851045022404912422906314679936413505477029501693564142493377616413999522824698211266889690683307908589814813455829260483590386412608236403250823436400307329408593867182906052347011063036113943767336628438243588955134380530710246840983055867565222467080112802066206403238806463748101094199621025824256347846942138641822013718278206862523262096761162064816887258581377007886813257229054156936975676733784918938645072276797845080251630002177022162160011261641570424925649165604924181068984650267272034873906736624262334276600935969950679081137790209098282820682540907280044509974043055576787970879473661212667508786483243010480137954527677712490180011440756130265147140515981337124085579401762346386298091592836801760714973990759894786635522811412705282731022401573565552529633488826223074270520995454564592766396536178036453727753776146946782788321297260923758035352049418155029354308896474273563923061734372836255881255361492733304961457977527609167801266208540992850648478145613387292856462312424636726319053480367382747467006076663746050346105318737400275886384836459052508404815284991021637438675759566626577952319191187549719408126668557084538928739984129125589207096961617309340742963515248783053752570459081031176055783619622465384314382880498912749304099327786171012354792459104276396179660676445388430710254012221514049275121568489518805668136262123573620169005086464922535422513106289102288237981789232629234417944862723123213175439140218051208443930810411487589373415567346384627834171908608147408739334255714781121585324432914971145682688609236689963520698930740817307745885277224166416666386709664555117142448925179928152837565329116351082912787844960101594858350435996791657274053972488351663941879179881748059160232993610297522656932915091205095396946823911675046123068276196642773333798497757522273609716480566558043420679679326188678379167626622771240221254277218480861334023971966409884026227687387885017093697711459984860032009327285069176502864971722420812434598318898343957714228805161743998281105081626138816686693262482956103911811622800978355823504021399651089187739274324306190525164612126799692990059856293186874279854404838535154732342413417471110992629535767869413485461136111266406821003250335068110218236178089158087557758815733283547311273830163237135534619235288355671453970274012879932911771906505797049346954127847460933233548093596241952233097797658262947252526155986436288426334303589015546396790774337641013483507271873778865653438494797622049003551335714927404750912791614795527173753786926271567291884493354880454856433002038087058443412308595495758846329916016026955250977576488273408196029378892787359758517687275051411710386085202545932327368835327780419626140915817411494839329277842765157722781136926860804298435541919856542461803781808287961928964523539553196765535521073773156599414475725110354993415060181367589123930651062327316476072396422913043145823756717143465236182808940533978082080535309135106278163596645212395941635373390746466303640308082531388100470515383162567311313400027353577813770291488889545962822716424646288400725567295625137136068211868273425529717709639643888150608951147161493233649875432993956490033076770978989179539585202761490489582598884215551770539832872374990505010407689098491194747074077215643964098543734249956574075866707520394861249604004093842270106319900048840863144206889398174412709929825674352015057398167390275300183267538774501526199860467051794544117556556521787778366436568726439871152696192034782437430247306303207531626575858055490711601284706313578416610217092135479153944976524353385955463451249771655391874788210221728736373088507857423406563190384508916690218829841525713787067364517344245791552042802227926581113172782377352051275787579489879102642910989318001391869206841327331250003407881053426221195362510722339967521508309501470416058534940432489289815518776919682119023342207752656612763320871109416204533734220541788174531166912230927177561660088268864823304284496694219127960319197398110846595410508154186454104198332807104115033197344543093668468083393932707307781080036205399426669377185073718572669868740680614543060644964917002809315003280471642746877209986269626228894640238470043149390479834114983255031667558754071765398056322234066936517949045713072325809986077787389170468552129814760548002780597327730158358446658190623136899210509181857375050648921094058932935711316637007139650532219736290373959507973388027520006472612068854358745611816532612054968346881823024912383168833672331831450240628143339635963584322317095814466271295331031305025696845068591758019552572918410893673509973232473657559593055783667756020280419302566167412827242024756359777317038251503389671215053338919232085400395866758654568097979381373736413891120493172668558666246934186081673736481674758861724822619769124418748809076276726207181196997681866637115329117003914827760488579417970110540970441774005422345426869900615261392096847291985348240550894391741311446368285221154935161140980870500510803646677429555454454094675736603703837562794447664460182334748455841271022742699323726328453650393846590720291909048966355595198265955713388566332311509351652700311574771022108209954098455797458904844034505401923682381526339356066420682530306025821348278601985312590388328559912410698737948921823080270559987507855521914222761014961345168290126469241165895434472440705089147015643101549500691263419125211737651003084373812887261922784601615236530974043159820618056503809468604494774291973170066483723841516164868064743118696904715312570315472981559145421137637555140462730595419820788787545525967882369800079825660139732641313420851384198696369870210241742728171503351003669097266131901136852602814464965719803371202901005851483232638609042118894414700039337420150341966346414200527686317428880483586904393178066087792514843568003773290006777189989911678616444019057556913784231995313207415543466439571171462828815023004327976669878621249458933680048151911327437148248661736516223316470726733910838550402502041875683056751864681083523583425445486795376905796695211645754319711085947346996746755660295648898219365799077286742073136336064718846250411957881082835170153184779817361144635961848096821781995699929239171984810170087145111428533056827218802616153857047363620147791987094112764171467538822078655087559405104329250522151280795264754441659913895853423567452903729423083264251049329412904527995947343816380618980574767359378971286858526048031230954665811990577189320464046260037414039908830464466544441395376818387782067957298364038695645570025049612869007568190016240058027054682186535058697119695376405857982169000363196613357211887969007219114070950985946229388637314035035074064851592667773170705074726261160055020067380761834202100781885619709585661084003165057491347577513534647273450726384888034159415147977945737160933423348822778012169620803181964827342132585147782859232195257951105985840319966611601367802980281532471616831300934643639402696252578214598142634253676618686195147233325279015650504057369675461931680800912327289404067065204222217641975763864028213452839211182105337028767541743365849888259051365839882752731233550035768950824987087788890184693432639817051352386359136609843706213040600533825908836128180067722698734737615050712058216567120975398377523666476292960537263552286037575702916118065175306714894606945820692389166701715576226132026339512714133073934246031693205461956270581156594489926611975210601978883501622500751042339686886678874521559645917603706087208957317517642210075277507413793606364784982996612647138409262752796532898392171856967961419078582482939348352756342592439278395895798066790108598067027287283841125452059259010550699423082564242517521125601613203685068290687085924553627325054552578720468695615074967674609709389784323205610094557429137410795171931594802767159937401555381552595602200041962142299446837316002623199241368867583783921176088922650007101397429910721433475971069633092368289652919483957508171563674793865422518354432871016130618831262927898523217746202364775337811665773639342754592477195418498620610707503378066815897877799379478035085345444992238572130703607837024019172300090590121505669942729828376360416858344215644728179933225834806459067379590994721217228822028757262717516456481456171239007858112341260797373978626014496800701131563842987460688919452243761890499078383134305737994122891768247182555703147974347096589076838107798332387048660271172887510052940968879418365021378070941083933915215499284263944484924361211858022418035748717698290340899654924760750786093158116867219191262892516471839196406874632702833530406844791561466229291482682672399536406517180446198604385014842828688941356773331762875271487410267807444719810735065161966286563250545386538497557808436829615846040610252163378253476346098230867875225800466663334539606179224921254881640626792816884836271133494809277968312472102264666401793967211500246958484726400842950422023322183902405585315037609231297419167238063686722219256454140686048626925937354326702987953263774540894653289505196037651404774615484329541080751319918369074417382997000347150941201058377817996317844046983713470775948465525252689242161328917767881087766694094110472566300091280994850013424438513651090659318834973309266618848842154926971266246989345932804618673747521673734946940081762878026896226313074084315692380265295149175891729555341423619824745433978915693135312018060180670632594331219917193259430696627651691649621596500387156130929704327926370330542002285993190934599875960759394921102032198807161809848421488260255708224844812270071895079358457264663724913977110431333676189379924633108227940712515858686235255132390393777874988331584874449603771381370167697330227927618962067640519224433903452888159102228038808350811734347842269786025616913891557090322185863845971683114893903657383549133274548273772345610689917305610637074623881030142530178198329027995942058207481571330558710826945173379146164684172114666304520979185281835691363837569254365491979268730240268080468348071888812536707189033960655498453398279033443095694464313922588406044910083483477360716518388239419061461895060074919580686719952495978964636897141515673556100177957389754714104793603070382064688872419931611278091254077035068519496869494201243413107894856433698421693351789568193926079596190802005611907882212611805460394089728760625618301621251278195570335352343765157843687361936421441788314451430673037099310226785905051932881337843434577221759940060072439167438186644450114478959987997617630090070991601725247136770342454238598826414876027322057593093304908448363180817200076315587583022546370624795349748493959685604457214323702059287683919472465912311746111701072485469418894926451936117666239671590129715535074607512175042263688479629068799345468806472951648812286572052009625556994550952086873637927828779949587705778028786740470793951360728197498879546932766400607125694617655774117106017150228064355356986991604627771112391047543481065925037783564188382942938189843296064774526596221425188171721745972599722649119033782208189841079507636163884780625206245436630599432257684442766178604376479312998108173106136528106313274747518441323277716998883673063524626432667800904785456969487424642763981579083643675456846780658496518459103663279156756263479164249587727385883475988793275441630495934590409748952548097473236152539465143314959630775462949987608521986370457595003330439319376845184692855351232005902531251425298039025937975556014801727925464926554463375554467844978695112779189003673586727506083292569598118299498599592480128591599566708974021241950180735187845447030263163023993671305286746050201837910780960144493357197224978864334939859061042493340955083595236452600916919419974228415441317460754511899216446246109796057612001972411172554178127553037196662499649541871408632844751956672949372481470043803623192802541687886267072633954623238232155432168952262893610990358032221632738975596717179319267216318927759786003548417069831467929988887116219147090939847606169069811501108887428297723154691679718045580566658974234777916460765875874524199547807566986908834719842907795826958009398032581650372287406555794326963057924946281750227402794211220401111171253508965563689392338563818450602806006271725324625673410386906798625539966372907004678481297609340196908646134750070332442530709461795283907146749176331704228711659298752491136633171948208267914331954915685037772083085132827419023845665626740570108546953184313700768973069730245065001701185300628322424739225176369220909794937992138640353685753244869773353578253261136479102047052727032233081379585135083931068732102060434753213452736339645476712508091464409563970359978558331920570538151897278391707133866720993160852893819491220653037690599041870528151105929871464155436223789062942820764627530243689060050327325016335650854314221753350259195350503824246911343670244169445715187878553084242275789256166644191819530312289795873974379291562153670567879354969643931270182744722916730716569295610338671922643636183650560836079190137627736190403507871484710191640249256465626631699394920389561691021930565000986715402100295120627405796778624282998294261819210931610357313284707531052826966829117616988046549037642171364842589622589964657353577673877958747455731801330408308868319202110303315728074198637113075279655728384254563193539223855911239902014803548080878789133557210905340896498290369576301184934474125060128880004397995255727597930527929296369960077046045614246651077977535603187193955653886558889595940770099342543538469553209490821345138008727500308553229634265296722319807069234839951797209474412944221154743600834808019513477921430388455782321683515645212222050312119100743634645777749687880311379662577918432384066745583831538026701291538097716230216671903948223692849822995780060356240144557526777297533054266798618037551075970959346093778792970751389861086703970115861583970714424867974414365831662045261073180270318087560370300952388216991844777143011736339930109480464665100095537163525965940193642308777820978216386053879181381466382576272939760352532752210082087462089921253376772901920255816079512695453922470048255572598372561356698247334265399065922186858256376214690662440143374827053405457091013899776130009718852803678709855412246766536154864685342722204327339513076469841934997983025460321094527116105198948427134157517499123937075200554627660581934748784718181269520870270547153256224717057432316162405941042307765145814254278826265723822253199981372633748569888656140542267356089323859746520064635763694897016757032494008048043650931047830601602236419535324626223847161995702320316042482665069189198449651796874485238027526823284494183732053984743355940236490853329723404053402264435926373406845445088892608178338559547709529612441397312709803288123157319626592085854586900813929441305969881306259069877201034418325302473881529295496243057689232892312435825691373023047687165044815596711845725556057266912061515395763790929608195724101741720127925744007690801314043274152726934532419619422846134227215107092381352120074916340000696638471974050982431363421796484245533430211534948643949033485737468507363013458395556611981783819667962506127419627818651277399620015240186244963551327436616777001706078609588558428615785889177681904934588270792516250628577519484376763615794423733318405092448033738744705136190800920442316380769102890529657406797773808478466897081533484134516663476734950002762535602524748641697882613767141086357806271657211676129083063140066170010178196338473968910921047995601793161986851570094398060972369861886124451448709369802286776414249581093534439147220986443355942403698705193806963053150082487570815130559945549103975468054257558740557562846794378662106943019990743855547054007876501878149194139799182680276046891225883483711450386471195200064375068725452688429193579682340051536003841473391926125345973545512231376737929588684868040179790746351820956875894216507609873852471114221576307842280878630865867479564114579133302191242741789641394323587940859527938229466585854895890157576312645254319944917171794163108787307356457424753246867483176707049128048560313292313159277690112404171228891494355086144294785191203373261156635110294674746146254895970314256332902544917238815312908061446255837735772649159375423118335704207064106839146964596159365629861467630981386724530369955674516733407126928595181982629707156676396899265865917645987224207444026301312679350325156232984496868775760015115176588392501360520837880354594323961037978603641969377861574340839784970781683038235788752619486983326821804465467509951838104267411005531473112608996326143944092990354355234408702709652289339449590679669711519976093017747228332710281693855768133923913644110305594574346994325236321163039054089295291724656868338110913124004198565079780784680256587844109617398238267710353596929330160068414360851274937984107576206255879568226428731047401743655253729217733868900480225217386517132472146213991575705735683700083181411276419865471338582021571569915946180834231226498681891196909788576877265895226552616725889510480432397245539012209053856850801523013100209411502750713127662543005298601484899677917397966786962011923165106090170128033251715289092666967205096303072605600956519069129683814908145613958622728757884319067290928202870029170540030771837541340288758118430107455882158248652471872057663414109494892200969823263167514273341172431551955937805820078923032062812870946355670567569447696556806037377140955312253133250135240010228351804544971833263345099044034091862249648455505464216351457402121945312349704945058350440442520537047679373582481867145843622683650527263714973632453517083114534556223182995068055681337192404943835970464182466290836358167837316356517032136885454591553028402437261836625138328254145137917172992874963694485580086483265413972038516913760123685249944183333096071699899767682033142452594735348395261966067409454398302288735145763065457766269900565249442349849447050023213723595402309041841192511621640656667618184724595520751455113392899498934281746459288688767596887523022375030707441790449093240734859235376372081564226980823791065739925878386135301429702152674317677604647407143231948083538965356183821814224287576529984735026799385865038238157089638184818153622321430031694582318134211504805356196240805612234654223708417107141627032480893947540390603567773685011893126289279451831955822560288575810430452189233276731254577899171491972570760423945831952503279016009855815312984600962538748899063859745092176058086632958608504918252864747054803871646775343987847791676813242742519643497885040952486423856269286214347305676359495719923852390868022006895396461951068409964128250988309988066420059116150542638527155709215030967532069791559450371003931051570850854698472704039636289802870741772435305836995686330656121047781072118574839921048611747369133617788683798444919688686766008701629067773386499335343181619049324208258376350807971260142448921059251470944312741358700026986757359422167031749297116422785961732406215860100823511276949930660188241769893045122029130601060723788901012569161463875961964434797183898384210251828778227125475912868880316364543735710113590425625725316874214864348666025953143935063272092014859054686683238011344579358226220812349249988635998012250032577988234014306356106696843615299853624336773222806371241780192986582123156936216885758598277594212557425086046715593355682953262474461160485679093577287413141551668160500875225206368591191731533797365334739215227780226689521521634839339106489189307882863366865883018580638914515262970077569301046091458295997614702326339537379731387757325587071001457222390878205453845807769771387286099073876341343566686610113235813791937804252472425921300173264363003010631932679184194511976113384426317820698274901209461949561418502077689914934824168806345197044283283062795294553923010354167273028882744622290426741789259782234537873025193471539575436937862547617997742417264580552660225157289979987300160534656726725408791753669962045177388732072573792442768602815734289291011908604690937179170095401940842718353810317832256156946051202471581910241833671991114844915294703173416302053192701130762122204689476260982638296278608828742252406975215734888834819413321079933427754823940303724323538791247359551399974574542285746169265374635785885423061064734824839118101716624268565233676864172652531259398684174268275130957067316014374554479298106560835906825847758440796804148311166971902805599386838272873077865707539879470847900272996399445369575806670902960493477435224358385027242842422304103840740187585321045570947120407049761177663864063656200647764572272765309870686617459713352482454726091109490377736835295290485061879179525610944625426332475029366505587623336735610713589817763543947220212612529488346308332035712995690250493555298388335962401049611175055761201025714001176250519160503450256895225890576790606379364699934078556099051869669671028212758531265089029684070355349108194896666053882810108934784698471301041691024751000010803081840223096323402760535881141476570173923318665406941294094394145192907151372107336296369804337497483633651106755366506579170948640698144601591698636477779884070683405795826892756116092893594108881209968872489281539596497149523730929510989308064063169955477888755480626550919816899598500339766051730126703857992552875163821644427341897359382462159215838747100750131770587650811805857118032602850131590011834890097587896249216505020690908349732744681951907449401733273432655045898923977519605008531165789223097822279212778195206524751930064535945859403202868440627090124171942021637870410767133349306835429779757950557204133429894853277238372761456624908483693659247559558463378675151366449710997863356117645416166780377245503941914862496523823389691099557252544692770321119506097531041620615086097798424670166269678674005451690918055911725019472735022235157143782975780383236655616256014568337701534275420446505589022798464167175738676608888517403471389360893558371105866758078988892066759307656375106932001118051319351658544239905918577507342134799386293794785198680748147554799785527954749964204564485779544486952739790302639082605541406471283661688848655658729389525665627533298531789382163442170650231302489863168186869051877504276051099642007071744629988665841006578196901234860963388459690735908375684726229500870323042949420597861549416592270099745952641737644227936407881855787030698893813032905687211077685915146609849031938259187263048673955552888280866836464180811615843026486382069788406083233460257479854176206652352273577094706342958000140766049336905892781646746385188326411243526048601913070147008650903177238365976725710321402924054260977345173238438010592707103379858191734349440039867653997618083180985801833820751260259644638866203631663888054196811354472191414537565842644041233478793718153953631181310654589530953400997581096579995767998308226095113699269706007886708155413719258563159652632769920723284508894530022415662711196117966122904814200836895291076432576182005242667607540909634350860950537900903901633627086566606750251401894317112146101472857518245002879923818012285832891110901542005935655791201570841074365384777767294787700030008068792313494465411573426710977554644229451668336737521720904328101254353692887798129510039983664852875932796947720891763479637943306354219729355611062758888548482640727047782116104327167607909154373909288615198462503757929696566451468010739606425259708464004642150704354865814012779556296368956498915312048832934783320518415679758134886640479732995389431715224485142932970948302022752731384125972159005387391469053260573120514299398785770707815447058689907534593260120911975262210602557612438967415264688685758688641057792576225171932804228175255007664867732954707734240846951534604877643849818983465931080441511758084797264847887324948175898617886494729726769527696293943872745650632548344661745378500999654707328596618456088258073783584843612217478862950739477213594796943687708028802803656401722420496703960719548506708793979725973685071122658138521769461922707803430717463733491848422464851423878202685016639440850210327231803909855108073422407114132554799278462293733450685976151397476811879487143838122510714643484444160995451109801068942740641242333898895585996183533017244012160822449031304898811927903293940129363837746486234586632019045924676172340312387073807189368867945206826843286747192818159502363204081290090445787999844107336088692996973401151853767808700430877768567686408242610212858627600628361091333551165464101913839907084491147978509365349788410564154379655458212225329450148319221481031512064473636586522926602088970996737894151876613825109339567541153183217074677906795648549671892383393956368248509872207389669177852056363923309654146387016853108002135913811190504262418022098696385332413361672186043002986876206804491036321815368909345147676854970922550269315704257487704615685615742923115150485900399870395374827047543249438101473795522766792227293487981078930060173403138075322289066742898414030198721638486087048454743965758372119679747926314255792617061190223952002362703531702026581960386756105058187157670276322827666443937204575784247500547150524573428037175971457361661370935596023531192137512694051334127100500028731411714075742549398007627869047126850317812721651508460556734175821856776124441054464425319357844302164482497153327382729545452592198412749795212872830718522830218406906735572713354427945403392348323544493637430735446883596212292428462540155453538014893641487514582625631637982818736444060476080801652907670317792448147128256486212910809407541407259197876046819611584366604830691507147737028925670648981870247891807457905528259627132790125697724222185154539086797024341050205402024557882703105339226870472927113318085067611258168808799650262242278652074821889627993268295557705567592225502056353701238876507390697095940539623352071339891517597291295814300445005080518574008234248153138710921146478339030697149615367044895188044558345724116195023012409156381514099563533140245690921673994791152027902982630304110642106200356051167400592478161683233660471298391733654413943060321073181551257678282476843821647586953449452910900452734289142337919236100212282140554125093113434456333752381612006775033192956419568242117730489183856844033771752908148300616592712625829657104070127275925928107094302217850647775328751910437209775376743146616567701577080707591645148857442670383538683511845752328669357175265036672902791437909684490436417121260001781319984157553255669311968008217196614769119994861501188854714224384322782755199113941110486564921273130962511931948527744171470060690574076509657992846337248060062203407257545674725594809904761325868846622139205105194070908238943232147893622366443995282968286215687476898497989276884901924724893624088289556445922405646919886319687491938323118642774104559676408070031384451584582652480037155978633957350186451632453103114064354178901189055917478623670026551023027216332907844374379652672081582619686369024717556604811706643466800286013907364605512723566606768774503068357297269134952046444251249833574672516169396100476845570448850672538688453003296514678689279881042363581775404548731359823611638691669018699384504802933361764066569442010258434291347103764048781906837139813080648369602518382030673997355448977132411459400897485129113424234616945146482132763482010230921198495293238711760324473858631518702255419260955718875806576208163455005530401045473773249129182814789700410794561753711790855875860274522629731942805223268535569119586734192323167515956958254255521639469145385765047429642843513093185915238682255698836700307761628805432447691225284857539364674356412410462068483543261136360571913246220587797466202559158780367837355085310667902129386267934446437813125923834446033602935371720825276931096462986937707492286280450502695605409173902378167219099977306134790676810118506161098849192699781245745037984710003815686898557510575391761748223943044284911996551814269051869638767093625674575611725176966145818549561944804751243737562477949262698142329113707842180452991481419404105786628041652429900926949732347410543345933128424547611365633575019980743109635674406854773468512073535455797070326518528132167180953296310801908270271984074596353805643577466319742971753479701394352606931140851128193505002083533384778881987193562692126809355454632585445751931253944954970278847251588182530899530016386357282732275226386984403805944322755777487206422542904177580095029859385771541206687076615528721055774096161407708673536981721545515811936361534989820539856953217485818299575549173718463145802559983575205301456330116461140989106975211016306560328739329353832994189710250878382048549954534996437514296210487651425142256621456245160086763569235712233408984368780418598941740421962071721273846649915438352544204878762922147606054832634044678103669266745304696844845144043011897764461914904869390825813166004069729755098278391898506007012129905925402174064480864208480780746432793119268181628704384703445418955248180442184398904407321446619736647733522441095512271128355133685371471080992722734398611394056548891211977684381372755177411450856139942583877069709623113821097688094023229349171774979271131428078182191324632586754107726620634113503639610344033370678867149052863099824277410009533736125540133901831742217925949650862193595092604193239362419656342521700005384511672049628156330741515725517663082707200471487377544462926099957761053918421401521963563631927929817765068371752135364875401718612922818063040259627754805792476602430522696618415070696952006830832420319340922919973742522446017166339615666363775342774331094098683697734283043545241828194524243346183601740110212447660114411355519314087703185550722125000434116299441281502524892027159428781409587791222481701828079518913642882714054974784552000879060703921182194232464801622470383282717951899624947536507671901342581044058335233746252298240925181276716910212966724935353822581997830401272230383591683482573851279149473891383766432305320166825579243340003925717653798432129041130129106117809453777157454782094897673058013563974393529404720959830465625109097267685889859644688189980459891219832510240936251516471894232235393825679690107994994278030817013058135013264442429053349607735518145622675680982879018378341442611689976799728551075893120942041088320882570264621232186149747932812738521575450200243553315357588913208421972007580167044697901690670105727548014174310191709940446453492687098258590093963261918145480481119795615208019056658942677898452341186556555886843277937938519159949625695919123711512485887077810327104767765559144440687096099371935041582163052155749074128421993208727459095664563269437260900816553837012554809025279631987628198495667253167899910284205352278230282730654448258756823166900293521953751544616953838622771254056928491082932810806041168230478730137793657287782877396207407157281846533106617422207742249096612717828738273711641112154113577346458230453307357328408296957413899320548865197007261777474393741173984191257360120064570682245420807304416939057311747556913258749187674773560334152143818218057160891787954573317673590695989089407752933810550115721312903001156514339274658800445361525543341683628787580214068064020517708251391435844569477653118018663926190405546715929682957316135059000974169900599334220954905029314035561560390330306537124722652503714296695966892438376386388999471790177954535399974399698991509529672114906617114139104307876291028897543046621072255469836551428810825741070296122599651516757863782358217093604695553795016345354091199973399002671282440420967222083427205159707079681280480941488989072542685590423450835801507700053962307950735766485716384673640980684408243813917776019015532035711097833040800667920058082750207721364470553024750576180256800999380448735197749890074520626464173490188807125955604789763222766693982094041120070204614968099999822505386776357455655908627854336353306515494095655550465532314061366101590919755707368735557045812232271123906175204881279175812493782808798100958682037796158218024080073162072563453862789045160567143489462330124318716605006551167606874442675147985743288950239072943478633814442753970715457611761123215707396416472234934495534377584422487085889828812127943436229923725137732386037938847459041143601029905819768023233955450728361855492640972627054378314251409109841237893299987072961065819308269614849949501026198902698185029348218273487495766172334231064993805235029172427738526316933761023465588682762479957505819099776419524030502850103285016880914038052666403132838063220570887546938720087562806253788494269472222918398282205188928239554792991921362086898723774871076529745790786059875007813606660513543066417098904113453677639834411548292479258044698111165417750602095289247756048680437900882121823509612278526634899564760089616994777309009758191718959663422309894553760386070930991367215776049271974954441039539661947783927183053333491276758030143461907114995553469113638438650074987544745224402139630246113688819886802650907158973420811268580042668486457762298088271210074962700188025583936434634810548174157920973565693071250385697071305274130049187657116874404631916061273424904090333568907441827625243931438676647773460696489605974643191668420714910799677433567084201763476540685499435237875869233743688577818379514826741432085134463530023816753767990148038863771335510041866152449760137297852434484592013176832673828944262312067898116649725348085480758043608277815360941954396308881458055371374789551256440047406075939402894245984905873029005769136709206587005857416110004110633585047190992339894712098419332827184586820370490131166744023196165464504702935446025227400567789642540820227162848301986666519802386521783270211892365177675339446362228865806927672933701247350488789274900611583276203805346006672770727338756698797542478974628012897457569345795356688965590024995494378171060461942092525312149795618867520543008638969225329525776700462930595160802057715297059025568415388186509636047574418154921305121661553119653274033992156362361735693523903765207533082242823479783597198683740829784356450115509850320298178489570729741357884964163625551445740082035701717632659441723523207488325356008114361293723698542075391303296094903490621463237130625573977669109741868472961374382587389573542523637763148733896119668625367649446747737316765857525570699188448609172051786429073423646542294075883497555588834876765496416428433718204308580874720331315632116892950122237719416820687050745322328846429422555155452291696017868034142794022184880956369317021213151174842103240188336995274019221049092685328420759009164151498586876507536586679587878023699513364053399564125257872033750354212571481405142504169771923052520248603405589270247220752734517234566194355573457909442020124877347375835457070467855243121734985160639647396108833746836270612001978890352587498528594915137086946617030190516012719863134365290778667447080279183265744636055407896755900838645837360991130851785852982036090702124824512851508532532130981980412919264579763796728792462234201198416342538804879639487970036631667703989936375442733880462242029590896220434009015387383360751583309274978800452426228295492821411548298586391533747851657925105263519579375352460654639433760787427662178882256787347494222894159211716073772271535762965963849427877277096692088298560759809580391680308636904382502389513533444390266006417107967623712437438146664509484868278265813045880282278225601284659013170574319976925210639375065919495335833091316862602996214199462716820340904775831503961828005059201511621187898330609324468083664759748097697297916264263609169570789984413919253138544236662135918961703419932774684890991859695927119693773230092088136401412233443179705217830657978908785554303619086760905083608832539752151946999736204586411459827127081840409019072550906924118671532695417878404944159338850530323727602135720601503852229241448948302165799035527514007795209044777845273128516327399424222468074745280124848426909067846330001790093379268629569023282359994589879765836067209890634979463875839540538885490835422148227318257022992901019882288985416199606081831630246827519095312950916997167567109301608759671003692459400144852473173972934530078725582519663539602120441849081104299030712192654846116335299120516679380158523082864460053391281307154399524018609883029381884121486766866611127477211967776261488216609252606142422505661080633609357346420880688451512118395341849767078466514502513777767300362429732932671089593887362975823726392244903638689626564894376856639132056533418924339000856748916149125025041210594269664191765924376678681432373811711492378162057499475698959292978958121798854145759160669224342471657180960671807041921984400289177907955526354628861632428614480103220469786606509338037271006943175177026244729364031216542840603463107773152152435168700554902827434571415111117789049829311773701907982971847670498067681943994946419181206053896225535621805329317447325730238613293221907728367943368681701313286392130149287220097842728053413116997906836535251725524890406150348780241023925862932454820784013796462008913268654328256021175464578116739625074957662615186881653473428014471045281824066274565059936992809153143309915198482847706513934957627837708302264562678792084095920657946010016018694319909153838790042297231880610985542158472431309912810982679289326011422592575678454750175443815344761098020039847014040307934232338138706232904165541249402049323042159784226230398133117900689645931920619478658674455717091607576913663224466502855398336449187105282313237075375648208104444205944801390504109154702511442967869720973234821512719274753177864548639864443277231296899498225720530294306987338085054213542730198233028697322755671554622843035031318246663782908420794555205265281090948798857605142724816993168080271051296105418055573332882956699570484196939411612763808195969254699198979886331073606477765151770388846870242050918972719562938337230453883492454352322954631666643478144040013564664314016323652506838236587896751610699072865203894161251244315845818597163904830662286366511393215377680057403376132676011726841678735972454620467181828112910313335453046927064905794048651365345426612689922374769502900548056564430125255686974788227687060514600015212832963707632710010207210759357017639937848714955329704935625357407754375158203475869589712544983861880433900229399985426430713822422517364963161085654292315613574144814530195012391891010065323840139486831965828037000108673691437373310783717222534388943061438600297906454761239199399173114652686477394769830432944963764499588031344309701883797449827032599581267019147791607477868715551496728949085829065740386278316137825277088878523583699381997474492023968391475785476237660034387349482940489927585833632491869779807825192659661705129380964246185146153361875194931253340686409283390575398706436290224037071271165402731936086742401062402140559494199753549423268545750805377023303780516473756185917807715816106646794881525814676617480714668782219176015039226960914314566177544982661787811585336562103248144222030757200847458762357781310071303441965909197093210086738674700266172362147330753846442317117211886447434534573168660901430854870990144551253098049497853412618191115405966046935171169693542655938878493264405087735732066000254327461556257355338296267829381539975548846192056353828606743358386347759718779241421238737646646112432861678719334819968080569347370101788769543963553971888537791351138257007652463092796100810516594466130120875927379529810752571506026778597632848112428507402104615033850052977119782758129902427010672356779287681830701107019865393466581586105487064898510299568757040751124692026398970877609400000579103665619472062463833394069851042658741484008575474432406493092239265036816979869233334097476803876570508851954474587330826001551650785931718597558130175542890930298555250436857167267043074177005882953020239346065054535006875701594078453854140846292392407443419366087934403080740769204549382059283297609695627487019835281865204449538805305887357530901900260811358038079976050717287524186417667157031549541014213452682519946965657907426142851527116263414081922755067167349229440472201847807873525465601889301176933503673823604504656000524841620862922376096817100691535443268339089060043316638339403647532211359613839663050104072249580098261230560171502662686743591666708746731043856738810315419805321179955928597820606671605961870725062330687981645426188360228916231499493808562151607482058192055036915646455752159428804702831721850760532995536825121447912319416137984282913281216252645982786013394379219405963680979923861853709964589014846575294635473124845672397700269358645418532179826515806157390387556430092819950736499629751478337607125961264027784600093499551583197883973728732835485393619888783348041039888131054759032163973866781339893414844425159850954890812055807703726167143488541249975646985055373659191588179680557910535645340356390812674543019402459627001934992883518317330946687295007651939142776856722891451460462852038065470864542301498464985666568905811984711154409047688654130760461646623269624543584256693893348220687142515996505195748364111940292491304036411272544668351545789270574161990691809841639427764578853244446220090288512232704528176625310884737006420243682781321912348982718237436819471804101066161756776500087287661045724875088537171181410420619586884332568881691191114074103226555277174179952452345883086923043849808774106574429674554550820848993330356208098465721619187429119861235431921918410636121025872320363921012091970330330880030637843546274222536835700314419907163741247503288188465574228281510397158700524958059336504560235003117783575364761675062756878461294276237116230202176441985204240314192876996399985474796896231657700210131683210062592104219347477259122283414453111242868021977018416671820201919495987674366115760923040970772649493654962523249501469194110728234094241762117665199509658822739943042881731934453511319734501279627142384578835893275148671490874697901498949786866240290505452432364903530863866108685541585243740080419540167427053305139937888769768954356484799142471940832932982297836822535248726213710469676295310895847800403010309748971128493467259657197915250330590466454811182427881007362345168170967006251736458423568528509474196863901370533990730945212390973351860764039665514623002233897862866256155067704106277790467130458407430087557262961229483950563772242355067641291941927974808322509597484504292484635078766495201776372296306563351504299891794974848956795339505610875353548855223950908689034713592074020822392203291385983995097710129520771856444040970927868638727704574720366421765287487374063899107693384643774970177795204624393979169134878368619111680688769769004501764885035704358119865506915666312278945949729762332798663654620062723092240492633652501413214149615040241040955241383767157422085145042681653181919179542228091396087369120649434422474632499276644584417223564057307157730669310429934210397299440718103555068566717045626113709856281259402150840651861728755150930971196548712502846086757148159424736208244988689827140005045369283904191804173258018948387134652275402263856024192013963489730033424611731337770446611597791178644838275434209101933526616912329454556472198432336843241151259263237883364400069881634491257505076040859630032156151743762473459639117482128651432019908431616841514693057092375284603377435705563673385454481972985282280872154323790774524161906358227238442768859632523309636794627907420788655287948588863162537188536280797795812018446627017785766623673928137560278406782876697435464475140703593142746600376050586556623439635155282203379584959254388688714441645746477776189808732546090360665785687271188461815920216388423218976627215624922381330806889790230479816490440402714822476503864843289323622963129568032315831386738621513273946034255165815368002887792076787551177227308614784320811532429522507062433491883410888413113412053956420473380376177123943283202016314019082925960883995145695181142046110924247119289175331614265803061313321183335994330302739510732499036677150768234334771858163925391257354763197065022190620564758088977397148188816488642341563482891677342893729370157465865041095176000128474838145954895384137400717713153227645260906009290852077595441516835052413697222923249070297809282533571473152381051122640976174380364686291936793446383727015467909564449269856755105338740756967665214134443277605906690851918868998263752891417974996071058898781608375150522518936838301321122062884564003231116164716539398562564242291268922120026808949240271310951104013882127644034370985657314425209985733520347647925132960361498579324926497518355072232657706533802017984550358100032586332674991913108817131415539166060854482576342959262914999263967849805600804855976479555441944690379555001042492944550614931392020180437623749590032668444860832456338256988188375410479379997222513266265917498825474256173714246007789067698148173177362467833704343419777270272598584774145299987021062360618434874421956595814171394137142903983517485886177714103506920587890310727465245220378334402348055963340260538336990804124837859023487966977545352957128817158416042979706380009297427703061667700883892832055256984386209387504220207147461906890154571510928817075282181842531472145182567967300680115067610679370794192996969686594242354052560308275485363448570727297871379698003936372527449943158813146502370319695179577328401384429422140330422875937677504750755991467618812613114934036794381141648624478871153301192818692179625033265394057240961801029049399231165931124283955725649364325908577662356899427393081573918798308400441247990357415535258759708107798438151651534036361207456579658450449886772567857565683822798981349633472343342627050104980030565374347636673873031794772830337650213408608377307322698942958142387478118304928395150000491230818651634417614192970734966319151251056435472585900269022336401825501517488728585099122311216245475681170654989022161266882133216177600087884500072798261658097153083370095174230293502211016052806564642111316511329632971189202412353135561076310336095427270970956257714770657654552743024530868510948697113394560361919379944259228667490205831836624688492257208629574086591475785122524544939128301273369392926558643885731033215143839279195951531743714268099470343988238966804947118556922283136875624644346596796612661262186064587764227819596970067265801273040140137635688931601856312935406223698074559530862037716199643736141198341409281502657629435418783406366587245248910926384722629780894962461417834118957631997175755041497234112897473948133517794472056449236196198075406636177382351890768268238740329189155292187696287243651075003950134860426726155621506024637761394729425936659581785460933513366906903094527571354229262192236214004025729592025289436294834732540722508225109749802148012331874767240248096252758507046729876382311412781207280370989342427936236055130792923268877776337069718373523836486041309488394099476950808229520252040697929973969159107970885236146220803093379147308479743319626103524950951714623130188370982050891181676491538802908017219545343334082886387755072216721800293999785255647929628467521152709658639856968926087135488511385942459136925017961196201339536406298184263113779480163375987069835647909249595267152678787361809910483090710406516386151090121906748067900674863290871582106922075206505399993975173508175732004741975233119293797838617199395328835174258970243313975404375128195457390196553565881702358170691220260343822637283783171031611616051984211790349771923057304791000323262319608832660286118584252512594195537979063845234708852384729742319885046523469231037233086214491589181256754457746086930753455461147595739103363495057480596557838744298727973886290710564317564596146382761611231528806496803997554553387168046984406993902301940218778213482541646876802506663689732386199878939287468789770756151528187959192216303695798678902569820615245142929853248675706541717039962006197340294366034376621241939220067877621680894162328559996121006997900649379793797438109017600865652182664768035825184391321101992084378399899998985123891815908446835355781082063379864433219931736820201271990429698107924719117931487473516774097519524991414864079742184232746207840876917018125101509796969268688976743582951862240743478289889981607853700017041344732089636032773804774547145050966390951895327703455342267907859634712765046619352071234796261915589706215363827322896195582178887031109312974971648062410104081414730807881412108221688316066349486160419636620600891861456561233383887027711561718153328197457059116624276242597592860541244702927723036124625301720270480300699026831402796022478268432057631404008557543936865595164878185881924649333682276620362254770336721751567126233066709765706360252301968842748608236709003957923388631013237914024625872439867011744095179949385744399043363235530539186732502335538975693080599964703658408223530064215143635025717616614876821606001216765227185341195593140740540891972551665829358122553269240125312296182814628390878606198448584008093720995435259589857209947996441857544446038705828492851235318987029180779396969745528840440643001998487099339118653946563782938406520129607599739021015537451822637531050870839159275312973412195146960653860325764151995851980025498233497132250227641465466437551454252811723122815389949738796280791923463611117295902117202509678634478378751373269639023762266630217977549898635028748944702416232784149491811410597166456881467875015656587335697365217163379940509735726164524936861489587691170193042959740952334588387134247007298188744645039672463815773486294374518517528875505063120553005605208690404009072689391716425036833413501504575803831146760969797810523364241074908681687059656857937183530302399580747552929915669651188507897155617466214508738332712280753995713088638522033516896395708188022534498347626300632376262550933572240085161640243642101936244887681898617554929309845937939641344788696607218809091080809155396112627400591821047943231937450552554959398009443675357015556338708934650962046978339851285314210173680387658337825202074768293795323093100000871030849203538978718741916229870304676178203338476407061045538988013006029619196800660394630997108116934738447379867707292759420367726220669495893902700713807942636783213443907939004766412556218366030261183695546216426262286949892844664144965837144905619976538105112150239714662247554190607652830569339153922631033437190705969931151362009643230402289709160422405995767560759409015442736879348610003678251642584691018902039425226978431411408108144701459210514454244340479448461887607692883870801397570669344656864414537759092900966489724139254531544457623244984843727840399183564050930978335267320876180910468453097287752441605288138224989051863029910050792333332985155345250078025335207631074970380420735874474845523474729596552363785296585908060022200919945918848480391876358668658180170366480883934819223001511322043731019729183199627322065119820683252310450673783413158398475991750012419485655340260789336599018468344613918914185683699011610487176239556202950891451226485948051459625315054424557221324159699262856548588485732280119157332672242005151759086372564932897577923700567112746928726304825097762063695183690275305412458747947459812653538057754349470213367491880259329272001085330369821658500468211760265218150080785463038718658026724539643720747902353481639951968223160252890902165842777971217781654682044189567422743465148082623412952078789510141986920640756547193212476209178094297732236576995185569375171632938703779946550770892864786425750906004646891799861859487446420617023957418144845936846268819494797069502590568557660945877481833455139924592674847956884570522520834033751414675930288536954283849539476906396098803677141063302004179457893440675080536839815628590015226198809716210213323208794327899135980687221262515045870726344761650275600954353071817033264323432405541904597773400068835954033700240864568780412825606858403149383010363149284894302951325359273230463903719497833490307421545281746917048727612998362254417349741653225139620853466572675213783847528457022433355136296573078680121726060989268472757315045221175810625392989450113251056131945027313844404257265993894761519631846203398663102902551476204336558063286444061903933345709201041079987581588090109230004191514841304275146825652191034102449322866445130743743633269257928841643244409866637131372426276988332785776626043381416845651452052684022136299231613022027648310197113598610344794731302831705586575288689813520002148711082660569532618247665521959618317457489157094943853805595295572664758183870132183533771015328368250679141138270629499376959275435634651223612031562579387075946342442789223315224047311644947578706550422691949067648054183334085099253274396782537857169595309589220796034126129457894578485089043164384558583870823296460626428477671566643767438211571925402453307596312362548525707819443444804286966092741068654557849394455193317905026516291789559444079655002824552927676175689625460660618505401662780691872464450124349469436645124399452160990368190826711992275876133601022254856759726735412536178970225383463749457910543810733050787600103207889037360547521472167841392599470359273251041297511908994058265306639391210379216864765443333767524660765353415905595988389230188282194509873859050950561495070212823955502007559490235187596617577259955776930487510303992645257927959653730224855144836384568079832641282952074438682202389224145115141553628310348726655792910367245915526093564537461805562573702616719663856461633870887035027024874582431184362737506212702124872920375177663353905047177434969761165159459186366838179324416635132951628948279522221885895221080935895830104705371987518066770681356861976076545372733668314551137474358593796763269610590910875206038018312392368392778129329517745902011827224447016628097054094758007552307775118274384189713944247822028783063904386101995918994625862758756673086530354276865118038801900748232524079176783853828181963602051297307668186403868285231046698858069021851561996127991869421139658970131548334228088482969324706349059785180543088929897020214195578749974949067548013132747480837322265395344486861621109032148684549569901696511944694677735326597309874404235659794095090667882472225666727164229621244291373425884080476760332229659825733500119360079692067143491893363541468604345460494212397825300923642106037099526928599263264361910666714649539622845301943142171869620169445918990376737282366001202210975310344902902434607606876547757033470404165143717934638382695546701245112067825867191925270710267313486751209107096422735337322245482057441127365442380754055123215513715066552558741395642297816033442790040944110307467885602343939190414676704012861940813348386118382876761684128446019864064466933743529140153117913003384203726576796318032641873703713062141577056078035870637781409559768009714604296588350452658923251561745511256071012733774833463055807035082994504371090134295439158974962093564597384883333367552686240266888927487282665638944216412659090583065892591080105783790902041251845326679157115264452307543784230951328649647901707122075729734890017105333430217530027198958063122526165099067511202520635700965976392343456945814051944002140649616670893485303679337714146752362955172742552291407403434300704688890407294889573513807297259497966134098224583291797723339294827521776602437454770584754525722239249440125120046387525767127383757699634856656632014928847845554544317537575839393312874683141848432587955349753576001236253168427897767713779627264152880165651910517361654909004142700841584333272268250003898129578180642103871678742250063023959154718682827171508672168153986663662038626801022889309660050482603966501062910871032685792975774553948975680478724253351323435240380746647975851581957321312044218791631903861319782407962249867348642458681979615334704905559006605894616961195992730540129796225558310797271531990329650542816839169195910260801310151821711033485178553218912359065734178717471365227243196633296740348667088959194231746912106908533737358720635554080753732305606274101853399975182203700284150132686426784863997265636786611960947913908417912846197913325555492933793689731869104489106036185396244704853844081617152160715741414622002077387689558233394264870696376652321656494926620918328112006929577461618824055864901366326063037585111656740364668341352986864178075102809593843772649540095334013220642936554724629634696473614163638389050353135190175548094437064962581674543090647649540309897725563509051921295724326514457173721071198506303076309296773035997493865446570597717971067685330417952860382250564350049528434509091605569604846006274089009790870176743101384022360049071281392050855918432817170744618788092842435761578495830285687990671043801881798748467594939678889787373973559902656096046874906745032498204225353862361042982201048132141659191030766150134981948441616469361957163856395482810975581063825189523541221561249315271209227090845702192816181851322135281765952851892832144636988874560346938965810806028088636571495632718101695362801234841797037518332928848178272922890876309884718375617056763223726736571446389881669769365651379116736043038620754329474192882482408545976936700824568900077917429361881878952654462380529258882627204288632888100874066624843894945079669332624481432204105296990416003133615427538054917273623566745118137648954248898063397860776893782168794355794581495796791879159014448341639869937861374087654971602382779418117220813028696170178734292764124048216759468613215967750052125432173198749349598366111877636150676108143413510891577006703644620274203542501254817522654570220019656850452464101955410362949667130764929979551580657835067733737150874933714239452895763174292632789914566741901450263568017169090520452440295718545898454957162496000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Factorial of 3435 is 1878776836011803584481195566731971565661498258285339325192933679402021775398045550896145471932565999960444319221519027879657308736270470906224641297627419498583987894322904058544546559212714073116749715873391461495327540668544183318192733372621335684863110321665450076969445332036518131444593353940193465289794362037453215133290696542139638156930142523436941904088182017263828313554844472531553317099025250110933950638247374242593792342390630803702870731961395656012210892309200945575031398556961925087758236575409077657375221176556239314537433354207086990800652917451076643957700752325910254290610403138131373079577875460532747105374639485390364014543085996195957353703330106930224576077242113214283790272399326975894937792824747820174319882988301390414893109414781015701057002608620436986506843595252456736038661019532277940749797169999902981524387746815347130904269174752469626110978652864810632481459070750088956114763722371111177286352941283684772565746818534499464820766373043756185967166140561502298575745958576677886664647765326136314030932172917244131986737885096807427549924355159958104069193989889190517702027832542327568232461022002021798965596899931968653796855016362437401706391392998350745995072155535556180636380683387977280562481469330479583018055158513194867720268661830419510896362342459059425249554456293093065674970211543896015788342329839128638938691599183803050949563825863915960344695585276639683973096460679789889682783074238198641908338336246944381908379921102222103940240236652704461793090038787984202933266695395779371032240943639489917402470735577871321296286826222635829223563335703050649270449130862718646964997561319275927113715777481474658867238848560292096610284431906034552778091918658212550454572737283354879144315559662830022046371015992490212455794085347386105731421189393895516112103109914016071549315707327528885162401806108320269737006147331802359642748209181559705470360550581245770614200587817019082873367067249781949850066355267476065638298672946463058242625541835282286610735752626212519048698014578196901982864173230007648201811166284867529912699514515661229057426954115587075884461544410992388282834728896093121975981375592404510706644032440712461435419970931864258504979402461747988708435496342477647663681137656115985552013199897930618081700636960377079264259244237843806383070509594974957496793489941074456361539167860720773131522126252528119123361030619220581020738244771908047293125611187130191775300940824445496600330454912238512685006187837552615263952857445543308631035175503843956563154666836467370253071508683957787149322678309334127183608893904308651191039851753788184391005941992690188117321476709783026595664581705139513766998008348376251437341983358026531808617859619323030551672630225750778372269206636136472674827124261861316962432855602488931281689873776308798495144430512794173182633943473937302471698726425639819132397990374645534385073264661417094229922030114949748665948124081764784764502351117374555191064569421242809067969834941318973589301859865372000358837284036257160396018472696613069964733980474545438372077515194911925920535753902141653448604670612180723954320028330371482533109261038353686836610114524747734460269300342730638010732068762713640188091023965162024011165294316489619243043466045680416211993837526220020961228357960445008730276652015051556395028341745320749266161325920317670093736971384210939632984812279161595390091177501441398670279482346887925570661288051173459985303749263664622052998275766354783629900876571709651776177825574056812482558076518364374432525702037470543351486841526208205793017395386517588954079689171738777164428089314421173946416216005097045292831514243637301926364385256215649017345611785728237639925838114713951668648750755536180615496335666358391056646555219906993202547591124030010728424221915788126291702508533442670526677547580573744910631046684244285263279298740719311086746566157033188323046039907129477488623743621870380493344111773388367009229291521905343899484344185005575725158275822074584944148349351188948093112110536235442648829334493793963615655087745667908661198872051485880291684240002722270108359645922847682233083717005076617526790919196853596571712149668299731224556748053805014163281551529945237783048741602757430357279633841195698573206790689184412326454013413175303767665710437955473418677144838063081968620437206941959796872462891206988692623230059582433564988360605833422284372461066177662714194780632285987697763853591792098163177017668224483078991726949798174396914188160582277726009951297047755556159876989280209386568958687609864225808947748261368659424748473983282922520042524842348254579185717747546984570513771915482310311103207922692126190759435669270151028346758574246240072897075823510735973634834390575473630378793117275067556870724044245085977231618824149462167619410070640423765884327593913081695342414399640656355273896216516173049448717872081688976434624560431111296432025575908296899816415705546587810348933686051898584194714304034177187636827540961800491795224447824661853298916114846507940558358578097906187047572156307868971351016372508747694413878677330035365597361948584472349793367605402937730307592902882521936123952652915438476977945532194368394549154338442023323257542589543429027398801087594786149082488540452020639553723256832685922476487861062608396232291707891501677332803694611171677421784241698292627321146348085988741455621658534765684843518022229932051884238765268393933862035459581349270292407836768988293075589544357642348893936975529396891820175199218277077575348444220412286676172311004962019221864618474988715586670324079511456923322479987286032044095761195251352989767391970209632181388296281623583491306613361780898559537080078654670673496488238270056764638425843006147339453821695816707042740685438101621324592843837512398027232671409627322563161557244471330625957246426346115371127739121664090611257073352770051599441496930233028696850065997120347328908028699932250270009921246459939413077071577980605060277604895251903128174092475776665247474973088041844245009370699502268630913226539799261149994978657093122497562387045895724277791753450837981349099297645595283398700538156487871570248486269367182736610193730345599126613802836521029006881955635540812306430925608824250391727992907914348459126868829231788265053356841185560245542985887784333416788985232329269590763856223896224180576167603495185561995483467409931459553696200761264774049714139852712859900864090195860701407687706741141075116909603944747872650899457516895981967644041853937663549588473551146853872799316246337657146714549226753603574436848981180615409617454363554574978899196978344613163674664761346726655680114962938388032387216809954225533032805049491161326942545851401207115685461252224747994315065195364720020454433460525447218838808792548533197249638864933453387691069770704361737532062442704953292452106715284464009582203169266069950621973561146910350846845070823294004802197385559356040698704423901610729965779494833789661304769367933042363239169629063680939203648457800979308476754718637647377190535681429171279303025426521131053406127177370409139207095137863994407551463624091497378609360898250469410507528021296697065051723285380062987488625515139142364269307332560078724348906941692225885645438012708779853483131613787624927132401990644503852577703523608516856405617432369237775695186164050618043463848758185120453125898684441679453968276409010245971073733643939257987265458262386325268122513636649098202225145292491586847559809186270809181643126886458530076358212590533969895947924605740847592182105217932471859240067166684184695286245992401401797940519381101700399098937798990828279292480846076619991852060219083480419353717441296341332463016612587257943340352530722532433968653442672795932177889036060592434662318548109821182998968204609365388612814966050470181586794920564744830923196057182237789251754552009945963653637545888518833127351242949102122997513726565632043429218121957169073720587182875337566349470508704504333452715761378650385824840181698474712489098263163411720780781543125136040804038414630928578847773159057974734365666261582083094115339071259507092597955383324719275146569042556035211926230244261051290987687853143718149458466383741230763383787666688313493239542953398828215162704795881981174610012622365578453359357717406406649114651439060837999156026663768104728371819690101143275371810034928264647916821716749104772074199067684396917574141363478049423210375130282184291553483320297208345686876640635801294159567130162846538356788866876220544081853212943673444720885937347523669181571811203913490125956594386151971364293306502830512759198150925737096438345801571553425351689721572633026927277246334618915093511782961669765318862985973968606607151722501041872567746745229289269914700015339610053019640893949965686430494955209750911374335239966639393145527624267465814679976503399655026095162655136151596376140250229710104017146385242430642524224684421742821704023296441890155153915617575199866189951610793043291438108531219508081135573644979009566723198923662120854460224108437313567661203587381103416005314544146334682181009077448273729999258703583411557943680718919587600544253837395524322569202622058748669543172307314420231283057303448550102114290071647500414259985022972436554397994946339865742188741598940628985209587095562207166391734055302209376230219205118556307849784525271194276443952372568368462268113821068991703692085797498447104265200304939897455169255404391370133807373755126066470576560545815046942019121641662760829311287319518490536070314543697848294300553150084495408835925511897641795881078401418682249228176817873617061369095845875091938730283990689552598644520792691320816184798535734605287146715100999718921641479392138344486947134250380838431596387995636418124676508700934403325711306972567961600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Factorial of 35435 is 38658899203215125166700758381334870236043293110056086895422625762944264337323142722686755946257830250928308966524421590938457182814659743248278340660385809022600795101697244340836242397117316757443892308269833457314583864809678818568010642895798649978048920096899749030246486246929299902882419367082856840753055643421263148040699526860327935466234903776869301162600709910898984548186783800372911457212662756036522096267445673113320768954078470206563862317711384515860892336930405031850518900124816491537168755647264612858231425794704027071417872983700009819085678562237332249785591953719274467841401375574105330298770245639850022335886793936799816758871667644906288895604640518699535511660496640730935962316187403502632594485025150718314352515508235041931524788530580513850105928892049870764102435896329959408045085463982274301899733460584905699457016564059405809376792138852179015436997851959786025747735256565423160204956637993866569303599371254799046067536872935057781869391805327792497932958484510519205152349641954358979186680492397857751349359239432030417552059495720114398455322936471780098806839396360750333674401452361943554005665266509022434887909638700880701263619142020496717200307037493075940462953561580131316873068682508065016756576834360514269277257868649989916283609769226651566749909703385780992755821358652993708401157455482973866219064580165624100030783228797637777916911377537265829645064768251980450590217249565516766695968020117209638349426152405292327086222219529472464015670651216454626621056354038215897383775134126262288753032515755190651794418153154458167077386501308404850485516622781840593276907943291902293188079317452769537743377420941128700251833755438999998923237691983285124735755573943997277507582926998503694957742810332595394286031376225180548626890243393064379033649285338315107722507848824859760558543922345774549462813710818176009878004047919481107551203013015859869539606901567305745210754024530760798621525250008455883592817108340536548677410531223435131386082390156568108065290288542525921836565671616094490188687653609766976579200285855482888943829404756387909778167510378584012122313536246678696384358630734588954189283785595868930029824042152951256160973679914310681711389650125808198178692160910693448365526340089926479526072155320060766411128310780812683028463241864989818835772089820910037273116722593237528296283543205854999492821612598722439725728465501358904902569236291797728148252736668265086424273947480363084057205870740463929908855317566247322582858476836002628038767264086768886757352231270314515077327067345024179641554645089401624932684888108028586167445887104682671713930698927148160498659128701902642496917589002134814219640994149358470129959624910356786258455811994157131923513621645924903112846126985371381957629844832882638331941215107007668679288794204989793423105830844578712853580511588099705971485844558924142873759082929700522528307679333609947804997493843804084357358454322956304332472897142976004362068834419260169017851026039468229858505304978135522407758650775111807691779232124089000090548514090509905501165136446294156847307001262537666404145699910709717278002306488454414677476330035201688115948985080163541038200550668710429436962229560234586263636926386093743245575495954506509524060133058515428524279878993157096276442148053814130718781474866158426486167904501231141752273006470866116328391668463714356397604884639503260589595092865690164629030001760288262975606070826503923974688502819215128929747816699307869451434285937457696206134682562792370958644821418035603265040259462140987311627943998312544454199455826776133196378784120547188442102359668174068125416935730324960617130760058985450609002085287945572437529175268670375306032616626497668315306947005030239107933095068679736732770000578676850548340122035666923552266068476992676372904333159525604624182349136899726491680073459601342518230451583980569610533286490759462778944277778273723864960977804150733418037125893688158780097192147464501987551883722705720193780850879442532167356332867574035123724011135210895091019937178095757290772286428665770317990875098964682712485334340702627703984208076420052365510805153126740646270565724349807194049712794488627151357358217722298602119630254609762445678852318359160928437724424417189560157485617011881313762395035831617382052170292276163377287403298487149122477677200841476382164491166107984730396167415186009340943879928024641282638931905039339645751933557559038890390240603259910257033533500095501908613591547658540854688646878372002745299910919347881058904687551117423912281614837504545954410859166788521423352409936742153908537501602706764776175901363931458182713338700217786557262390537022998196604277326571375605558540725817159606297435633539425258945529266118892851025624486551646112557213619751758010504496313684068626841016554720078368774109718128928848256065636686568867898311094170435505798421048796242064803237486197515777963883076244404596594417587403353942825568469386868083177110377685049461587230421913052017612010438187578848079366223637315072371408466775736078582715337585081343822150548699192722100325942964333536035136172478812052306433672119321607735688006286903983842746747542653606960234227990497648000718248914779363292242254272770009211548447592180091969460294341275576518523235402885386418414698652142512929437440266433395041600934784689008627205484479917046642008187366242419444252623404143678238609963471418174923527741488377056195312841213293016633501681762154813665545249139759810239940777183229740412052144628263996780622021319422632756793800750895560806713347086337965701871562259090305231855215166757552173809711175826638227424977968016342242056749711607326836945315687927423039651949226038053495309174535432198592128880738697791342837789894817996338698466163441545345737381727316742915409632762786418389199281409714848657854944480101771540411628169740476147270716937211190055913580839502984813958784437173260324480258257872373561620344006484035788649827663779921731392366291876037562061486034198064156058998375112246564402878215561101444270990793460704629048190180578258736169934771809646069459405188518454586345408886771411925546030447312179196773224187190763804881739668698515389380499444686269465968130935279468669744652154890483859179122043630145210539459176882940480517058967174811535348992363909956162444626357688460203374659227897347032618495019900062265945360551437604339896681384424593308478968339815852098047052455511811726612625328753074269663413970690336559954018657764614417255940286564181070017375280620269932594110318990191452401750061969597950252686436384687283620162301506481177991106002570403245649036100007283357659399078423070012447098822005017966093099297705586931228355811014401750715550736337869474654607063454485922597499558751541405154283600773430150835466618459423607846265544304515131877810631874833183706606672472535363150077901961074611108280105596731195806181538632610379735127262729177701202628743108014014556353217248566543206157172911329048310260581338429402278157991011962491620639273627965156665038158509139944765196676939212232037443867543980306402317566024118638735219029174243625442440917535355982740046006405163949493752735398848998623327197180495135969227055907480542108528216905642457195514166140881132883244909161389917896155595497984042804858528202312074319007761827204660645283359226959320784694853578124629714836605714607476978331031547536141214627224972594166720631303402543099939539952306479033744028242781638847651825346265630195137623879098931692213363718963367734110403682916376090593244536671002482419269152978349242152441624743614278268497111650513249744326849834670527245051819722427212748624644370650780673162581693391684355256969382607140568495750735981088534484368929896172465884450133229194257925909779848015645360601095704967025026718419436153621534445235557926293229571176819410738482619206489695937373617474273962387760831785885492231676327226313531382674458998961592263757485796271845810306826593361628559275076190651184468706578947089798104926890678200331681311201764884443124684150020734802634243232752584303713425930304523792545072416943479742258353565252265474883122674739206170636148904588123609342995464561524360355757987625547070548451154732358156573620924263433453861196786652831319019173009323112391320051837706305668935273111243705101756684896438752384349297297968898320390645037739131166193671795478427350635088782729533801733826817961010922841995996776812669128929628480688871090162063095382549829683752878723350745355885865857123274960121989950010654853286769021743591867154188130178454390698182535703341977253293548074762738862132187906949919959498274490474568511347065186834187154371417128776994078425510289700547306629891000755591227974887366740535922356537252550982589698923093062666829233678312766731027978760668587899678467519562898214465318307385910047278147155568104311549844763626470522808552494068190783591075782962544393476236624784369345734715975436749148392752732831643298863880502253650252317188120150361479366823485931812937089945743940038468441981515509574759458077468407818334047127469518749801920971174280665798574679918601455647132549191218084567294797926133786932813614161303525053079765251890021979775554037281949578501607010691175987962032622867136870095633929071305880259289294634991887604610287228880201102545735352151187873453795649966885983952923168854248165572627826885447857889904923432790381084260071551287888256349459226447537900973452718441002549059486408305501640401276501935843108221986493355050289285238395471175570727021358713905362373990198427391157922997526781702959200698315761069623876813229660924552455946659595284397442879431036104212733134835761507546095403825589847585798666834688676661474165646801908477645038003590124154068985135052082290024914662270466924594194462085839928968711510551076841369926068540607679795527377323011274871786951613666475774292256414241633093070837421385405585072214714679499524325164371461659227147152214941635487197138307052498773258604354597367745646887133806577806958285801550162523024408050138809821063167299347966413612028302904243661662845351771701718944839420676109961659466531614623636029086976459130421581241365087013110366697047607976756990478827790187407348193225085019598486421053266929219247808545348169888376024938802504132106630404812672890535514679781359155001819538672027765383492218279531083800178225232632028121706481964679378634572098726410250779039787696511318715775355515952268803232718874408457861080790585676083251758375008958506915463610539351062207667272745961643719939887414188131392081786241684358932326317916368337870415181757385971685037540162716129362699593235800914671538458833424280483377686782269779000435240396529758331201761860831648106237153982444243038399955647360711922926876208098045620729233931040869571704431647294716219655890913305737638250047536653417755642775666014364797793919550914744992028646161137149398774793042102978595812050361929837430100063526316922914942739533681831236108845735167438750403491357838851579025936349665143951358857423042329389367892510326228171734031217728901509276663581209857632385744826363182529036595637154365029906708533704765808862321320206283955472228688543884358939403932422318370572294061551203467835250623254969952607448281264246645156488902532060917378927992452103243531228781508452990939317703338509450569090526390890036711550366490466580628310708095910775922623270115078729229414311298472833616045977328286920537903842999305854532141870053706713436151394481812011105547052452030509838986582478173900385808942952517109151987668954867414902876715617917652547154091774194687146026081085611180775251006140801148239352547901293363512773693937728887244282598225316640542533644565579615889660015213848644587164259685254946627339791420111905232299943250735164565832901619355141163312618205935692617587350358614465043226859680152048955778452090271016396434681170131260869951783924943055812647942155006184023834781362415205240149952085126067099766092176632641989105239751954757771985577628669861258105417447567802219763406835070632556050366756099258250453344313929146606159771893694672322791344960873017309886179449199696237410677076364994165873689102192121290009683567774608120592582071354395519438499550210516471504337049629537332563775008244581466392393294695514864702696760554306934526558249218901966951431712299132160580896295381612778024690484650359148053569888472758518577668823827369241315517088861456207516244533216593162755778552003529154854381426081659550885954276940276130507975005217773904764179226275287942328918739373281712967306024118934016047721802775927910645741767599186512626969733318239076524758344325837046343760939454842610574192959303847069308501063771775959675110473426899475906787551715901000249340840636846423572330890228034552079380265476217078143017986109886846066682151883775164029246898583902543000287400660953337708559651479749907745383924400171881523476266974528818954307041433617370521000789329925588723766194947824181609324981147966763460452488683880249758649022754990532252987237923355679784374125843302458197224578397508573957994642899302423117298765383319560414876169410511684703169476251044030344215123721450345978067565850074680453454319069872963156770179990742383442159075754540839307079282570275664363012075442969286265263527789053747326842894914489623655257378640583848235599124652888351392835022580067245421189414357686278719354364614253563323257857582423088857631786842952276003199238808168259705109228073701293438287613490125858076562403308087053568731072370235636298539417257725922704652042070946781426792926632451171322748372377225137108400609529615326423856950127444443078990386226120173200366931847173243372355743628976375288924643975709810974298991361846157262078498798557844515663536546295877538143444683825253238469171004202235371617011411928242523411601173292402704668727557036378915042183129094652864745596897205237106030137586048442211111742297837196863629369068302973235694823788666652494432764148846544801408648406890023054509627011012859071969101005670875987813058399774715850498514329355867488088848583661173392716455342541515042421840437058118384591536093537389068969579942957226983957000129760709814361967726759600483994937290767595063189950833291594221677815175493642561174443499017061416937499311365271485430068967165335174127182103049120583472089873045051563218912436219578674821214903778511387907558945039187414236743856707658266443518292386968300117175618686381202975553346104957655424370769525570102163570780216238073888762077381659681860006765598257214021312356359716218512369969036027925052463216932784731039596308222580955063999372466467941313447516409122633081256511195666603988955677846375330387925995047426204597113654970914683494845411285240388315978684132908699726415988722002089438871557366989285332663811498836728077653718992359668860607476510856872566037465611626120567369523879787367734056875517007981269397561812071480547792878077265513265294639651180751041680486626143472970575862243825826969669887259784806401003442251280949537783104731711843774712070391487966153606131428520235798408703244198115405730474612401602499601554180436408125484474668556440244588010257882943461028777119743192353918833450115220139275431416124183692000510076444003579716998467231103979025230714146831390816588542801185388353384158699669674534736331524006065518826275749159631450705909696195303584548815787782927391365565921524409060607099468687036788633287932795460447498701192606151180386911934726536193045098835455788858520686135524308866061199057358467318638934976110279232121295499340641760882140431269961972979767594882453592887304636381074579172699178808321401482874054540996888947714071012840465952144510797151802430846303962651184862687233255675781281378783954859734383853073263016096572345141245471773908806771937172301104018703059116477307517982298980132957857622541834088375770119430136614838990758493965815318061859730984842886007243923698873397638328393921417601219558680299577726152165582481420313556749929559425937690610009557071045094776925248029630207721798314233831437629824111299102454031183306550724434412961450165764948149182877067590211657949683275444282121268935469485570165535623577050044685735288399779045827551202363933408046590295157047718822171351821592898162236382601367550558399027176558878811577338357249722490873924829923158402664763181921983031397660801519046844834707218421315962753831754193690743149634699810563913320068888527130358952756511191274809642895660733806691675826005775776946945254091553711689407434998043469820900283205407596591624120012420550301397292733561599582610276806976937486742117515619193283879437060251853247404384323767699648311804436668684179952829940942309825439354184554217957756226979750315371099522282101374954964463505286346926573960614578284119327944818584383905065591306474562191258555075289459159703892178210790057773224262956955271986818586495080206031263211827978306706763792013022355583219433642882123705355776247352645296141100173535559497539457355683616110561239231148616064532937131791150686307529839969020867009254066232077894678568051941767429814436914651695410733777413742721368139808140064554944429339701182377192626482522492680685388364028776374199333963954348103944420955209041714715653391964753436147350309097470052494645539506760642740701442024588074589458293522023070649252223266010978134508666001095228838427149237075577825630342201240119573292777312246544486545742997132301679773045476272853173415593253195740305163217512831441778018521130552898690579875923893053084092691921499566933283122040152287865938917614479650338176145652927495353306247747677087916883212786964467328703952235357152432801337634890323878320545632994140388254018538517518339877840583477186385717581273071640921530596038609809093091386125961453026634959302791391930629423135112024136824074510738505157902703360639600953350723511684442768002874792241909764644818385457340112532937252141612558754142885977240195561851609942815717925192952865043716888435191416323913249514052162599885548202841157521757203019494707659758064723207673884813297321042335358233317872600829111382827075832440104650971177550001878277474557078519253720980746267161565725268723045040165559031677732793954502754823489419853015021099451056875464847906054537053065756127136049532674818428160337053431978853647192232303835359920812927143918492242193846148556272503487522905029295493524001334135662490735520355045293049000319013031197094156955781251218168326045850777877899377909557477880557124410814829099870780402273796244838260128844597379454127699853059025418609703881283860500156920464217354227529050277750278485641574380881092528869375191047162208064287757715379860133667324554053394328295344621771258376398170858145413133535576418389912734438854899719699878363391927679982592745528599131923524018339644579131297404102272639861855723662607589301942320134625809472333675033781359417014390463040207877621977286723624515495879560106573752473514302737524896204465709915149760930070297490299150707287379034692964937717937158639441900390927185726650758819889457827299924815104604296678076157510390724382818111791180384147318500929470335191521837396643670043444282265705829496391150544545259892597730225659905850944607067436781038327354453668391098937169979461145777695032323584373512425953240249894408181163056780081404110940273386260742264587825273319744625820686635570311426907186466257978167648425932035580599192899931269767452829937510853377819016474908715224889360611246302471033772421707174144791134955544959140018490899161711250268516281771046186888385838335685310713372579475007186830143521885148335759536641303431036562652047622628543930235571392704830880308639994413398360729107718214273340958202151253299489365196200847490573429948605994174608612981714324155142220328163483373985377606284979803132145783374273505693578984758229663959944864868571864174198839566109493627235690258755097859727477623142728041995554238632962063475101558429067030713321317508484770737928151654340593807204425906960843107244079593739687484577354080568427592043611616027681769375932952635480630851170907235016447122018851814598310985639807866494114990500188787343304540394521445306598650439967244677370035566497599426312639275483130171544238179892576846972697057736358794560277479894464598563496118851788884603614414543239941465871112718167625591146668726546787890706033584758034942632844520439404316800293459568501157578100043984565096987905593759164345302863646656728016609836382918350245918773931870424630340884911024317584055935058345573372959333650799064960508988555227542215192379373342730677887608136584259399656284129014524771087799712359883838166757268872625238614710242029421145958087111144416427920072283078160360347242357401485275136275127847853850096208524864850793868813247758875718420392400799274151191263564569169479641697093088976028014272408726605098388903308393937693568595889668653020709697172887528914254809295944596697701233468934559859456531808540615702827991665864219841115423571919633637153169056514263333149847359459924244597315040768441629702572791658195325941103821401468998649959937597850782042606846807636089661747552676690323103352494789280977482790851491794202932457760677852593172766555606484071240417598625227287657803581544748973646994089557704797399211378606217868265228115014408604161789865137639771276880461708913523643049807024675135997537377274960758054103529630425736259034690638893495264870791277763346181992912626769813112875383676412235626649206773077515111107774380650674536841282202187347897921117466029870052644794885961941080214226859480703913016765893608800013411045848433194606145243080869762675568325752322984513924665420567297216403303955425886980271696442939249798320803181418415464235671385016707458820375108390496385065537678267839498927628434845171798942789170068919148182253108802661956112255419104030837601361192455016468046713159114774639656986693418944862068645066783763938323224811185716078998920932832681854494629835601589532375087622337135727047873604403153099911011599177942859284179613182200924793897026183240049788353863585828743428539178762003852278808382420418805602768593342878207776290839207733791816924564632497037165103891620244161232519159249108287992438418819024280741374319237604265508718750828451234922705298004104499085291207250655930297766996681304266268564908827703820125014349431119894794708848339621621583206294191652446840652987914120767134053723909286544037334185788806283063853660383222466337305480406784029551828253655899529303740314585098058188246890597891525536280447506062301332135187019697471206087071933976173258435028668475469924366563063184635279060292220605842300270934494809991713062797668950153614807146713926091746552837983565201692753991794541314223044721473573178515055534881203963155986305362846177043772881698343983495855734381439783600846910485610288525160167306421091451611288851576770877955371908934537848949546485966378605073237580679617239626034881572720502689285448202618683557724024650736855843753463259454347132592747964872354440187874042201683992687543809459780900235698907923482280502179721524249367613885804848782520989737199472367807241044771465503269850453833383207316890141153278367040576410471763197205346717396451881751724241973565875499681756772018163084177843218897143340055491684596807877694861788235827749500465645710438216575140559433119071688712922010705475399209803424658543178102593758320006860013552914949738327161274350950681458681622515024917618106499719505489921822259709682085813218188183384264936739268117246300787675083289031846723862063771255890891450732028067922052759595354848429423990950993954174726848491741620904437856409052058441332055576008518905223892391191140413725282717362528799152357871973331193682886362889589118577224660610637789378820974406893296269086242811247039492016725319123303775888731487041132175071506082538063200309907403641947135946211465771530126116721350203820327550274260392252210103205961103537933997049638082728263140162050603542460098696906277784249224930536130093065705674485906683605352882145480058602817224009905450126696114989109681335759300823851066323610254637608278435378277579868334376322027614024828975055657207840204392772191222126365353703142998219739322750234915671175286240980489410107086524537893388380328520286878974280374461167048182273799823492471825447576256181532915672539921963476195596557732791521069193694338264485736658610980003878071931084467634835848053852955776008555259327518348978698171458427934765201411627728880305664997358914702104235337065645756714028651466629791384909543949650668792900930989767538884685431833522209589227124331787568385074141313455390974621191024320731850609900876667191005511823899417856476256671403290196008474557388645716452925782099366280052096424850004280582336962511336539868724659674895279564526709983639197006984756758757652812056983781346316305234809418299127753083985590404310307423640761402791106588523202532887414810454817570528856051132833917020234444190042363776850032248155098923389094749291561468101321470988365862390833356160277626466419259148041291982988903740052601021497745531688028543856695001408004376945203013101394630923244645070594227286684536273287919110861043233806696420499323403369626956106023205302927587121201894440009826239159749518769985850907872001944432754758274878121117664214751586005815464854293556730867264925239855114634883970670195605174246220819878942220141455071907707284739856804840707364164895604513536109621937480825808543450841282961358981711462411290925390492683199384936302970914978986869425739565610557792927428891451004952695862267107884009578640667185842973186771162591427511103918166526961757204564672969132435503818003907082445761187584313583404909846507328960437878881463935571978468726811328311310862374847370977693007938257640638841489682256299522171781654918686963038429966660806059204444995910206661127100835420077311262522302590383760076081187979408626801790257905594640282436569576243524102068465215927519750341789642209466491568434625163183662147020878834840311570576054061405824317244861694162998665918682036172527628102359199121500778733785557494778883876557160859809721391052790050908243283898025047190117697064381370207140103365141758040827484065674932186946293205806408206759852180074391709180710165723760920611500983977051007478282818738223077724722413177416263706791838710015045246329633226149001142855337807246515157866116254841193056159921657217417714740802757294091613868689281491132654690346316153944216808897234421596467996941021615123462422391584741076645689292219646195292629548798050514655262501682947123874103563715373337415180835789388219498652388005985394620339595534246578942452096982396428833144442436251082595034239273945968479561546732081282897342224185119566609804923819060086728465946932245208475968368865169241458033186816171414237638369921064141233014615871155262714220501611872774769856004733908577441854296846265647403911734392499938426597580174904314931462664762507706276982764045790205211460782897676069325152486520178676289959759603089211315878645022798029741337369451551549512598546476705655241040355367141924617172332830758287063511745266769242276133941723967299633633886953283426601710856648951381900583759417896904241144253217418597328259653344222111118449308741113043694818725325288369340110299733693524968999358850319038761271634525571580004191506144043835853725315554002457896869960956218043923956316321001633798123062939925859996873130331608236769788384812010112747042527957098435353073571340481159247309757446275244876230852828321183014613344326806686290022824475335156810572700482298485256703266347159984160900634980253875084003233040621833991735689095394858647583368348597421020969827985583618672092489725126612008311237639728258291337941069986386963414685044286084514597150467417134279766664130134318865919959069296851740548777610766142280934544216742480847094251816889041911710038067078470758647062631479294213290924640465188867207473304618923366334074658393447766933163576331617772670943364471240417139940037010390512328796501974145658805776187832166791686642786396431964242772834024734859741660583835730820433417896678665456680723606334348050515752575201532760817205074532541720152148027299220621286221212635985124440588734250776151616523279479759927318708769611847623871047237558495143684378380009102549036459713257772925671756660839568732229748433620077958337388408650208994584345459008699810107673690607795402512362885774462765060533917566168522704771680195690945419607109515317069356648827643461750013544131090747612683017896299945080727635424603558590580386124282697884690305267093904058784000102043922705548493335494927506724743799632786767060310926250990995626706636354974010489063111683762944710875641072915510407424268581722323552388225257289712980906212083697297276295417356840076307654690911589266374297821551919537518058019421345954696394930351457945532118568401632607869801579145066147418068110776405707172692162493221390217180509875637060549605419309900838107348317119450312105116281891969291775428378494764131114312718065478935442398475747457898980246941545670153973816250576915606210456778886963929941237035437201239669032387558832288140080639506276779415787489452234427830430858633073559726328698555777582093341776402419737470854011369739082560284535273973667408766092931361251912028088233044179854116698406081485886780433608860963138216048074228558294569981379416133198045052081233288872282476309143892406487764529936756974407797251112117398232860957162010071304286057630855593729200558715072599422148007746173267535748038621197875191529486068010985054405976906115493495189837310980857773590653400773330829046008337467854207428263452096375599596731403520346604919776484935858850650067261129752823285406686538831292078610757914555859781373770870366376938583976823705940917682459015214892712747058177147963298510427453841832670716906385999602412974786474583174470723509930195248835506525455356483889858171063191172540913192405336468325503243894846758639802172510589323076191907041887153749667666047724975749410028854425067596075238498909493829086117931028523464426619264234135371849281062686080862187992587625653673602945765671152729784529882316484339750570845100398901725287852787543180931318745989581507391548612381642819122473841003687140330376574672369298614013707895210842033034386250347060125935354997097165025530053315947709530886007124395869117187296371455070634167905083405458473289317043923774209086910505405300771781759053920541231221139218484640904690488321754461793853579897560029883123849912889159416225799792259760382632510944560363662841685430134481538954754699928154590660254741381659652944288605895492689628083009082343823358430179325842900335711432881399771318359093674365560852782242802757675333128922779930971393271197730299502962253037764826428865033460205294310019744680971772669526469409350527447811331179375549949734872796296265011120117181158636077001768671445826106276966926063608842529348137973485504902244057457983982482455897311348317545696338719805339853290466954152392059760501470827484008491976668592078207590549619861911034289385304832931469433772476817496236482647674235206663499358825990894807660924397879474193974155963744867001810437123773000030252595453540720008227707088685039700347840010815693207422599663906820103041948275518383409252869741695090553090165703806564008223061062319476805684694758661215292475387576495092217524600751548291359241512335850452637063616077643551036608484390951923412275149331783211051690247734707234787900123222082091890412665837717624493106756193476484272599868592930496255510085917412029149098191316830450318551292109246709179065049920718109102587058909735002776460773038280693889064079405918825510145894396812725424172820526504058585965362445958066259990069383642540568793329634306032497197185276067068665219060457694764778868030777013224135096489492785680452558558906621007151740324266713035391230542544768970774830709571279084640376989929627541732702162950518221816448668900155947410734932811810064269536714106975126785662704155162517776725369554207528566788697351923646981531792203651610105863742874087498139964764109928414124516444981554774924194207896990080133460271628159881334922060018675536096141269848150528900157858793199467107879983751705328871157272035854813405053410183166967019203230728890769227216090740020288522126383421455926622415436705611492117078212724415882974355766176015205847785141953780576346684566842638497397350957939289772516273535149879744509540978215073591951200032414303827906782274463033297694568231766037798525961313194102761527397654798255726573984230107312107816980867291310742096022150106707490686951753440550618420636093702505032955502679240668175623117327341485113825523563069275902204380779303340444312794585678653117971741580268425438301361940876751000230723104431433016256538514956675192426222961166903238226079368733765749551565138596651177520036585981848475636982120041165558592382758479604961089794247401051398495539545207699208148403641425051115667897160370074516972187113461926570669571552579761976645997020109893419435424793065361668059680407395329317518432258364169351008952417415219303475114961027162497810721123215136358026397041471574839909471913207900543878715336038810706851734000235191430796477955826443070108729678078273385548545213675977044819585057999747038995112371318676611661417829686964684751395568294211858182103153869022421466879496081314026524788330120878334610453211532110974498840878235176434944023560958444968923083472723391659190660754452806905707247360054148887779019084625619925095982541858657936371711187537000681690794758401950014494639314104352065201616137865302383714036100349491415817784563742581923593566843505446576443324017910256147166379725615270655936020170179263701351199230526994764617490084942324046612587795209549852632787983244474465872916103959302326967062891227124253433100613705353595267592524099672223938516509196784783341943780897725014851741517889178369435967296641971535597994068099087453913243605274462998518840112327697276411452262841889781624799659237926235038972414512707433876979660652809786585588823673089975124784610497913189457506704757988943498250762157514268546951620120233899952920863067154660565725303147812393903757820901469863956393081601593779723887606968045180202737299476583194467039807578619367032296772013681567373768265843506960046105129398493013011337421834058303516180480467304145990127415729645218854739961504397256119154155994920591215107846391925440994863899910400595423183543529367172818508865027170500774115571146951916308806690943030495439684056970172919169887028052446757206961783892849694735732918315707457431812518283877718408138199080362019859596496646306250957651712073480539943502619742428342106480827699464373565730357853473220418227708035074334595146744523138479635384241489461103725112633370664726605014687975881890188474781528748184797742403243963412352959421550362387344846768071959248591189942465122110916003824425784289594283606768858882313467704345588023131161681911225585965908932590517114925164552679062102130763512602923086217830462447069013085228349364165153514126214921834622429495892446815213802909588735429671672390010557176804078070660146761213492970188259106071917194951720385638704442360772392717866381136259099711173954542006359561212755417882493846733803316668940212424630307806197072121621877516115900342331079454864271199515810965006086075020575986196837858579405199003434738804680767309467472318549161473831089719208495701263552811244899344474663027859964369745381234376449236716818707779732976036331837067082371406118110799818123014386559450967653573595020859495650460409549147211602683842405127805575806464564693342119651021871789732084847533185136892901289877930501806767752994856140555715172118327742779048222899927275960112353892596818194878633587324535604633076333088048569725595831121321528238386511402896438443465449216328108217550894400540684557366121998202152313375652317050479328010316883357185287127220107866498620329329662677871678898471558033420136458978891353414803595604499808946362826425332675253188955973424052264637724418071239785797972700897660772154204710287857599710288823255027636213914228233642876827901608834888087415019967233505451948928713032307100245292708545783911218735981657149614923534052713890465510714656627288451557775076831865492278796012049777121891755907507791012202723019560283818858438469885079573941611882060858800746572756301499189200570524281914780936604861104377976623702081654332626494563244252392462772719649506425639389866075332208969539491057599119990228228884594133013251491765944266871753127041514595031694422164320946203247657614922860952520759178648032057060551824355444370906559085619110387187890014763389459042610662138339877337704835698603491615660337061339150423421279596801526559677580847175579013457853465037092460708834025729413219572856580862623768332306845802489323387915654170298241389090464837275459264912426518684306019443335183684751677043570864150833078256066541926938775988493414553100539308468627859756683164780797920940056994965767003917487643449378997597388458015444948120158799155771418481890400071998201090446043155393157353314906667793283460904839237211045045647341412734013081761716499582263971930742417057642966415309670286810360491422102293136546769854687905943728982690621444820560731880520558804571822040227295635548626189094219248745981143328596583276198489351941149737222306562859665041290229159559762055056506256329005585635265088327156739779657230432837295735423643039355971284089691439253901032605378710397064517734131332942923994398346840063261027117437843268769411711119608754709926023389222119820088166679593195379831977974499395054852783486557887956211209076432341974842384799012214405521595290525343959390460617178115927756737613202208816930729289539423005868818637745918354333144495554870790084626297951077320088545808017806118916322839410917837816446125064735415886239289674160305784850438381379904270298956920378082020099081870367806169539642537814998439003539612184764455426908665215549424316674410444137967267395407189954806766432609564879819019896519952912744719748988208661989933083220538913292030089790602066017123866191297315103939242621863286617318253319578487127052800380994149986152130170995540083354083672786083324313208190640669947146437534859494108510503553296662804493041330218972168052029719141801566807284218564338212236759458600361370028908184475482432880760021369188880169526900828758352481765716190303384064192402237399337662935117877357565230909997851663907106114508843638402765095748918574156504385724228378957831291866938392889854732034140851574794406249199666427115142396366261905421343198768622837242164184265536644041352341225200617890481090567109686638192051466582969732844076110844164209592943449787811601784570091181636650252643725150691557454492939869308556140659993787525279222121648215408013164483839693743712016674543356641434990099530969712517719933915230349581916277835657807333956168271232589921624521578666116473966429979031416052044187454033374227270260522660016954429839309891554311106983108296776862189567071977395355947624357660379961332255828108092316854188591318808483659473987501154882817492462019099555838494848714389457549549740207588797979907617975934956320577998145347386620273434018385027487211988960714622079231662826168449811634918351541925857529703234615522461067218874010447218784429905483679004337598812851851929510830761457072058472921699863016118671116783853854665768214972992520796849240109609901549501800240555201775259089947310053260401022520219420119993535166919659072422068045075275302983691889260228713139664323568644657947485526796403688917950528994336860749377305066890463446887924237240958806633069364293532704928371017406961048031065333153921081823764842057786652064501714143775352712061552526901055489695623701976695623965434570890594443253244869670007351667451910792939265149573768457669764785706005919607606800515853182699369043718969063223733562041278135690022046073658907965083638472014661464247348390643339492839748098820886236168094642144019832089789592262219135703518950415730157964770910762752417414597174855793960132956934776877165961974308750077759936819609437172224556062850525300877841501613235421174456453947117652204297506550236862799490219779592689090382441258902865488774107755927922410740209737721812587262931150571589307453185245030386059057299355656273653587950122647748872647774954869998850407507881825839940766634844461447028252022292765626635877056742055949492791693181558393208705223774879112596777348678413400347030531390539381705946713663404847388657833966143053822002087677213738283443807050295061689455011435881449585903235707256131028605125369335176972175441575742113916087419661449198238082123394567856620737249875946970735864662134257665639320922332423567186805225080174798785650097404188379875540744066123081392848096407486579129490959976848826217529247286270501857424226260560081946097320991655238374987123916027967938681364052909577200528218100631773965430374665018263405608443029311858894172186631079288401752129311863571116554262468814965997655294524873298062900795599499488316550276928215471299402848001739367471043233047970633851576184749341723695989088642333722815455862265167561370762086721450442927358093458186256911731675467776065377002603719126146455622646796266807664728213347107289047727473898240270136186905088727514903374274735323620793741299318849354579472584552514431834880561055010651025644810519316088464377768453338494452611939675880980813813567439227045533813813482539947151328833564648779626706314943087273880977596371432344279879499651823609384905213996323072076721191669670751717415845229996234347402584228175501616712499100207856081972815146640543079703656824502352254313872265418427545438814811815209020716204314920731287524950007100469611487179082028512316288138025848223235257623381822727222537316166625523869772131242132154642273140562919944565276846738580916489168365650988975236921379451201100499953342302671904884204961568917841180283117561121474023032422829097062203709087346734651226965854348653452377817652087540582044615833797448779420778255125562453239167880258647638935073218152464806046831872502839078646694564343159201361063582631892524608084772455292231165855714878553544330783405088579493931838550812076948674264238824062010079524106255417178948111118830968173013878210037355417226145699069361404965401548237819787945708197267925364398213262597666283928301410923191966206100475729428711168548157507602803344159901132974284440040982856001325495018266197394994065103858256793911300979243464934207188181338259966319689533910077234237237399472963534213080825306029062283487734446277867089176948285532144588839704264205869884838631285377290248559835443505096240962637434237390393059214651489055849540747098147977237947853210295209288994355581355425350376959020607349949733350669373210531664496036297086699660636178408851069330748519449549477071609156368225212914326357567883259053411845476055933185170769915451274599223044829996627695045360765490301018886199319650089544784216943271051585165843250727515669108571106246452900554252717707325096970705144531801312749638946469278476706626470391774016726666694931313007559264661459577844989752854727887798459383643350605923963633002200254453818535796707485170071848947413677510888629430447823332781451008369595238171886913178349012473270562272600929823279682876307766523304285724658121075172085668146638704469761618284333248822337132600568466016644728387688016689960791365468728099341401832852219840128857582000463719099399620053267207960516745059148070786652631967758352674291693675666948872751077463118545273720667073260440315435163470259042677631085581292431395458283153188153676576315411911702764694454198101106703550248628018038851862577713184947847081374735109635767675057024602904391219722084872417733290102951387724389414526956162622770019825157256330318042523747587299008867550915513487884412205305212874615452732157984301787464271242065328318014727582059731229058090807451163516713770832624157818818216059150529549712189095489242548234937287466735872252071182891055659923544107245534853468208708179023937150468171836474025200671555344626061456934241219282036771059267962535280652573051488533410138320874504460748959451045313175738344109073607940370714918784233173776259613403764138840773260813081828502640904629219210547673771598302727415529174394421766549808497612832230291651989012491132382896902547307652378519499666866636068183593926735422454067865103159711606821845606527995093966761288961779345649207987527943223355640083769874170726186175132289472927181271403564556729958688251197440684452847915480304406354335888530430345351759284326817131790890131354436502587921547962444411413623360014688165688473387002160644703636630161275114586197266090079931222270900787942686739006950528736713783360088041912753105065531742372480823500263236316394046168735882732114130933621731179909831454507887169033225136070182238011882351909964123556190206822304146372690913411166707093695528900965900105124503617533501694590615281392252575033334276768566845212696216983116008679381830625155560983639909099647080520476743435999198943639241463556842712996404427159824395288132858511308784889517438449987104004708907254630591525927674820058078806038933088726814130220038323683995671279758616736194228906979028469384797209180087050880693639115936268124162612294239088872300163074020282064204132013933038721824341548410672499772048373007134068557444469427534420051798432774944167932417117752079540048123401483850515421273128924724694507480999951739169358761562758615144762248065237527239107225737132144990227757950548850508753540092020102296230452883451829629180637639928217994403640270482262626158468051309606418729106914198671170316626928949070814898542929666903468783527646717634911322553527531915641857955687690497593170081606230310420358845749300012378946703604526254190251841273280965342100010061987671877894074281414733914573690658308844165810478971257578857596458577982777747504462225898183078394352383483754917802884945987794759167008894221463166427498227837097752848251555373870309069415548219060908361402301490855608219501322290076028255769238055577990826287738183519048904720661858072180157080338896242541688877499413387896430154092827389101173492457378381315781062845733828562827551717651702697196109346002222530394604744721324208235015759417533419371965563909547963722002242377037609412640929262385156893341744864207017602963919782424466397356076783449750732686235217792193112287570923694357873469622678739181166012505453656263539666665573990978545614773326904632494478815294194081254690300043038680987664129047198611537882053644152161793817867171230677963343212490400045601679311613361150576737785362916290784019466373238264477065956414997823833973785853708654903032685886819140280272405299757268019055454544525882946908584427995651748852359309415575338614282392601602142626293739158958505624723258383530538636007191289009333718904936931026823459546000966533404819022412498914831575471571018614533754088344791986179246097134797537354250724784808773384282983908118552775752779337100352656147663822182845032006535493394361793628468755587102056935350402336274775612972538474626307869737732988389244286672861648646547323940917783541358326934962252795501164798366945002920643457272612049702070140415041711120759654725701610233880685251135532535362837520877462429007221488143288443683453398186599025512766578601619668118957281933695514223316391830523666746016623445418990233636613029623323381194646626378612518114051840115102665397071520194728475988533704649076627158991237382192595084121288756805085326375691401079936266771731229511247953157658028018807979942900689935854160722736514071227134645439253912217486641953232698332334512603420177090545903191457806873627403840056963805644768575394392208821115071088820037746235610703361989147024606834604103354339021687377692159104787262965230925588194489307782081629051690756683054288203157205391169957288520148732210372730727306095867504481435999186273525080612821020008969547875619221446322447303314470414009409819849243495278484272374063483734218932525913309533573168329511343882129789983911663724575099173054680197965002780531683238460457274190587761237947331564465446840983233245988479609420717429535396804480943351167408826949936083839678471893956244901244702192354933950187365350558019616168481141746512942699440429237825100226016544908653767230132741110118704078220532035341726775587048449885272407039416355404223055235022256642857556211994217133827096345662529918399725514113621704669996026394667495239810317338593364004197613870446579908109232945541106491892724541353398980345157913407163015999539859828018976729780056769640520909150160197248599218939032768185298394513534122256538188485036444699732380832633768422386775884749432914879630084677742885238697807598293222257788853908160965097740014086772788466685196608750213423856767235146581226819013966892959908012691310877997611270329150138271825416895597375808743601475989958943613772671423983419582852035398525855691359075474272835494189856397662297463587071187132037517374282697542692165477366509170740450391044168398640725406783779650612063974755037643913453728355710406761097074544560812397690287383576059952255271575538031548247962644407836190743963151456503132001273875256391426475408386970928255737496107594042600573447974850185615673805858289480144966788768816505103197652767864619250272270379951701180725175219546344975852778476296319131260638421775717728196934853461400580589850779576069118196170826667387600803216570015083536074751379915942386871629536512469324826456817474376406082569860693658204234296209247652236189830398455541649411796105873343680485059254780713412463751507960095022305321023188606548906715274431009828547751329764068007221502660026945145026111929471555497888953936400045180666922750121396782484713841505528629588737174498437401297483298117670426610028126526639698145582628088516651479211948843220858966980234291471838358630422868337450427925549736134669141324364725535169783110064592582763240142624577202436063529817088414504844862423142775488137591837969149502224234296478067439928483073649243736604235995772270184664689849721826655529000124988994989507913503095789302645778236750906830014782940030233442034040130189204906860251698749551991159470868248155274758641006105943842340198310398300530858201254792523144775279077525513838944428426590478616695302659828863974313593496518759049221588427284103996081491525353794554135702929452516186980629642784617279619132105790853281850753385672757621426662725269817448656005541452672844213918758851303352275488023598997927693205642112934027178300681643513925620786198077239617725662369145577416991916411342294397165101193876865931198078494175671845382873438114608804826952317293106945670802333443898341609334083514310457942983759329448965500903631990264732852453730494756932941332226251297018441829421622357660852900864919594580280770194342910573551557825358911452308756517179519709651414420670239538728250652040486860619710968434977771454470043752453177042786479657988212449900382631759156103899171042367978191673824778928080756922557914637804412161430409480546380515511553053890892424293790978268234512256464253716387523740607018392288134063402559573312613692328215533091556214508077923022974836405489250110581887296138188429885960461369527187568710474479609850976507507348519587413313072930661728181992983956277029240424538983654922115630007001868816164683589111472907951745486309692498528796133167243702335109428438271960654167074148891525858888996191775921915445573476056869841286671389309175784723735420325571832887419396501258437952048489385551774770026318452495556177119610164867011349937812909591734180738248033287795461970560956681734116164722484779277415395763148736830746530355020199043350157294889761353340237655312922806733217562831777481648250901670963761579109176772820673527576919270702611217747220568304619424132372642919885345619102964273655419528364618264965150466144322522207367062160498979911282654998702924360624443138834356121395838064780070912978118800653735008983314514867195404029584122219869331723295485929665178821444566798823943828997780023603514690269332424435533302403585873254300017777760909449933421694891566067770663879098585924264150368717230844978930556279988837616225241588027340055144898260641161155783378010246807552717687706039656468101324582358486759161639703135909581050958405147660995283439485179454477179252331436488339776192819608550125237088833564757809562158442259478855594785568777434947757883656125911039716164323691740102549513524366836684408324957804449362258931984221847267215287397456469089190400945743725244256044643600219322505686506489749273082215193616534588528832593419085588233805839819116147444596641791610956595005026738751655583455389254805700194636594670912053962402755479648381751751148085956319886300163859050167041745551827211184701821326563214156428088752752795070583588309481794021678248249235342509754048585678965900362279567788928033530092059302081506164557079201739980950953645411931232121631302222589504198646317664432701955872515320138390845700266793561573280836771231914350634294316839441748974804531058974017259128401792431464399956713911277266747228736574978559480073049410561983073192029704681922888251706352173372582903041463185781265868162938648615900733040861463849455138395904846761691578143804589372544433795161564956721546140875327125043215277465870839641092386888289389758607207554878929325861709160122534511471110515386054754019029906606702329075106329329346906848319935042483043448542184509228316715165131917957268203147300280156156630238574082252744640298273551495167350909468566608533163114607128271158778338108266732284420361008677209808254930147744420560910836747942894739343972689823567064482697265280954117144458513238288150815749477056543283724464666225522064751499157082585773695900738317165314047967090637764692982337600923552246561694050862851575291926623403774444238681553983755057687494966149914901981458726659192201245102668371485840248863775752663083325165851122243338274158574081164351788510707073321788033892375725274932468029900790185766126469797202473614131977384593110674813122437130875042566710477682918633508018969111794936932527618486208132635626408117101193362067354681295532435373227894517334959861229345176027632313053652215411155546906500564047855419565465069116142442161763185908534684913297650632035284227862753652440451746372885080895617585933361950450161120458014868421840667916289547094583574234340080193748337689777586866901751423508518097455348135267484855709232880098349788412309913658167377240872115201769433534491890919042075313929468461637912756806032629795079001288620796246879889793702867424649903053922352254021452044102830572467696058658909555061774849182390650179559992349275859328924608283619840856636760708016848126932320179255481468384586940059460498008299162785461754991395308831467932335963467471161606972091985036970088360858528745615376726188167545978180004861396254714971092888161622964903784179712179459899718306476096814114350871416294793754244649802980690422933738125530213900491812470957095396947627246377281972309678625078340311852664280675210289702076595685327812594962075619160962493450500498537228312575629519816032164657268393710792373644734386122759120296790236077249718314714945991555726052358638301387244409264413247607496186153893547610053656740865328553784535915245888661750286129431829927451897641220615342149663280246839233411248168657334752086034471187422497306953061119209203786096717865094282205241245998589095832330935969817481420751139544004358232055257046063118603573487405645572000507790550971999590212710021038840459784129809160493131005416508182314915682987853404323999924618398817182862502641120198311045053067037935318779215657260085819445888428764083845856927017405975622077652984228720754811044518405609584888218841581348292945913961180474105706003625539732101917033281521852947383124390343458133337727402868840207323485162995431589309674391676325728996615813772823161052286595102621107482361652029043690524698223939274914504680072509532733119025116665243207463232167455918723525433287838654504450211921064211316387377943346567155488710136512540845423035889803587309069619641932202866445108758501876799134824597495524418172318469106015530395015640061974296142877452242238602161257635870670454619898660312183812273197226383540101464233149337667571849228139402080951222515726746778242249122042621822512652488323947079699973693453676177923882666909611140041160723785464167293971072034557304587020443582863940588029397367295513402847361956057652069503200543157340708321711727696660625665098833015914155629318519254216478666099667256379853611940093663899614058969027258596032936702815018692828113601968488370093646309370920672210571362697015543320467566883968858192198570757436725534629876582799325694437700891938250248060089635925451894550785693567835282734951760746944257308111154260710205165088638080074376093070453436418764770880529915569580959452010221513141586468843219478145451648422025916876790159444314215568462618927334181669094323364260166787955113413598103200219489442257546213584982280507796703248408254021539750714547228965517400122173143253951023408810747249114943254298981823880667658967371698358022001848624082359122723114553215431613668034895999193371543215704774520390469341950378373541743898254880261243345770134486447799020885762291465645807772362764785444666813229201599775855592128252881490163812767739532237270758148532671794893214996979140842751025800165137508245397041989130968134232201053476631600568026973317107096085460837383550544274115932573745355679920853793286980677081050428519417803282928648213259627743712388736155190623411001592467727088831626606340769061414953881679776216263421812105975307032716952199203958928822151660433297317173580102680221776806960469570485110040954194430261523815278513253658266483867490587379579849929302969420721608203705448419062554620314271838238524474538167072256920762826401866030163539410078976440356847101356440366900005112197994544378666192105995602358399030330663722111001461852938093592104646271018795228095584745808207080673319475613711465673599975919077671700549518339422186938147872734083430742450760976289550629856149877668072277124844465126003181053522942718002130194497861620569604452872443595221189743342002196571127556373210797860086088783915632259640859102863593667245151477669494216179240288523423398620921127512647375394165487673290879544841218158268617227805914001654671569378009375966874265730361640203130272799908002628936043740337936067656465978648556319626669053414605814058349758172024982784698266173856921160531399259161055114473381426040735560434780173608737688889269547895049700562129774419663144720226052966502392009714314999118883156215699293866142727892162604273875117060080216832060109932902570345497301436132795841177150228606883532641260788705580850957661092346709380812147116429082087939372208168998476958215701766363901266544662203988985379276304502037962028320899103160157530050582353272123965003259285798728603283550674555785469358922293990803913680067768119303461350479861937117938524440128848323574432108233014518850742292138707739431741263095385866797208919732345631745373555917299673363385455913489510688875828561381561326950537716032806450231784896336470735738980698742208694844122511475220772225233835090446704692342191804305451986178366842559072618110142748025491851020022952339390754702100689484611646133963298733154979904242788746786968417531846042284685889445655185716388556861193361150419116295406036010278880502702687629900733585261901075659866587919179486701145499362015515904929464428121900727566868603798881594813753083341107230830180818073416008884669718132872194647403922973995062095891080003698665682174466593394616139464531625490079224700425119469209097797120154631866032449492772105490735566180277790964980843988700501570056861221674732831486075668539139211579328647027154941498344018247514418903768840602706141895780799793658495465017326598267975675436179869064142983604745361023511088564332096611275634195675122970907083160880760294147556560076324078337843118550415078793069538227503594418330792560834834525820729110900362378576292372383899952964503271618698301412079606296900499390291193595906171600611772845841620845373147154002256996545176720860242333959562643310235284923921422021704175920503701982431162442708944590715546569496984224097126219824954255719566846118614070213640101955715860659050094328246970933363047598419969240415216231050193071414838470734088797219600023031110052669289220174073538664325385178791278796729924197031121546816068336697890601433973318731581673620561167982954693435659362911312656554815481750361137600227879070130765179913164000673065335454663819251558467282551701477701944407128452950090229816789726369361156451381445089751800074632238224814883419619489382934979927028907121344809146983552394390478905476755808719084910727390980398209885012829292563886124200746213885456434975221459211598575638872152139493945424464903900877901309539919827275509362505560596042023431744710434808705643529419217786841697513212551436889138041223203026369324097318125961497997306706510061520568115830527887388801866714137261944601578993248520590197651700411993782444571314107052262779157071701548934827848699246853550882117059657148406111843508561382104127619361308402374814054275195250929174220670894379636046666542919874498771303213984117970208946015482307871121144659089999597523653499914478358954247815518402799121126419788968550582669736982334247244237837550615965156199246335642389741280440861759107875435842198037076097393977447202059317652703971670613632445954360743348038003627169455770332770694378842559189299250380215009108753976964769255884439173387688165437197299940419734192123095212410833136011487841249222258631333211785578183462739794284597580853791906738052304879104681296549842422372753202639499920322600636949811486258341041259760675011182716246797730171360178162813062835243923996955135464654767763410061269113133555470297063901617807219787335635005596393059486467934044387114456172253130396588143454300843905360745828699199103599334696597882141656782185193340469225581527625748794418961085208145507058155922156672053113068512426205666670931807129214058833083580280318968876312302135228892350185908910886751129123741387052579557339153087914329279073921149085371108711217105118918529051728016558283840539859174297122339113493500029338555777307018740037710692786103345607779906286307424360992206875855741897512846535531403718632561444151899715653295413323789705058647147079021726209551892629523624795933149962618839311830745251688638647049405822388745965761633550029034951131335000192628408862477448120674092009386883374036680940361199552757652032354708413514421822587718933687603171695482300405154776981323241181768220617196637318525160857790020920398065092264232827273226311362247995101149357585066899080809961911333476824625400342187244947148252650908844616595996714352796140104956931903662532238865265194080147249967786157563384950811461754219910151181597944758588006701329117642941515881225187378050984918931396044057633531548078086554641937257984896875444140070682257226657820043249684699922004492224501644176925194680597877405626707536063874389840946970872581700457058400046205202109260903392976937947912128825709259667289430548641716068159242479168184516407519374498264725831589607722857223937353885553816640286919705857708775113659427710897298293627049669052113611089788748924864606187821572264929793284550086307327255936841824137041752474019255371923588092556569886199266755178152097324194695718723452411617986043542140388702787148190223610665042418423749804158062508733776446750437208009162195340110787036138586244354412224398481881506841488727856790202822553823339890964391530150938581267919766947105887039648972520590468260363619876254071147015104997745642910863434163692668278003322861845017427160729417728197042390012495611149677324493020818731210015613694813345515833310941999658143575606320858084746877519553132840309177456446748059306765558800192010185999438810812414948174461274386261405972717594827758942074161091347408254738028567734474289074485915362113733077686928079475681345088923965302634369054041967177267560936271830679882780775781154708287842907220327175048205545119657119715690198012411834501168782115794617455624328864657942160086497999483791512504550498141383184251217514280379901282572332834315299154082518879219541560135371980875065402193294414307661168329741548600188851606963346500696228223753949861143278379547455829815550743371392397352024475404282137943664319449881902858757458186861304547152257398468293338844977210861783355538904326774573282596852147767477310916087254505886384607062689699073538706344256555095730454233697203512205268820435498366563201549012208688592550677711947937921704683981273299780886441247654492735082615507855057553804783000415189461774023597422409192601735761367527450325958524289052481011619008840419579535072189548525565454177887184610753736013424074304926643915794754773352970836727940731159578193471287403917002893564076950069805081648144833962456681309265502129417119620906823746381560427896297601323873044480619237775011674989913672616141205059978651004024315300680371574592311418939534926985021623414617649893936387999055806892420704019270922331042861046264356228970231131913182878832562482426941509594511016770240688767073812519502651099240332752571702082693953116606643511464337489100751474719736173140092981083638751398156247189632683487230901799032791455728080555702688950534749213693405777070566035129651287523602249212219344441890642760842292328718736510761042511634654567354671290668959107986872706684816760623372308631404298268549282623948301206127750851853513760516499511834629302215467382667300553535157187114784577684884008371242223484917100807018732281216778834499837880418712154064515137275020822249784711035986267138720715954999392054962944003304753604039916121206600095783826495964324432977573603044743448617507933686768311041349444435515914107619674292606228831280641665425437604551594303368823003303623158552267005445540344888830646430677470218344852974447608481379360459408136086525198073771394191392568766656042841313004515985215134923688567924741197569796754357640222662833315858948300969974217254405780381594554031467985895710742713164894132754551497083461465752524790217397248317379452099876751482686833694082576134336161353651481638889100941808113739834561999322860927033877060750874586859643681608237939605055959184974022376886833616543854940860077849064496361036834406822664234391784458893443279827725165457402763443989274878603612249288771319105416283566948534938313284249491920050169649493704236232489234194112559063644878666019651152278440468940254055050685957847131619433464275178939557393877442824722281316942829825388489738638720929008719042535679208983884068389806595399162300725162812935669493151555082615941056079090935296035270777902862588084451810416346088839585188835852570111097034628302989217480740992195157061095263976716100088487896386172792452801702064889688524816136005301282249397849940927409758431170528228727243660069041899776365118520470054039464586546395340344200030277601357052316659632259498616932873179230001514839007941915031035501384437695500287836114469753951513386278975031521652575223223043676963945538925267788269396883505181337921354351159296904309389437775543782646102454496667222728122177244830020886104703335282504417806175388384148761845098047526379735218102813149603119400106939973303003073468011801098879382819842252633294159498888672695624291061436069142268461507852455878243727294638842780911193537774991383662574605567923664872423104617250896007157304063552592309013803411817649504498353762504398169055594843928222425105589351879189175014219387630817202189222738189551894567766942957422005219293054474334968960640575341002839383093661135025211221387043125886270465930562461891417154688408139452847661120012191626259595291526076480643886360991500658440276348072320887233335594476429656547571409147268633449999922270714716661117229733381224198560274649794973405819242751943148374756227447744128652318063146282062472894529741697519253841235832762480054072902855527906259495429191679450401564104705590129247603957227905999416762142511541283356435278743801182150407318376485675341914988109707207646056455970368647219153928240262873953927399298837946910269869293296380341385614870415737752633463202393506709040752799829626052639118798623173921232190895338898264255873071766783065697320646418864690061450101555944075352253271670967128120335353799386533094741331113698323477694612040433894246341452791903903762517066770365055525338848400741501436101428817169376207728548480959740945534767497620573255695964838458162926912387364050017016534303510181715257136729989044124312602618667031437397758876742159855372557138948453904876910324516296710373094876052383761200629737289293940840480051984003569040197467905225477152599312982509597117717209729749378236706604811363399332107210485047021553296518281362252516221231767428247125016632456956885258950196876677489242189903773640825219659468735653590625694605962803560145824734064127001671460149173575832041510904967551008146560039037123460025699827894334789897628549395969903839510228068249988668833952655670663659239180896920942022527747072293639883496884476068909873162430210786504584020425240704614962262570866356039090237893716490808770225572472563975437513965006210299384273406344473904908156471087846884834175617164726266356931004884651176053507412902078458058512299262163123458232229774790085323788759254093199333395415909124913909867505987910621573580735382940417715615747009269863179773522262849877624004133153257384391704456120175410684072365583858249090154008867664215259806717106135088030066947029162892081181578874993781454126695280708834972377417787992678437740573896404432968444822145272402487752853773481442247191053205158763071372811728382051870484602564755918009912556840449476179205270935553820386707316344541152581531392896377693976849196486741885000124777633495866812824422340273516609426508802014537735004392523755831045270641854139147150727086273557482714736752319488265229169309146248282708606394002049993621055869562858897486010771949403786239970249074650819514609383017559772660391350513410664795569296816250882013599209316092185446721516643567544538673038730899787609804414529209435344359333282966497106878477752231706961891262939198871614381576684899471551104254499133890005045038179370288835953022642819601709590315849846921335062451907572869107833998158717358790595629233854130137736001999467334166131629365440182795982142841264851228569899123997114072158198066320539049779421474628966636276703430110269690196655963964463761474286986135944218599535723721063358129669823225862995948559041372894230229386545550403273359393314472466406236484657120172941720804688292985110405505972426610096998190633867026620942541761869481317599183382500434466033704846677609409078966537820419343248598853212730154766322866657384279934190260413579311182506153788629188375473950898419377832411445434688137912981042213479573446355458361821752063827463375403344679049607597402633726531525367077361327020988148105590569246054703345991686143452144749440301146310236169435896689223813778694784649105937094456336122468719581185186187564086845563923184012064440454227252628778946524320802346050458761119141405827071478167886064574722782589005803532877324903699886655412370555062267301010766909366842666853276096449633345218142840816282196691475479746008323718740746511163272074037885734969256244567579382168463631443167358651328616360940214433289697493089326592740594971577828658069107942109771678165597040430948343759993729925769805740423772042598946759267670925455505444559830358904496689821671274315413407373538499153900115886305289848590510566369078494344616508720764932610826545057359494147193688429837571817328398061630271486540609777039891771832440790040464905051253291669324880028306235881549310791120747964431112555865334215021766198504889423456829854608196095883316459811622571220759616461945337001870515773286555091717124869837555418200022620930164965063635879443556112282136970431701551221743399703186013333687787327161234704078547408735499615415000022439841447476727895399529917504577980969247972484635060754624254513366170796595464287716132505579302945760035659840111665195424039885979100120695587603212016661612235277436905991790412020670741404189384652262786482615972682313714138303994246558559714419347637164544347485583394618745135093883569994958663253087109615407760646369137733653874169147925589780124593465341620920825481805588682380169817712721917832664337342632053986343181371512950442957947063877189769338616573303422844210913411206342549191432325861995730473872871678089645549180324736390937755731972656390423407696850762602832726854729146644342571363796295945174499789858129265894411216858408589755800640251375249965632449619547810075971837170332949988129548370441014032691695139469301612139489690830015688517061594433930681298250592187949125449442155393516657338895617333394121273227524870321221275834358107659836247280003381634011228465020674073829048904015718456861567662376000618026669482096196540041936950121588084641371109811066857908826776990718865886030454833743563602865799537665845236084319278039351049004816243487684675472811367548417127578251881274754638400575044274533272615976912371293864497777999708637565767836272215050048524006237278763267005404199902674287877497132712355527043232287709468299527063905137226478586117312374065591256122461290997451295851384881626347113228913677800346142728930192678447957099548823294135086274389149777707409410769064293072990000356707356441314585161509776967776830719377636125625750576557446218594592390258310030727337195718774045381835862818873849894315407342931379855345182057542237773748673025530239264839304450202089291664679599865816892291138647977725789718987901732894484360898770123331846895300820820843506051070659775724241300446220264539802896104606261303137188077244470992417395100863923305198148239651713768905011190866498551133818438372879220435366075949546292579492632056194657867427758470470868544449906364909350627872251377392560046784587625838030018741323581677014677973919194520757337528163730702189574869435073772838607203083087922594123041113892172861786929114713798323875916738080896527772608019056435536897569165143497753517291814015661086307542173059425846442901402534763433984970245980483037430977463220295895674471212993245254818659781089332717442831956586260168297169588543181791068801066613890557438354714788452477320383595198999931639668272518970456237989313840650464640111938869470553494552760340211881820072799337181810558533722482634457105585360463736509630722201743378865577417394393168917757023702109292100640080390997927929388853898513729072378922784241199906496436662787038414223249695833812945861697320982059642433313622391901952611383628197752330313188403932311269476512318689382420355377601931414915269298074292527018722318968948231516779697039212834824264064214377274941364438568071051232404103114976280329853712847088188012434243014000709906379125422490160922536202024421763452774415545033352994904592554990226158568486558610107487072524878227122722486464423937535291534035328806598778842049431875568781190766750721571338061977082521325864577775892794416940612633912114761027850829866573873612305260870828816079571258397811594220104101523201798234325136366513561803898205539914661913323212038349080325004349116150740551408205954652783880577658546303663293289385058848270706671139984787564960258700361484587440695226282801956148679971371391701522058079003476244973304977389883399297357875650347120813602030115105533871196050646038222566784187139333291574074819315814797874878729845212480261355536176426198579271090563113584649723365326756795329722879122100364404361651388535073761254181258914833438209503536564280656810729302014901777330625399112164285570726460193743465880955323926969807547493738313024913640017531655579186611664430753887695400758282480597707650924274061500895715032736719056692681623952223570322201893655695896546827013015018128294695490233602420556881463196146207228343598112745953360332154646785034603888421055244236842574227208074278933920477546730085386253276084752468636826285873707294301654359009177845925071358956960964321280769248280145904929348847174718652027391370513747079653359345457703305521924079821956644704447679174895680843969365614724319722678450143918666886636971242861598593727330409383290589593920768501892926745249181954934948104474975758596726041738381553556295925734109638777465563722750791754890317290978003590411850466219463375194830244758515470658581032684838360672159993636778704112811674634551514491878467986291618558645223473966765573188451825957886308427029616692633303109149622341764049841806729457709732684718850727455690188502159456357172475986813653142978230220427029057624071299370622755131340734236114180498715030626984003063186268147845017587041605599273519194601641134372642612169841007257402869285927006628436048423884189043641092890411770359150226527449851386556825713569619775785247672775055495388768217256746546850697680766518836603510078027785449286207158255780406916480838897708289306104276705427648416359944244894685813073426532849217379275516618493883043343697056340556771685558248562399116873701023697714673679833898165965413115933136210324553208206308386620460244984053215210516819850394231234580234102189300800908813488995984558697080865136105842016307298918851241656401437703689371596850370261680999149013497043263226887454247507427358986772675818387917927285013708636706648737617267309842385158822950069103225219942009477981635293274264990655145538250332790424975840290858444772519507327355267939490226149052520587626054601799290182402521820454209010471669143218813425438604962208419502515677969748123417761791160816902279188225140052844803798044666488004860580258893521527794404092335304429663467159653249643219019837633395132184578266991709277440495455686144069658817429174944485981960488523527723015569213661605199662480335324134225430604419252331064643036932554484910596307743283227538684934300516154913434697196272526005557997479775568832437783507633225973661212267545893985973041226309468015358163666964197499740271790644598345411607522867467721876571484432508381540471987937025874515902193915136236928669365403507968518601843832803958015132792052049373107488363001915558882265670890797864043463953076420067294884048406734923698428794667781451577350055616781688193995763991302937979328875376475132183275626495386796901149233804558677532554336107359384554925238395230084145874436059473012565394208096420166565429985664129577874552423004469486603302161523183763549953912280149995668272230238495120197905777934065166434927156960167322701802071044614301095011048877121353662092230939915943338783742433189905365134132426770313487640087507631517796551114906519447070810626016052449318578918614666693749791500123365501422911569749862525771211122236494753938865799759381891335417770646062813770496743354551820365052207441113170484083378473359018711384797442921363737860220709298865335287984414244062904442734374861001622606491203694738566668968322230416470617845983812791067305150791202439654673797617504989798595356270617878257948401515578215437676830146963438400678787471716483482247234058514214408609382885017855287436773575442444218651175211362124410911609908766991348267772974849675414335635377397743061301107203084791238145522936669066153565723857091537076784691871281334097898350235143024042251806705252252495535524886564918497993548044277320212424369643630084971668556286402904845884078602763745201674603125215142722945330949232741768187685058580323031147455826268248696329832550781712439601469532546896231773348228040768546707375144616255479600359312267443000808145326892512798208648993571419429032958541974911980256287589443433835713574918596115079823879393102635065712273693661332884520296636416897210499278094040497371830179765376729788401930734851435502338954070122357203592573855837107399230897336718251993029285285209348144021466408886862520602124363586532417630394545375936579105756569857297199874040085066967269330580753041043787860298143721837250048186750224973139217945948342568485648809288503668423497987438973299502522609827926147402506987813484472249926386448343198305901764026648981928953923094884708147501883873323894418641335562950480592404720211818873098245026056887582143708892738145533983549741690167702087156119798296793555740882258500533769928511267425309168934531244062456938869440273657270246419133845261232274885114214299102021411872262488312828312270237311194012840316850020109340472724865779913580190163521494463489718332229628188986015923564954602588818288413658497130616072796399005656617168863146865260859257528149201053541228413006961954626685800988795637934121437740958668250089656446745362269993613406601404943193910868406404555614495702780019316883902313308344988697748712997925696441710358510916784235465473657756741765579201042612925324149215449511070821118794461788759836208983177655615274277952410104663733310790563773095006883154387411845276596113817769561086144014571503765197257044038875264974382419393361001615157189247295457708716179303953662916184642255004313466017393140965266849441596264772605158652717158173618893033130050066627859677508136439232532735839097143543113472038885200519389587625929083804059871989319344949109535615843424292388716910860622445791027764146958871469266193473078187583139490048366385941978316203519849991487855651239245065018479573789957074097462810579703420988666440303150669647999903235582509064066634878807592646781683943151605463617289775162440855279413194584976302720640120914941276236448225112078113212593999646976871278130928645130872892367274118356585303551778408538440861194890822749052424458803214624621816026846509364650490068320484969181750178473715494612096030174828514366921340005252925385582645075167774966757804857456370858331413912148826803708455352126410631652838135930019422966739484993663243186483878641185564255794081159596646408047189300697833940407444513363920458265112874575849235500600845614563188509930204374126280113212260212169287514678752556918953821243990461226588630182935780896088208986059549063008919905230365889096136576870383130088036950051677065969721941578549703541008141992702920300874664117568524715882687587833581399915471197527651180560895089472435440330879715426755950671622733818378728805836803437184347430864692813276209414889650829731096871139132658307846292574254378467091809635783922170962963371751496474421538533982685428640178662366638900850602394426736265342651506910657438555828151947383968011503841010874968589856715474023207728830176014754624033109661562811518619110875429485783685816380902283536156712501894406849655047773234719741089674743974835675083007756658963852021621000240885183777924323299477311813470871539766488140430111215368382098785518943711249765122711354958167904933898406672548259310806698552732988059713059555540472962323850228588572508421869378267803262292501859528265207753310119702926063567912843659808912365070814707271593072290853108083249993048361293369521035415776479603264491159380348142217669131660764357078611567801715825826970691834956844956110603410683445017826361418575712785080541944372718894418941072900092042357923655447162586264393242587657234381254634563775025966253096786436506256068016861759224218807454768955280425891051331833807769478679428558924038430208760079733783336800831325266656097161395955877898921578179339711171910238317023078752257108652691900414290133326982947887350703919344678506720271386215926633849682943639631093243745755259830842236649870995127570522055704458064956807236002856331410485583220559694761022400261604772838904919967685992685070387014910026004734457226950951447857832278220547474932501249684960967421400329536419097616363552843168776674709710850434014875981349688019705458112382381380529088922769934129365355744636929580431728802373973483698254649288051487583944949363049026427966325169415393138135363649130364693338501197411561459878354793214680552844399520282686568965807329874035511240499823274044512271234773684075746831484991576840454212597225314356960408083583688303140553942194453419553171597622314821290570376897586257922505702950113369582161890671736318055319725178950669051496632198141138937861932126406621521637067380996098140514632185255234456885417297725736393039617005244739090049984582891773720590154523945883808686279844053902778401338698779939037675319521984690558605709372804368146138398536091961035291627531762853588656773587109184751705000538508391531126283731892084709175012903884300776731676287977678849007240744638010384514651068753210153675804523969932156234168565653708157551885467273913940631799952222026845428131918674980137545133656716514648053788031915190360445222859914195589361883505455188733143087273494134897445033096237553714358871943506951094402911725076307823028578456178765478313791672076045231060476090206546413061556729870192934183894250389752210397857703450800916969922834946682344953241475706062024480312334090259683641394982174529771662446766679425162610389142921107155159258973677451331566771285748703205587806658033785954459323782767125165487293229140873816053438820229135945649244020270553940635442380025618290520526432125020517803072651603902601181135247654593237636855547351073456749674168180226446028658183144467090972230150026013308876146043791138925452902394707212954851312712175055057506330910836338541791964091464188484318620197400869279666541082923196299849560859447254889698483684716100801705204794791215106307481894840547594014115126348947626606927440177528269729923695371837505864654641281197906672505001597393044738148752048597492044281537420580518046229231034737772515430598040344029989636277150283358929048148924888083643636250584012361930100425186640982632528428538125946593649018556572551640617797202935240200866557401110490981924118161359067663256728570481168782624528257237415572374983641177020009262351449935833507472983551655410278619911128785239630344973268581972609438464612279413386152714457984816675670875740761560920493823471576276625540263107772275993889496612844614806279347865132377750152028611512309077950184442470643979442251726353057517939506207880763598513106162192144491030694984987318313799509186128395751859132065060468541638065921979543715321260698543703903199505575247049106399755517300711468324983719734570120451816519068819999434332258658711446245795950106553747934384754809456523077272264113839853420012761784247196739907633411841614509006530800414835143023503926480488241530443474471177380855566880057025788429427842138078006818572071107224715206585968780139576513316651284770477551122995349913018392221993144938222235571056597008677678584267737608233164104302412867306710277271500064428756704468245853539996684710408411080840936274239714243797634395117669458633762026122497141796044626837020968455308698656487669354084414158696341422663628501609549686235359374504809923914633114480537627782050355733501711013283830730533930521671809375766536215158296290340111852777786019983928607841929087820167608624716612125906463168306510721393471833881634174718879378869245738139735155255595429676456052366870899691210471821856867639581067843571259234067337797646980601918645526364046429086591221241930761464102765398528058556445536743694860161481938231579079602914700705164684761026297263033752299296715166944293360184856078032506210426869986813544320523180852357595321455164568850128769368270199218030423134733705619522208951430121264095583481912002895939372571009997415311591643519315355247574251857245367832448353380552177419990332988993830618601051754515480447950073973961329766356585173498110084380457147032956756009013723135520217193291657293464318210952343750931918053689479675154611500016354574252182206512474358881439021641391598405214668614727850913890951704091343416273862809528354947010478589286371070580689531144739838702314193547872017011786748456102770139866696386707253083216731237570780182637015407183403947442363122092773563457561977016529500817111878745016562390719607528462126462488752741846068519290971175233843602608240743185894998805055840045233671272841729552027145045427021827686916371725590540241184792339807228995680223797335393080575471743486343565600808258014828025410902249789150878226570325234622768608644501314152881456579093891661321093223372681209737403271317858608923728981309350115915221283396527231661505224088511150842466835387206613419985119506978247943017655937729397356629485142030702362661227883463200327740377882820479755698837629954244969283035352638837770799766061800559003340358902897086145858474595946211798545538301789995771705276350286345195072814724306865422772267905761166341006423110813595277550567848964025533289489187270582604288762060818605645667250312859336167544220003914092085949433883447064701675824021324306580813958031435293499179444745038748844474331961212472978909699943524664476113651032472606436876783943149966155629559162509011439192886660600053400547964498253262244070607110530401021609876351410642819987290521248819669663442448784331993110715935210360982862422245617099412470118001593621190395554453321479337135984753013052382616470882620366054313627397747909280195675502715587284218628617462635058636125047836735352453708146655556043240153444555410864007720154254035673330175978188699424107633678253707235287209407302113679842389452869344470188002490141083201498130319985967484022393623108778855322409767095315557517582552195981263249003204902415765450100378557803232326469312086460098552053475159300284120744021329338857427096317537706578855438945320542237880128895667353160370609369591363712353714049957354042537883572076429604439212024492577045381228237646732925508648431573351431565724611703721300933095521752603349672158331248536818026096416708441743888927499147186937604700762041333934752788152606989210799052570728663224560351219697671573789985631011427043182962402826688081854066996717112818540166313751630980038576659349140910288669695454289683668455316711588624858759008582441009251931749720662270396440317673821820190657729465622986552905614951897003129497574478684623224432892368936691884921765528078497845464774444281157258720989115727587563416549902458646614282007208202667099908943772675329284639487812820641186030292298863945474290544299953976020874205532692307583561188179225368251890705634410449758054883971500234202940208548362786534512115439599186810386300747225367197270087640965187283746235003638201151488809001737653728276456846298125961802091371633964317504027533023265774142211578817771355721128125619577135794807964496150741424094305356876629570348124815727262351159599996458610920603495822733896666566714039538171875398068137275070306363866810536702644793408334540065509131218413350753295609073682028715289886765282298924197990132365265148608586532363497653610629076109250510357024924656350227665974989725908828534696141657922032649289101023009320293502120366659033252835930950608391527109463574728938588629970592614675623101923775452306000391504680062877074093949085459708911244081184524220395204825748213151459050993605985595068602630294864363841667619698992261413505631584311950116100061227899564523255399259999820789771119468166283956485194281026657241308391209921149198072675848568660928319333987280559496116394140658226093342004439365087812244932794708671416679165189287953400226307966309645583806211026973011702874222769554240730103361403430116962033842677908784222505918633003711892870212032783723160986305399585218863648664475046703336830924656906725224691846693695192188413051428944007072529332008936852478013645232595171596616164105093382060273347459276735375984216897111705226277562758538001581697922770357895031519958798697106036342826191627253247606649432963591922502980593217566316180311546978618791499502433617117013183442775215772704944197320005327869540013612873416737228097931201799989391342217262580711830450669833068806018402216066689279766019078138458732239516724710162805665167700721238577448411661002733751545502540423540160082080796912200857314769816904190675456171536781432459039262773138485400384531471459680913733313404345427928162885489445375047488748971153608318899776930192121824375096546627611847117956026869537119686377069154126268120008148423764575002252595230924978393239778347300367853083583366348210909049501375301830786926377897014981206144703926829809818284831058135172035217144030360576624392429510414628778423820078394911488300223869513825163251811548427307172873904513094817709862914527943384962508238102809079619142941143506212518828053679616800554511556140958085293167575104174606763088823872342563945515409715253255183482177037957928648160451853000730680603461457951035224262321141916758890599520297535544077452760249305373686238713925024881771400057902096269977078597996898004509125537053440988168904132369331973464672619012884998095981829564940122674899477189502901466201053120226270576916434066947709363562082808533827964339544677624848862253619660732484333668561453315903733646011206898076063338172956323300030869084766681202199315764565607957243687606513548087020186189928561669485938834496434043676485643941817463680978560806595517356988108513618725114970511325707092409508333248174752011153588019395367701815978060402155521771717486354090543918315454882661726417097607506254239339900901348205469399600144386574028645582529063333133283209179417510208861266707009639287953372343832808563187008565413053243437973908314213617004784191081960983497964249908498966766516070391887187146927068776464955543967182061571117454300461786726064242667812081421953259198204015866717522422278714051928537795075168406734891393842978773622681807155557252263972271370055858312235375507863821780084200844208914835227587656353574316640237079392190678739924509488420639871249283723068517074754345604645396151252194338901947219653908202921398018450077631913018850781989625939375883314133009007952892914985119015852865202388575756830358030071290146484089657113346912464267646170491345227643085456003335780796650396607418483793563545167494710479409646910632610919635465280253759772215870247904396654497527160662896110216664287211138492637309141415144703270751032632852425752222211907609338209967520171002129741797817400307362284119930368190066641460622411893688902972111041962893394215985781314116273275268476884484242870500653195961766205818182074400372364209451919099586541898281269028045689457453098683619548852951760087036988443462718564792694745752683491786284271224495875104397975555721581925434211709463161483274001598833305584639481189729224920339292055583239512311049269649875854793309127623287276472471169805635040332250356994188707691839293920915947161788223848434130856256806209964256300721009494377296932825052422367357860265257982689903346804335234749472191607103627994463482786365936133752717176339083252092858777806837907703525145845642715519527256118326582241919121998005736752959603669356971160254309853272590252983601363536279275249358312784506454282885101654323193009525004832844517640522283687527136844931752521594317187014184018416005294956316704656796151191351936654235092519574893908175285284249286442339700793560387357325742820041452870536909356274935677046175600414152753978439078878224680074221914754511997430981736273564513352699738537089335294230149073888180295066480125030923126824577082939751487799443419553112598820583170725201980556427481480234303849911915554670983806281585772799085136016842360532339618727395946108432168500663278246766022536866927083654799599704228284137426635745235973912713952851608520383042171990793502903209048936397305144564260956708909875374427978484284035320521698574295826559959535269937462070745087255820714102407564090901102639179367840228300870400111164695348403814579003110781573793277972245418219205598656782540388242617864909133071111104174705370917575948151663830066960969412341149317559942884004562758037002724164567485198523493353701415304195519611916388016108145288493201991678816662644720807065755100839919311313362104557987283131755698614050589064110111330766880338792733029747305923478378899075027200810792954404759931495078814035934845306037999662752366481893469252221386820185514271086699813861084105662833083564690434972786088097610319426725567803448872278530400908303587165277964014565491073231842999439352936967095501669134382745175360134229131246626323124412131331481959508976316331138175525934029538828463046803976108822517741894316298076801809016552845410136329629302724814945167767772753254745087069723694348186512031387429939479754087113604296580232727709514904992641912593448893286904984579535935408420721616406517709142902696330518911221867833439997065183667964885652091820851945274959358057397791407353543430253851841650047589532031073059988712376329748708202983765985480510224794354542087445733330508556688593837609656202429272788219320077993985795646490868200588804113130274817965725500323808539779430662059758225691785787029684339396475186095184490460046278274948263643427134536469757070032934125844767005992052435597891752081385128279341713415800026681904946583590084358243039356782902465633217462184448726801427212671994579901243140423919112919820250805519520370498337278103645305516519104694863325639826695813336491459479101668692460838333996495679804524589027336055686598831595989205289326010652895621300147634464583553228304574332712164006866700768785184711171278074605210917888216984173164510822355793920201524333954003623432636183021947613821710115268251158473153064657590031783230870889760228170088020499314964433951979026249095419034159305812214283536843803910399590012883883708907811408099012998301058407142651129975246731548654923515641514686084036394953883694303582114846246096625197444481445156930250885936005442737796284424084699796752755795733294190532308128247411480818825729930002050106771101468509595728003088540456042474490824934568139691563595657955495639674014875372974557515427084675464573016333813052291470047281483969038206315651304753664438181343301672073477676943262973401672028315712035741023323784558614074237334353779318337430499278449266638412624984069197926932939535878021478067691778386145524720322252079618094326987949296305348212985013598084200129739046560515056544942422371638482226234188804843249351021188038463729611290441296430680127085989053070621358550986447686027312894881942227939212102366882207957392380827503163722966574057849682998271941343895775429840770927716525389009627454513962270913486584418271021652508826003903317902192686301656688035530447795997027584025091660292978783416533283313994497250291794194400422684605303775744534225646357275411099907557668217344867770216012201053112858911683240809611516397566199585078495059206636278392513067154789010231883455697828439518448854019886484204118641395549277152340386365761756124818825699964481691746773222231311002415684947331953524569866619659921018497542618318154032008466358771416998459733076360451228908591195285455012958199391955631968412479830920809507087845043257659406423337981241383841367794062301269756147658740913135047014155149358000457621425147166165285669004373190135401505478830438608724267080544532875892522291249647138375958153949933250603215532657876540084968672613434216669152753970599692830891021035971587955422921945990161547102767934224300928454356626988147061081391919875287908862474726620100191677909843829715338141149150395055822029133162642672163770585165932132957350528610742408823609852638746042912340264413601215503916312812399871680847528544991709064105532962316633702769911564651759157938903257279098078435471753530836552300013721833707565271275562893777125560512696694788755191379543184378342374220334513413512765433475017951850024228967583887109829412090198032347224575850530486106166394940099420379258198723717566942445182705966948182031783678735170041242840813696483594881167919994731890776437536025705636589425414463188610497357347867024917302571581620154608865864649413849716919009952941929073981375269695581331155999936845228048232097662602837268317080113539075271198989202223480817783560285201619337744218893750432657429064363161693828458488152286107159354132845537383899234305126248503215804512802452998365528330968286274342516870406778317255784230940522032475852206563229681632787791971076839043099512270467754621225077887743581438466879196638887011943862292404033415050330860342406589843493645829329775376062951213203104427318278449254097117439757244378741479909230604545773004756703902440526500704079360046214784381867539648936778752157559542300217040756388702350677561683799882820937462126234716413408385176321792979062630685118604152476026717963587659821160932879333768971031729089613212253217318028115583116080885440907209653069134823422105857249028148760803902199728204354308071756182460072684620634186518796402367221352096594363292228120443072694461241566746301419046287930827745971402857235220753886973424282510966545606334246440405183363843739585295783980454749541275719853906379203509298345945298009293510001024346005710334469431173808960660877386105985263681789858915389516338662101594636807940320648474751180481091892050060463502193995051016889960351516439116832050904016440444234342516928047694106047304964011348252096006173531112393302634071140171776408996980871020295842129547897734504044995871118838905252132328101125053302060625443918054076560943110539354468125220258367237762209206154839391535091284533897581805415655880758412717297229219325177055522781835464498080265365550694907930917844489056950366097232281930832280728473364149040711787745670453893369655947026687703361881666015871972357037499430760416790627543863005126628489802778021522365655761031179489972051978519227981129552049909784219828002987594852058407101468508806113205008617220765052472725154892818345798087516654739003942537169481858409064504742641227294721146873704832363665062242917968639901693720079638975846622666269307777399802277158487831533579651790649608715022651537563603120010308803004940497543885141852739996431507217080404026975597103013202911323420435670055556048800938331465364605157101977311011984362359331430260564893741009025876550592485079175782232108200021414261925952442660473316728383360900641042278940835744530012600470918628035183669578249538532388237892620937738988906061529660224577017494440532812981545740563285383843423075520111309915732749691023876237706443203013035626116578195378774659552564307077799006088384364292927136686312763526060054383532962722948053237036905439128876970192753226655514520228560751872698382503997050950656127764850718093473221265974867160350235424759669643890474672272204583722807879732010034714733520917072814371811888646358104910419619868053166914242724348819594750638214024833262532868087374435945449159550562490475219422265519347599448053804345291141650922355083992498592260356565779530667970974724323437777522946430068015912880945445641749920779488708511146082632627910778248081655493566347119256869439607956601631816931371091033511137900047597559071518752397404658908516449188230723689257766135695884416394179023268286652418571234838008091300738959030256778546441315635325811269585858014879150609918008577611312405458840787032073729656572133751115266023048482431943597572623365373764077002211909071184623429661637331685194451127450784180375743540945431797198918605491281664537580801247483332551441645144428582607188804011083590171021801595644869658145677476759028588700851659044459137608057991932041515052623895062806694955703612145057284593976659399782055573744746324813837492821819738176939505665439225690664154361643673595028366305910069796975922328800395023000861321314627010076165631501989197160870387125489858638030709087230091765933027607757085575962778768234885659679735221656829733725148176959013182498165226817370576750773538624078935252555575610136578800061968589432195180479442018396410285478212657949898660634934492828182562363310693441476472323668339487882851264524749955198569478307530039562104692772923133407149985235022635100877772119372050901831287240869941029784569780548873061402711176829688819864392845873492848551577172584474941071822407246766876532518623713826362328393955141105222935229262084931928517775915736056303630545786158980846899356794512539917083363810870676227986188254371150473240561797796998274373012603421786431693658639978321150926391337303434776312045186810988303963305525623890710658098595159395589213113765627757222529710085624445323384001330340784806189828251190985279262703647443172138536390842294419096375524406984814290958869317318727663989789507446949283959455085584634756124412818184550578497930770014413139204951446793910523334616235886809885290953186166057190335092414895497521931132164709942983062548898421336304084612315924277254548622677633688008366688458012602981680665294352955608346163370200440295595685452662638506229460274795587192646058748776003626739425799700545058148458885491627846346265005156624964178355058679582132701206240647545851478013927012317092226103002866164421182172678401249156307323250431668607842022369130755017241672730148993025408730560264458954668185260617782320112590894792021457308156107182932333419678281841970421407956645761814437251378415606697782197680200366582111230821031231336629530747228472780545914036469288980180203721435228845927540465426247039436822052999675870417892254491396248006213507050070409273556173184601977704425373284075845431990003445164029495272098124649826912903132209583680469537114576228510503029580831124401563016601981486305035942747607625371728154656386242965369273660731459602205826802545271798699247680174270563974502892222333834217855078058270932795032837759003062732451905157350854938812780089876880273701101648206027933298140472209214960877126167663420082354332466328860369940353258694893946635610300501684100989343619773697853031095646061037458903731043103561976114814597419655670183384668604208115698264922475487952442370880764695333292506924354834234248156322254390631659298045709565927134958250274382625614815342584672574221504827334352120330029583612195849188818017327051690572643610152165816931751302918848769621072825925659482125399826899335934712113094714702934259894449839977938386313328941934404484527829262679605013245114277053631617374328094783941539544912156343052632435831041416655614095115566332562110039606923695872009597403001237801848811617980312549554288309839591898382666503776782038997345320412085982996078916123678339868209403268123790764569460566834268976835931310796617844706678222954369713780346813619780700781467045399771590479370464500330912142017283345294956163216295539889436620445268123072866005176817209777317323924683807852783116497211224091701537838859407839107358075455628246753496345818510767792956107060541988674766513259491692074545732631697767658295974517378269981533847742667597197194390970432005372149230051746943809328887192811229488761756935973496816451822989601965824928279802243247708455856813322845820933359900438279603991497022158555212211495383077133440232470343999150958967995240385398243569801848192004099005361230457426376822435173400048343985606743959995383067808567440880476919938523931587869337443124132167742376508619086065522333069765912859664004001604439278460906720472505004185920765356586228361090339542177499636073449412649851044243329983181646978532603637363522065205053318994942907838311216936556704439435963368723198024121085258071102343353203479592862280587534988797625426998162122190661437937080366273419269886916460818331800595916946690492151396971763236042849804988076883060464011332379129008173173287236297857675071504369527618727159769989362637919608106439756462132145376371764900595072928829178779223626971386348553224482596130185091586610337440456397442900883100753239296134531112667791204509604846568762893294001868883031970886848992770074904625960548845313874219750316885731739643759725970184616269358466073341430163102044393443628391891441547728304175412929496352226177996553075415639271532452668688840239241737112381025402308580519970913433831733540334085658320001424090005633962931595835287604556112815806414483290425490691037559783006897564674076683864260537632233354067253441131267962055758014382333194196049835348714536339045689665522723552628972100548824736498149396621468294623477055867388151582302416376675600249706051753963993706340936255861345230965402985635320710018515931102537021209042427240258314105085012513158144735536517640405314826888644759210009707420438139175679956861995993799852272518979195972584137158325538232808311000159713575088999384731883947077064506164004023183876763667785002708445407177711380820682312986639150223385675391340223520529127310573257391324397032758064076953599506521577740860542364727835925857075046817576435285759260868201624276382191707584740075956467306683821933939326288061567177314478275813633910906847463045627026499257028889036218912884810283804123902114955216091816481121148125009543777150393460381601482644966118234052567193459879215052631980508239927659620657275873749709754269975979010009013703325636086904695859673081546482979079146539612804084538328346633107116875344930896651453848258821927541410466517070305363106714355589164434151760858073473731612087866158481826696371033536300325129122168664050498535955543715008531381915856320951027763246718490604441710974130759508077003609068369187382687194737128341369619042304903900806364566091524257311759358143116303958709083604465796345535977838551324502120330581099139157550685384730366287333314249532933987636934929521527827142552276720142697917245776426519302268464671881078932648417605698536335416585560062516777772643522473444466650244709288882474737666818311348681327514761926596409602162242537469647779910153335021922108029282495790358268552561097235224095931434359141621100622859083754043266842061057614307398364917417834446920864458761817836271634877590963229914504359389079916211914773278586541634020827178483118261322944022033655724056459238107927340992112634027861163176130406800669524148321229969036986071146645828474873372275185208347215869953502128797823997812154546859842356250936363562397795113694667256493161326983806146715042098882664867166693034939562422676939166836398783970587066988836786501749972334953438391320409405411086804834006933363344046997902332022564348008867656678912235117866087022182879259469298715863839650096630601123224008481490421397370124380647891055803070499289083518577764794071496414660735755297919939943003255743246089953392167819310857747226174386325045640692766975430096164284923016846299888717687409586685191057556140539831073974647782992057546921416464462828692339999219145920600587368945430416519917682606002608170473476543442528296776351999694562197392572404212161889208399831534410240205088595038119172269028961832722515618000868459614260239212634106317336825031588851042351727381889648483945602681405437014534450833111141056137641691937903231102046413105323153089020721878684598428715525119800620706031502003965618565184621073094706267806930921449971882955768897181128611703471910783505835187444366911620694754033405233513776953975483888132943225927903430724583892705655769938031075265685492012393744895758887461679019574829163943069009427882119978009346765559367751242306951949205440934639889179258594646370378364799828182772328066213752325911430106337789161801004111053474012681058243450133754085430447628958305223537901620652794922097934882640441738517501404960000378853060066337521225000382822112132030697736117132510391624328160262322990144254662013289285042805744682192981991489222547913159209348408255848357153441660929141975041382701603227623325472548626247632795846072909798336640044966079871351996454876168741271369861780799080565581456226748283336926618229643252868982325926297885739106408013167858676843506782425680065761840245371533817532837990050811819358367816100735704685496236775180369757079643482624228039535571456636559085159030969307517588656825883515506657722835987810995464782716574142140397223976396321635156254358825257381609034299700584453076202918697931511163111410901287731047994857930541649110909563524564270749558206868054673698856929334801687084865064040838970887686160366239031354265279607173912946020620967146940171265643076422357580955342621283326835778702754632615579481558054878042886487737707449332826397143405168197904662541929055887577582684088625229845075900532421928299949515555732345606161464713871335620130318776937622379834987898626984252411776965050288813722211454611437131840866172434043932082524619840042490543064305026964429557777536840998090239256389546913632415364980695850525509734504323108866383608968961794192443497323845029854781821616887266302841421129930881639680818831182628346737698593556638258666631505644747750661613409328412360970340026688869980532448870669354562233915923465131147856539692183227233531345457593798253515127123566771534980989332944139106302905751338220792832109788582508216709176870776289592230136938333186210992035460849959065296831789376944325382583578816243672730310786485960509581668827673064215565080332228800409352562526998133698296674596083796657714766363233542967233951472607638012778383812832933676447237199847825431407411146482365764042654789862844275203508223749905865774857130367306581844074540324324480340078147621869375228911977274211147531667172384131963481904857539578061628064539932970860331737973997772390611260138219659663906529156971240299484112892775352373638527709766706723595389042627208396123482143073217818098703437013257646674593257979919639256696741136112765731153433902983763580481048843998179318402409945346539590417501286303581352630937458201956328348916295657465350835608754352612502719170834451183009906135253548059136573366484417191637546147798226461331967937955840213470914809537925148665694418485869993502739790065830437054303946708111870262894985258153516541748505402728442539487915260686678303012087140860529724361828376859236162786703837323649506555686004718337305860642826062471616068027724831176587898300604443875406340742332731990682539184377369764959079946783523999247624711903876104378327209032436286549659533544944458921715199496738380285707288656212368454952564249528114430976021259246509290138240823995822372072138402787055435438720160722912597102248386883940011419688826706632021572785321081609757715263160394803178926622366727635251766960739746219995616269761918130834233622389977602726506732704505535406700510806627046204376601553796273925115818423362283792877725778306335763191692921882729852654908162953547109373835355139584400176424723983366830403223326371758591848337311980516574973988755521300338720306625622915509461112199186289472038853462633098450487653979577313366868753041859746906579617358182822241297238493766379919983564430479277609262681461666400934513466132067339760942625904710404523301700953372544059313107330167790962141473840296262730651453306782528797519815108160433439912942482850829928656926109360011080661884370935509923233600898923993867261517818263062810509602583494125688274719273193117348442140106154282277212628815362196169934618546961169377751559508968185059150266784748443732375221230796943598198413602788718242724535004938330368869124851056224694875245031568794474407941520779501269486143926366181692440100091797919843132583682269970429034927162588441021583981468315448828307029622565332060040759056283880708766421161293485879204905679397957420438042349682918396973943268837999962683737638803314067152409801287266690809972077436029840055552365976882795344072767140310420866360396246534468081308601895697838940494158602882580309149551785723882039027476772429333200968288046420786373547933491560631498908004151759198482753223978633094395103795484324513158476943604287425751218742894550856648946987177433911912964376593973111164812078437762555813520099086894426060796377983669076554087314745222647922715509030854149469061381639183485969904521684667457888923149367758820209054101975469292881439363000675077896288482702054285889485032872542285596952431956564139017646242080229247938388167818754251650922396590135678845355526282860075210921438830064310064594560627755993109979042074873899691567196947844581364030323073332223938868329754529507600679400286632070338327510023081172412488673596524950923435923795554405450213452931235303238646480366399090347458097005994938500152552563913189541492534887103274806159451502974458590202393941254826497607762185937783632907923582486911367019187322145403943280234079191921095287592136912299519063217157862789479093844649515864015806821895873403805684658988145783846094348725382698088681399439721222593255197181330908984518365635194031257045991612163598014590014172702740292262431169050829573603140649349034479546539705916540492465380740233652864491022481128746883460076356627083801760093408088415354021853148018469851699226308747372450695267635711027896482248185328375105848385324096112840841395864942555786901370648466872822227088250354757767749302528870516076212423709586138522521705404164178212630588221001566404793634576807390378500809232652808788898619938429010636546488025416571773525749673678725497491438959020874277694620061109227306177743812908264828277635560277269918186576795069965641492730715311946356318510034519463804852202703221227283367695257191467555305633625889894759578301760214467457361332895722085705825840504615950363642235913044292272669084970256825846700304465776989832770420386398415923013816456611539415423812295908426783028604258639051611242177417156496719816641743018509250785332829967356774377211971810276507845849755979319059631905724039425786502389336198797187253545685431747706628169553009311552527384074743641370213290443981002469078849988252275657071250222379937984447461406541545999978345745446435543811850824147453470290756383633722500380740431034263348073585414266369240866372733371690110099235113073909258527870060832386312544499069695174241805789308506783086521566907105107842536927062135538174481233442023891383056030242184142779857464528099581277863971649240067989718104709938437326540760729141035277280625914391181250976173373440562475766861958404071335847261725945123752114318788297728018097240961928664467188193212548867114291209916840363249305614690877070296183540290764345198725081011335952052117255577073050428208943533478066382630344463042316706870698731702822452464549907894065664220062837767009628647162891794573856597243946796096379393470113113422686995074055590025692336197951261491215457992936886054973121949819743879357306471862019243661149052846147921277556743747677024083648385325251651221308962923144500236237647278423192455764079357106482783516380485753505529443948049671902108570874051096756237933053985009761023660389385987005304195500886757644362486755749858915567806521391605540239351139758243315774166996681283212175068629277770753941470776646176538363783894266658805936243750574050687302441439513872570168059099628106029049775222769197674845790580087602266563178955735379314025069508869585927613001626205082988641723635711778884545952754360131238247152161911079709898700734861825692434215811062539593062830279806618887394152481740891743160508694687431421559719971382101085351490215563566421938127288435924489505106264470926591020961495481383483329031232724534544162944173851756247291177095310975885065808281729057427282184900316771397956458413050644447222518665581447651622766695072425827472294905480141235495476407022782153267528529199059399866181557816476508170305174939708232267360543879986633239803844359471120642007527068317817055647225473571017555485267938437181380878066347980057017452732203470472987406106017947497105445743462248620800073075627323980182307625791206541970033135320081960976953664296841155980500692152542202922161373086767636993639903392488945383872373908567320360034137092237063887593534240431555706977852091789364592373012742397079618576567414451076865561806728724646977138192810991869498833895017157209327030384830448275245757944939125952364495647247089667970325958631324042867866072124121897457057861443283259686245029530911471342119611090397713031624442761173249455047457735529810889332725680539123078269261237969362146841642082792570280088259756337881235506051264803810170945524200834626663487268616356470543431774351802514104991137181079963143968606193638440807982862548818236500456624902469275260106631749926079543615103545585294722457324852696614168811946714369840406913393886800292076884055764776338489300708158438480014872925499694192320384573153242790154863948006184464907132119211254919055606186043813216373665044721464553513372574141003261100775797498447232141758611703543955435298483763119384198840250726749423008053534012846178061255638664526295310993723162689249263940049289719728667811995134118386809125529273237884544007247871986576285168765996654161612209443937431173280174677458599211743237770430800853263029378877946345290116224931024800431595484110781971393041807326896840417009680722660645115264608447012057130546783956035476723923753804186181525204966015336714901157704693448048913618303919590653014744134018494579242301921120803264269583696302690869152281441583078893141174331214806029972540719839528545295911105304539743901353500646895799003571336966264759811423525270704929283863634713642709336101902961151301598854017136759712145103429519135181511082693992776643560896927402504578356581856597929956623767688120622563512618547584023351384620935022615631221944264855245871749449252971757898674541413344207425981139478287017659763318255533521797488297514720808983392432603436449502505886179601756589284265186779639100775528495722607696790495101150141696661386433641649736042162646855074662816609440695221296127779203116070847385548606841552701967821132434970890251447176386942337461589634318562869466202657165313054063809090657713101547503192662662451280548195191552844495964854362386287538087380924774596105689782572944064205393078873954115838608960681078549234391435626354158588680225859013724262978055545247079545846367770328701943397327769177093957375311064120122018435858725968282488399528207732583969612263099929615096439957819055298734774007208569513100361463992677831095533945595911683152442678718529653673757079870601455432643217440024069430060139153926577388918044119221332243822015375524780595361848816916780709142920428679486916656996140689831019083735677889255575835231137152875627392525844371494497209364709151536329465920800054020938820027224444956017562565318945175462077920837456538920865171655005533929510814173441130139549052252882880115581141092065670384813964989875714835588629708689743346031772887372016725616098343932976262321621143275054116679729172978970873882562219625563566137923976793435802651310428898730387201625102052689763641941100467606099020197771863265104171556628053329892285815280108866642837600702984589056789288105676827614578757337176035445034168752421373996290026482553168958249405868052363611293752646634204755296530881586996260166959769590048161016295831900249352542263118912687056346236772068898444936432404214111760175293303452701109856800484010111977980652868504641166091097234344931831911342928744579585210943710153135166463669681440479493522682402372374345588482553264708469196443469868623428034955129479117408933405366621280124840126378394037979832583831599950326446769810908069227903974473350144283238527103554281194368085683713838595582162989296784036431265784149679442168143110968174059257181146855541119514777867079758041271887695533081135940703479824356889305649411747554637586393765227836954738571078234018812512355586194951039300492971509605142371570073584323742104876573121775436134487149814667922612693588258550124167496158449837300394166655154122023318066587815719267532734684163219259382195961182522006924721214814484543738594580394560095990547453454724159829994466850522720861538248602343591413036411434117368147663776703904917407007657564808396977440911947000055996492675896771832113560074750250384953814061578801526211839161900332214101556947152431259610498239164673026550242757940099238068378773144340724359199791411950217356673348245680406693416177467097676736090848984947186919627953961556432483187962126266477723888128962103849951711249222842041453787733581092217083073346335869373478397975157713380216773874832942822333739091650398395419072711819389597968595632364704182696333939819729510579246842889249705286428091359356115497293566905405242895948100929951626902054228722674775827184557318397468962737420711887684314851154608415822192434714421098228900982169321862636197252138846416132898351341470080951525907924937980385848053866954289155865030665811004603213674326405278839360186977631107353809197565105958949283887114767357653691170327546283591762758354211517997305463858769314158088559020896378988193476701373642367392767330017064372724174001288166787522356820231069035962494148780447607973348995216913428046103461147123164875436564705530157062057740876210210924754422881957257379330576304400322465945684291982100047950538336176960910884645741298346449684682071486425619636106117991086178807254657423473696627748564291766837036279373296556389357271004351424618689239163913750108038705508265823534706339447890511711401878917341479495625904882293266911822949651227238491824195854440359650922093180473320730143646683567487696588456982854942867767798035144590262569663409639586005537550811013602088400801007478095136816477513399579355484234822344261030848151646629383565239150407753695508850839915654200001733832064977533337253992745684441778341044971954737244076252729147411143272701411123213970410661122950876947285435563148871750576568256873974478861503000498448558070826987370963128441319941496200712173424912844324618402424665980473573651734275388664893551283409320834934033198891918958922370516531826992770501366615232080658334719672402483926380822860675859186071241388014276419363820031028170516351202414429888656647296652858609649477506536009069311470662189754474601860856684952153018791580679168981023882378398749239666247716186778655046716655190816850579694561627943925357392191538842241947072292969389323990135868988818611819656028643128531273411768680025170546725597514950264808541016058669513613089288383460321067600646972285913581791094545509701220043084365012248607174171795056608366864748095752142054940167620712069816107773599188505218263820535854622221123804105627338080703729155131738791061460442786154211988980706992422174294055678630226221920459863283115388247435977807167990341681578599146630947527716968895632388121786964646194640184861716707959675833004901369040440058294156513427645806844773688489930066171561770612455351844881851884877058844643250727635899341681110724777682355890995992106572001811518148216374616457258099761532663630005434123614446403748666915558137707523383646386317229507261932268073847044005447353722468631381895196964064536930280190081482570521046502871297526432446032836401323082250648648553061438006657788239021771200366229035172359650641520091889433161494536759935315823421027609183769606984523226133455895327057119289481467000056618924952726179109842639068378701142301024406996785253193464328413265002299272795241222888339965271028112670231328268786939931882762983539156991879608721572193472571577773865674890840927048789821451891739786687454914808374640224570239152047626558004891581971536190747139138599484143117962133884072302427476662720466888286606227867904099397729483855802875614357916862205732004060268683706787693669292575643802201999256353983675183996127517107468505930005221187643542441277780120500298761500723820909222295964025196687848161721022639968478633995808532718329058303989010672242824841603752340386280225633612947296187092171633461785970534740840778988781449594701347860168070394134127998123924958967928460936145582534078085375361929759639639259369675829098748844557098287108784676470911033628733027176120342944894624307666391411695106888740739421614116165093387177291739858011961983494154322592452464766388077148547534263342778538347620334231068125154140348158241280805963675743374661690896952832665305668350942868726088400785545397199237115562337164836827063169491265145012001004549011963107062861492787405691461622148411719428197547758123787299701440570999416617077082348892582100739015306586597526747069457171171385456867415571475418445808729135317249163406598631687223715142251993213119463128579079621495984642263198549222664558153966772398153150664216569905478455505267117760067541323286432349173637645800838457500864643085765067386601737078513821979427339615349412728862698896564674956224213812812545398316477703599886134229419326479972720715743288119389922248339530806314407932842655669777400347280722142140478942575538822382396655986127566255177786016721556217143858305561119383981299676993723215376936981443593174332587985601906608561629600642422189719906342634337158930740963570829588466883468168210005474657704877561040218412584496019517686845046882182054161209704879555220975137352119112653313339937697529148522253882790839493166053274064772275713091989206964531522345432735338454651943100660766155863343706172012438853263969999401513735297334019995970700676984034584813337913529640421410734405791859173050802580870769773878118260968260375311403697457438392737390193385181801301523786123833498940718491837453449361671796968888381779215239252101652667689733091043218911901204289023442814444413781449870129913972713942761915047064803353724788406085790339319438806309410054340293096902947709834775528774530862344645598437128002552128120540269938158068884585447081943179460267472298652357546932226046441988079621627148655169228889420496409803776558365224409643234321469445984700920259920774879029301206241376432377224825244304962428239665811488599213209756247106531804698952895285927805203891201695459061670282859752875203941451200526153090025769010343182992071960091505104789920755076194174583323432419369008749242296312176383679501945773949836665390534462916395970753708876386353806072619969178670443810335263803322771290610018050789569439486101722745671730189314110866336401693634374298799657509106105623284480548921977170171169512403897374884144903716040506046800120865150120687962875176741002588970522085998727152281964709563751636543990139601717206315712239162246733504333157797995633916355392377975102627470599276571994453046079213202545766892913703989397619812085716891129197560080601788347604944103265111018633050489466147315044457475089212906978312646681843706741610256643188693215023386276832815498461715386429530484651461458950435338968080646451906049713190196073435701891422139831707872257933116256159934374822607546064943514356777318341181187392928793425649752671278085549059949072432537566931310463924260684139027461736034123944682801422897406961130824357293043149126915354327242649210174335137517165148982337659368432429691470687192841851779125215582664129580125964137975828915064286353966070708460596130555385245971508425517775208271784477094826734279193169578845594359401007169004324737890723253936671859388773351326658333536089647956785370053776258034358112137633506897785094193710845755418772765553896791788334674550310914447546726877257065132966289417318962130971906531613448060995071119378938369749650003842461884716387007518156336515604139611727830073343515003982809045714564016189140137906478370516930277211135005922978575022265212314700254303002523831558294604358283252518865368044235951242689541934660845653956316952393946868733408720977574908781317954010114885746472365201201257777988957779337799232909506832070684302703996028152507514239759122141001114005772698831906800116246161534688362506443149859725667167545931834027741855936280382634101111485061262302009449292381391790157037562958006604742190812283638673752114190016753526257711935369297757808870273841656120855496254424787807465822478786945349491237532200334582698217540887530079557388903017028510265154994511589266752994346563176339423739310728974699126438439966762406761921501649761896885938146286200877320727926737926444208826527877769936729880016784639445257033372962891286446367264391560069934009679961318169650391552642440655482715062553707152006356256004695788808924855642298518773026138122350153001492336232335570395302221235832332195269712070988192470216603458446152638922079607624594816193069671630085537242241225650384435275573760030909971785203371407355748337813066813476672563096922061873783696806516812126002160576512009916468027693686019067466990515313352334946620477867156096954194068384758572797690195860969177217902415419467035296305530314581032923393961101880620993527543430760403765967638585769172231420370345503978974366191268772673821248262533543924415365991676268574324418825916876727775299593863131628200358386393635171393795374345661312820451012674321176448584984230523342415765259544170668739479265977181438546888814974868060550459995788930444724961594241125749406011895108303805714019053777508050442840855363015806108939969541796381270140476843195902950099465828796732707572584912103000678885101706233669952008569816588794090163921024087387953570231133402570406714730370064502568925461318871532203442568199101261999066339167450714175717258003574383687614617597487816407238229662993920221661439512905984080175613488212452126129179429022200925775847669056435566830944488237713915642097477721120092327201494543156922559168456325963021378889982346197828172583902484388006387200686588370464974224857863395869100995348760482635698119148902237919944878550207650685886010719282346215738728577414914166510161809789383115119795915667149292599545288484558654332832365021804199266673208122189085448769728515461345139726873894283249091610655150772501687261170666095154928584174589187666435929127368947985923263553235906136663346171433377101065150879406848420222435445075127622595377501333828503448108842605496037114369688084358724717437705806796805204595472224116949513502285009163206989376903475781507790251820749784438585744821231404180617917960509149954427070589328283188530135360144453121496628950125197395601861689040743355587045370362865905338071880488548245664932654963421731854830135885357596010211692617328189218150838682642032845655308182318964201992174111341323413904608260165243821233584390670153724330669938410014919519310836742139819729282235592022085402857812723650901550081200413194331284082387816230110761297545569194251564400314978138563049831842299835869275969473856373460794008830826999749278996950633017158034923842168885204825496203090489381253578869154861066133776893177690679780559952730773054886777524197792040279313863999172864859454297645520316819633965653158155194209476325830949498424585167475470138694265586223019342832582780969838058578601000481425257944939012473536043843785401068095982630227109581618826905444476691466552563673842701786159172089544314731182630282013983789049286096782175070703699334829188531649938501388040311440374092765214794841536630966582909610356196053883390909983348375687735098673389365935484176075184731173267681882197994355565765372794966731913694187589486755072848320543704954455514931435394567352270218468965929804753739666515068233250357765090688465423945576102240814621182659130040885711152982741113163425493070096653337524417290746737144367677138586493935636600449151751145163071320875941269809734121118893602033358342687313977546469220088611625072621597197567638591140328154834492764139042095947915574109427225466041893240722867326303701718016194638130655946956017241828729790619569275374756420200954202108029722980154766072913974406337856201444206006867212697231943850723795800847769873454759119629940190935632923502498234884499080762671335836696658621920532664606628448459568326902869678324730732825922681776009785227855112545728670154973677201618709121292160434639112000165186481950484905320136753843465823253046611542199422162340159467076001630788325197674713409860404286932468425867876883515970900054761136471605504201668055696555907799988213094748716595684221489308204246668300436256156451958611843169044763773209321130279056629173282480336215609179680477672982301523804198151747121165809894837849902198645972410918331601229483010818194946668812156747638912207311963732854313360847456028077795022810720999753113562082604823134593008044341467972173922930013424488400729975798777633081690847005962108258884012163973367189628405569206768649613816036784963784198930435461529820456398290522191112871466375135216249819487125188981304687828766207603070782193224313607394751695529781376391653450584391366169281409295856884818861931303651662643027124085894600258511737921454001958072249893438687514144471496060097099882585232049775874809603754384295910170238249596933446313644846798759197786691079043065826800931357965254326127636928933717112437608430921304588454823337888039711817275849596333437769392497825736908623072487842979214571757703523370773130483101130132925525068214373010807955550845298177057136040477156609126384441466088522094511846037764865639363955606156366375850271540609096511929721018799283820738744689846459362056339221257177480458327680961697758699349003299278297591447777268939778179577900847380403286655143647392050327205781847038003483011615526983963750736948028776827826299568109508631462373037575226651883106992128000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Factorial of 2324 is 821484071650481810568272005525454375722239535835098836749464580548444469081208190166638546314032955071603477825118674497647246137290734755343326184120466886192171158317348985784369915907226843129957759943777055455894158403299900114054565949730891946898319371827014833461223226832809258213455002671540276889456513662359052055255621813372216759152970497237764431225885804697880060521610838996036961117801752963142434963916641612929356381289121336420298249818108119333158339116559813806877463854628822918265757194314991968173627345889611551204046316981657590613573838339478086363236551178704773584084506318592391821509233410905577979705495880136773872999826007453135540830747837310933322486990910620017627199848610071372435103968089914746031177116551478574018698676457243721818889012540237367732230497106809426235203119264832067502638667402865560417210166698712427179853704093651474891997457233219480004167551756061917060799172670313145986100707185632969551736439129341815290126349092471360871049770872876214537118589787530994822636245545312660313843219203307472432618443470892359745223118085975768281908592407258897780334097913002960585217399169453046875824691608568954978557278754326462876480938501517947464184213706879693308552977923450212378365998674820823807404705366952572567587133433927896413750303921987978925649946500538789850966887633116570727120575873450540432587615643781481957487928516488598626843478983694739219557156179535639535648909450856953269871886530331263164581367846352970860013994953000755256913370518589356219068119771165652727909254740400232792813148776118366868665602044348989480220075963406419026653443558427378588054070191724422889210182584331617434759710921522764709482941021913226141426600246679994665101694056852767946820560099489986183100440037351257726804637072813824244516665937070782064831287572101764522432385196828744156457193739783385116085267524190951437388676048762712095527583442913309503997588795837488485271039260301478425668349512362267451302795683471631734313391619881626583917116535870606620316596237744105678296412161437652130176163928729240408377831834918077961943745502120141515323624695278625083359695300863105919129104730372917726823044187418961598482320486606305771176032276686274424357981979040998759613665607748912402683723311790632659031509107460243436975289692178872923069167458045726157636675265145279667603586943703949429848299857667924486573557995726366031820376330229252092303943388805800899577685746942174721176265870223596980237758156383715981425943100412088255019640433695286409024549242480569756961226228655429604192923724390754805691024847172182505825941981844878585660273465193428813087879460691551066645149273850597608923213483307534918202671906475676423178709066587020714980287362726380299257284304579242178748152981973787528554169381798419144476235070056513733139431349511795988539174513544681097492472079305278056960570833647246430767451216710632901925301126749913140505456948286570197037712415701308294461750988145067773745954437655247251819750244134608775947172349491069859503495834233487244139678469513296701248523637926394300359211373128212668924308697841815269638139963710200025830340212906782059669194733166051459114122409479079073839697462564891494001200377758901385317977461999143044364625941930320534749302698778718896329253298548863966431166334627296441119968057165982925440465803010092630893424659396658217080557076237820205312091921394344100543504207256051677089495744653485781862795972642139426110604333500539881196630366264545425902610693486554092218003473255720792468139044872832205923153078263671320578884458110741338046350793952649437046128313065846099692512472268170061388998062646708335346787131303890106834179659230059660098351940879065501713848763721704584740841446095466174357576204722623366784580607094101616423225766139905995430741996578367867335379299680893402497225366138058201988689907729348863766915751748005718438886337009987499685962620087937332011405217525474047697895460400180970287994957678470650306462077843300048134702347677510667226167990950445516973991346221882246856265417672277664189867344997760064753316045140134580304009421880919745159419689989429242068236176878641003675412705986148316831821284561422729727219767175883535963613900047599308499006597371640816838894092401326105371447588639032532072355452248630394872791844950502856184347477055947673953182879240277500341255954700107015970971091145956898759790084435519989010019408305565462030455139896712705210773468480144874613974349337714584642114274248803921363820372058851261086225775577018198663864605870227070634780504120329784437013076181386395796122541924452579711117863136913520524571184481071676547794370555478237615951225860080661014110404083954046339571460784324320291485392246731122421741674848753693099351994164428187607728509604037793296863522451851737662827299332749086369134818961212276819297205194142577343165188674044343024392815305865831033074499758766985659076980102247505025899218952860074189084434225012188803599293844152637757860501100898695487120712649689875251391170782362278794606034553818314232015916627844973944954250974554104001621938618443551600074171224499789540199936588118141585806715318278220089504294478286666667116261199494149046438232270060060483887530734473092442448469155486443673504225230817771595749965378118046858458511253391628173752701928835976076454451068466590381982166118039031155376777954394115438975168508847009449539019212622272896534491166247021527068655144472087328239129389895511708389629920305844255384393175578495996058132076275907099708740028857230969665114226705510695409213706731125934686031385736560902507534454170572390814583446035480921841655687329822571360535545240085912317418354431837814834034939072388330638701849460545079328275964917278856535116826361151098296437839809619827769713246797505504946315374664940602304256910090314279947323810772019200101528156717730726190255166349297223491421176168654082967752697909118751593152766579007518310877778201727675245001991034444264994094809592553829674387552237135740005649346818209044636498791795554963143368290554049061843479915575423560302731510876920808789093024391964014799851699458566365903006385203532906065643421306968155392668327692566120718817845844564693473034240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Factorial of 4656 is 26692694493938210554867558049502399005518196600127928168307785835283125600382713958108660729459477906388213209685407608080494572018823788442112066398752426023586837642493799906371482688198252306936730395531105262037660575572714172823753704535583868189736494579234477411495469258372753897558102016142580686448869359094916017918956236587694601561728718289203330993603537283207068037079658427741983917571626580196778550260089573188571058641815076913626197802325983420668712701084301791419325248749140804850138461175834149942180676892243388177508954599925136006425419515438685193118534553728861188807507472661594627739827025560749106194399537292439303948351368161445294191410891466868892021386338659399133635607765563516840760953119160589138634801843542860448892464419364298666582939662156183420576856033751109493099473089465522468146903632989773085200151329974073747416649320935485638920822737278761426965972419747343180933902898261780927728172529533136916891600626893528592366636855156424026647135894704179621136477899172660443498211027144175419046239367798874772149360749241227372322501875955388537546722440849100866098288695095349982806707957822052944961063552150866546944978070189067194572006354749938357473156987639434288002206626999030073730953909432806791774924404482574077357195552311085567213334368658080937759739099265043255779293797550914622861363972647382114227777920009090112423891748155158312104497774649403183272511302028312792997600880042909015622729168802741366431450459595051311821918251939386437954787434619670940652178720938441798458089962320986671353779183011674451073107056004653319011085057761506299504023955973772850830560703243940267921565295430665384969715774451977455121985142346572072908362641518818474057825707564817485415449378620608502061859910553458740553676607215634797312005218059218274964398560589097734762921877031035849561906892045494315900290733929704577116942687614284409416500938165715437706598362183720956974811875072189329394143338358816616300993441845834443876071739218729810800970081463757827236217592451092244639944527556328999833943120644921866009934056704736455055393726788478035854658348125573761728309911919719904219951359611912678485347124465087592163566645918189818362587358506348218128062262279957996600480224155955884439325585665088484387369912392819750366735811742326576379868452984582033342910141567795195756510107964704537650807025056158480473567992615848151874892504180890276658843605212994519232992723656522569338207408024095764329337354182549761556740636920086555944234978199086841017783761779662024514652262331525249770015367984476952784831566857031252195955823432363984804118102467330614384250863042579254390137613785075084947979887467437848069539299866552839496015890373844080632044147253591193408618324890640895096231382223952243708572663244868460017037286521002605046475373692705526481023172463625392924304779861827789206196759449053335512923923556277873870296131957872334657615383972642015919792076954825640574481765365702584708447951410737194815017988539864081559988202727565705756321592450301753958487514854459450494917782182431156205999329029462780605903247651534473034976862071943541486263021420548632342674522866616370954046930999948393942645522559269573386413685184280648937290460554850517149467651056859990194978478976337709999283366288910407892759695689195248507540992728400582297875712635126335031920830907655435818201753442149704762893810235074754572849494776629030680809123351172442937789615340193726961060161741438949128897930646974980841901103784607572290123823060735485878813644974261356183301609632912638186288340780618141759891897970381314097912601947571042976687787135606804526956305643142803453182838943681579369393850415844405812777195966059070950011942191601346738547607057226452038413831210364117735215928334893696056399321181287772823037461312301855379850857841087893913269801898931928796758411513251956968472513613948123628616265029542808588401293466715767515920764338494190485473557362632196169028473112307597709171445315723345451994596492156586328414431153823111384598215482105839475282301404550874209799552907184795584280160092432046521459056379477473089077818944264854077676044406057257651480527637071603984922290961352806626751098184904457539904584098775430883160960443386258981391775826612937870017860036057895509370018000715804205498329514728101729390802119020331832566022435645267332141148663261470504940884965774980675277658376330000386200699627689139922271601343146045867952653737765462634858941586586801802676578068786163943212562866258413587240142331980762071854000715376385913545367466216642886013948814871681056549534320524044624286659633587127995182450567355084902099502768431366171381363119496470047142277460043640304805563194206632854354423380651035345826815266513417117016522093573678347741200816492531064898085278008087905722359577686759041636626771263329651885578177864569587899426823474286226255058199324747902737048182757925895103860271982297508527496043165577386468059587448887140675705322802957485578404369967189942142993252771276825887092886966476882675502668379151613763316374570565457542296167180381159886775808163795276872634493133173948257172063586476765754446827490409697811398423765308988381352108411057469522066726492180870710997222205020872967041289040981407262805178993783116405578705856294318521315413133906205488178832909038317819779225067781841955331316274481351045593657430483308323251670245536124748536377523665046000799727946266514147750279327131983805449607663359338852142767989302787977728426077816045928056529371853741585658049717833513982168721740924086749550910845938276672360122376953474112758471300688327580830484797444320281655651380447510123190588434465538326556717587251340209180874710330793240565544869440565248190599952620383678868086163242384748281974740046578215169076181171287638620456224441683277774810848042745560145952374372870140126489924942301651095654139941046117680406707677269186491398140893144648759393632669450152306830133784993727221989848014975467621194853798876917149480231120622293409955681183259396499751681776422571845727545299283118234287649054001702950759325251941611698791303778551455826103639261019871788400682935339880724771840222598588236855258021776174799740384152206078687438354503676476539536537103722490851712200403502794472993610204234329018920241303470833578293472827722529610760362112193179507627494052365099644408117964105179436953501283206458832363571913949054709961575158043700068899965808813324895869744398568709992927247110104645347424269645235556291452404275134927343321710573537970986525187867590511227046520431584917500720750454633562249367895489391683350960638324424887901034316170145976655706975230710783121991180435150345091058379788216334150373938653077910542563475138052596205807408339128885712726754971354492873854903349109195056260362363223693814909543098787176722721029293054297352728247506617294517546191650774566742563481589595543020578565766647065161974640786152006670568301211566310244525113708507471706292073768959166864636823642841730051019053518491261203552799883347415850823413239222786126471483923409745686581428131510804989615258065979969124446998766472869875182726745089501291825961776873594399241799765385530715789635341799046279729833142235811551619503707577475260497804480997640732548935882898150271191174808455888189872354430970001107078505156545029333471943931726804207079561275134866466589105406897018313052317661136975256327607136712648276237224766443063070578622038658873823424697561611344174234902835171162581836691602364329251914813136658068263362264428429813388955917929854145882525440775003881941031427768480599795214070078613534231818881353750980926539133884800531892809390487470811387809924723733851883232679213579539057531521610467945870572483389018344015333355717153534000836642723123326217969085572610356221987055822590472837726481121686799785685468199690966853755724126387208792101438782599931143469745904053203214137511216367754542617040698542941082117645591577349542918068410730804542720865066753117087036204087139036902611882783709601059327169988195497971426843079925664614872319735963565808614604887734036693387622699413296977536737147920001521356457677522699149397226741714035266200503505119224417432144098087820548943539176519629039420337441155913057377716171351006281327028539700034236500358536294749351948785833069782361386165714174684009618200346742006286031163133849904435202406035651354424959405918566203269392009294889991753761719037518407700822540883935306804978476966098714020957637884794516708780044910495462299919460119377378348503949654217010364915312764983082155654549983455218777005171870348223250221437699306193894958569175106215099709262179380848232762522000146420349807081416398907185146898527303589847717489242564509718838884584267706473387599000326891816851508316936784771684020220452460997926808695985813276532845605446300727462018262037730520695171787441793701956891110054773725745093166415096876351814732887136210347523459667920262374003435516396793753816781481440119317963862278218574278111546592107567363628921805191735174888454619914805488611838695430550014395810729836497031951785371392400472077863482427320404628518534411542575969902567165331068663859157875909964779835395193587950703377146342142199875340144467474060936813745629237710557416542316654040566769091889976050831887642676939264127776447232347875237793160439335813168652320970327472173547385390905507576416532292838488237799352916966606199745570653965951983374829044987336084238119784440026480148825858865313924017092663572642552869201168121930321665708951949022021374813745120311279451237925926238277734929278506688312683784173195633154048265956653519508447293894279339460846787914341502825110921026400394963597164966404731930506460570337372499408011753627454864699358111832057060245731224009098915364452089023129775977827749267938926928982365339958370605725095340479959673834655631755355957198853069541354372018367230706339533102363627725502807003699167673121774404651834104392473533642260708031843977022249331323969556948652251500326708362196822525256186144615570242002972665134418190355448046014578172881356486649628969141568982619087780116563755541235484636052390239189527480762062357288593893760869524246344756032087525784162817348323642980204073784918073409302384059165494205495194920466541223454820316578582857193514627356634128995346894453269597262589722800203559877466526369597431626514879297736455364685636579836144050027529427319377311526163245430270248670256649729457585110642875985377753747715072261533271402340120859295821713726040840545795380097086561487087645812441665737850497069154619131064183204195138571718975245987949533623728749158452515369780972580391702289362441335037335568743370483136322276645188691498265258873193743718818661755948864496626282225689542561959557627692204331903368462783342819891647803055632669734039529633002084109236235539836814186939511004188274074385214776970205614201799081254503462963381720480653630983901525384343276646235263046885270433546755291341840040476705890560290590716032706035678588857210643010056233849369135440811126847423771182179366609545227503577439013202954215869250680553090472619233194500749840646651904111836356836561727280548702618684823245212641274181755140811376153594850440477674478266750737506204558545645944068314827824631161775015924969959729806367268646624999228312076775563902589985129957907967026074859343625504333481197050828649319052174928740098068312808556902670481650197483584245322953091344952118550020666806996847056618559866371461523166920305287857060735783807821622799302492332800018494117170801887048889403040338929034062093299575148026031714990321363793031797168140808040407312464941571916319787108267713131469224879735495549305456620287154648411829865165501170656840521585824682210420152595244339474092163116752523818431207879372651124473471439810781915815298227791307636406158658545702090975413464082294207882549348194983161627182107849953174038455499106783650539661400501535746203030252744400949919227032873924749758588027568353672275269417004432065388416572379219833833537989024575995656039934468604377703059380959510876580281079571656298053009008621005784359413166374374314171531216001360813276494145922360264251569953348039006642225981534493627643896751146627483422167671834462040671943526637438326244909830973309051398999124734837823800579423458555392762733162175774553454037204346058222997058575589882130450327527446286994571001244011680048717777955488219875039022318631846706051023518768951871124117845202947990320477901479898539556790882353577326312600743916846275533511148304085726019405454110824060051186311196217864069120913179364931598919129707435392319788157456262672408855599792965979552803309194214537266101142852401176997394801877345858192953442658676883245949599188617937006128386121704799634556876576020396013960732146286529485648136984650371777381189480018299206664651669817926782614088761301141920989964341764893638478709842657594010492845247865559243261962466859993353413829471914427977059134640263668577118494907014977836715162633615926730995202898154968048781896188329130635857514287316888919696790973938194611884766535302501539527929711437850642254873715639541234487892834260359718827728048556912071310563899617140876381640634384680790647598919485407879517409806393609810702286178124364347270023436978733934905394404229393584165257608814607784342423558655578456543923169840122259804401332115321895884986933570834735228197860902673633533562307409414788915091029472729074018236864766337848610613726115014697614132228527686147184629796162105332236667777122002576627077123170153922843505507972548396958430437464747058258615355857941596498993782903386993941475826456406411872352423763520574752791180241730698407046026503258860454220830892618925893340937422264685696922744858527083016289207361207060828215669554624746670533401694357282764125815548478691227577706995282089312056770560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Factorial of 23 is 25852016738884976640000
Factorial of 5556 is 169951596443651975670936106905268009726857840237226336013137746655786102060954429703093586502331082826160126799371961047247995144715820070247312688604842794768928847291312893896032788114634112357340801046170478091568545158838617903734203035837226035774546144492055388045581638976896837202800910346701805528345780346448737279942799768285740123441113877459743908298928378568056037832672886126415979533891158448523868699977603108952611899206157312431666507530013363132993908823345469036140849433930083908627837996081859089633868991845092390413814366502910303364258473646056963644417904925510079733945695273847607353701001957979303839233109011259150434755085862227371047733279531770221023300431223694678773633509783120992795251134935433303600096493826614284318652162220307491556740982718776566609669634479326884975780836645899251468719034078979946703796700833659276719348286655351002034583924724660441367402080083004659766777494283052777601192072947211204828876249280839843090266089577254988773668901170746466368158027524056266854942629776901104375214407771822962679765794861510440702287992151596790417056702580194755531200365774118302552783542994947614908886621323841139149136905270053165962626883337469881623528374092981297320811491512422804215922176107553566645222634369293115480449684278646031648470315974110656135897117119936689167140663239426051203159415061446452162085232615926793971619371243237919885795620567731951104874039570625761069467078260505478851321742975131890641372519244089290115790076615548628505328877786045112333515559127489781749644061572941149555063425558825585624041597724456759955192578012099806681981197103222463932046307267161736948283096922827696202733225271542717306116806768855614076805923859634261965877464640651051018748769785899191863371550974734959997295624080197920604195253638703752047659067197152717944878053870052052670452333834137582658488371091066516144366225297018935259644696623758926484494232524357141874504029613149970730385686225732992132224787594231291584670398886648633990543841242941894309607103686902732067651793799088893191373675821844219570281810507961231758794951284522486585924358067441331583880416704772584964787611955079424203075290815131583073553125325743268785756319122579844537691799390859044850450414279628953589179073957923956033884175730938819143780020549508752633505414096190500288634994309017540044233137009053721900257594658528214715721339522617030650434600496837502255429858948832844413756231468632402237889526264014901502807787079606400561069304680687727300456713876228624695100010660344587840799344396305090333998454412690907532288429925280291207418609055606803216182586999215333834189953718435255282955575054736873663059092116126723853840816368829287043212624078831291897123335295913982906902503232995930740081415502291676740484476932236926395010403588369557749285880963785218816241505416041443361377993203497163276680025989169299531424153107153962486584423851737879020050697407622369701595487487055826936904663705595996327302437582905206863088735357469915185316057294081800265621183747276485862706036013213731622802656341669233244628364187820436060765060921926229164551887151964789768926560518600687531858445412595337424049714704202916761683508191587154694907938470059683470369316959701285517233532290320633607168262305673985626047073525917613512134581686553877943883117600364435760366089493072611829057864961950011789080356972974544315809092514907511525812841647667756110781511087728264608227816947035574492838075935770575250528064998435910709319285379043551829450932219788077763938109995419757942439215860006545108102360911754590181154734817810025082069430901330467235998124578591996101378880066801514055746848709489147930774586462778926187516005952558665216394202954516402948090585983609720676195726962781554688094593627225833619249521345701588950700469851944335418643121668140961332365083551878907700202014028936259681834786786395402572781843016642859607645104758068877270556168656679432700380811256940111798771148487017645355484798662185892063445255128420433007840951008125478194931000767447262514782956597480398265254612040615285027810494170227710336736445461940959750910599894792877438375503463844308635179722662297399564910219078070345383059347085380948461952690705620160700988049647123829396015077881872712217728541085350567107830317390917558851035832214773248750670884434558059571684229948611888632747504413473618951577094763610145905218356436149465422171133936409636343335502831941955947444801444481398486278583998682955451559262301138275711479881607490607581638271866646818694488739668762271728748036309571833385245654560165648366973454959847898527193875997710198352537877966107394601201351632936827140722025325312527397610525692492897605588347649334452329730702313946554469625038077138467087501419341760503547370849244503316371064914891356975943456649690965240563144768786182576342763144202528773628679114689966171049786862489513694133511911829163365326555513160228454986210317867952925756072270174606949579602413899649048109232155070423880860104835689609211005044441654362788191376795591266045764797416809012899683193679421146118318004619628892522315350980838017266998207561856469730829513998435340135487217418187621715855253156139967986415818849466564723549197476670455253354905695010809781663535213090745769977806034757357666978835278203915475155802772652293781147570252185940690652070290167606938541262045231749560042605886148513012674916263544003776045940088532554238558420588525097726835062153119259468831138496772432750099350650681463989025011144222048724413683533414308235673011068207981684080919243477105415177743089741705656936946769574602290356896202530596586798443054765877474974706381428823975697980014241124457945125802281428218267909300893006476531892126635453625010951230334834923259460082477747759757318638957899638324376978362458108081924911927157168889486586500758135574345207220606018681527416084884650785612934391370133978680022017518429062955933247483286296769112654227831497514797547338255283638622045112438444241178231298482643267672623918513709475009052377673088248340646430977887534004276603194043813692178192693481607547214463366569788274174539323786757289242812012439597341631933594740505597619621175459315253419220618723284456163461385329619329546319079742242893339363748283436842664685166048333381768072835355167845664021450676309675435000528918691734955166161502641729826402920087366894094349586845062188873550728524757466180918529182974782503629967453716671155367083537372890350846781248844017965664445022403476921974788281624405009229698971695227305807063316537401308760762352220198379862195300809072822242684847700021630045568668898648381456334266602395999692591570470509621714158148630756607261201210196728938722036340456526084723052577350598686851368908000985075589665455347555274033286129989447677473554714718965966550844150582198085454572416432548505983611271058631091635909827488592723279821116978367686251493822580952829548949758787257680932816019153062326738550018449975236251180123962744408683948681265294337959391940578798847378232987281152471485360831653916573330236129848048435326007414921471732443411561090063288886906769729650091250508059897416935666341069522923110602326934445771959447466348334963928210597922293833207000042707393280874959795192429227717759090907626316556325784421719839404529523593958410744734531602762196091937630947288345715179579295344066287806381572562986321112495500707224945780843142747210111567051758763797615075694451383637081539253979385485346088192764256749478432433467021621872827713971123002169034644014010010996150985665535029484691292063427991095282992718860264882886425574914828366597396842388511288721782604643069484857728039691268907226782454093729677753946832974831570698485370493509350369230530889540227351843224633648261313443594552917601759539490052605176402789413137086516655308987484540067236632338097354337618956323970653468135357718943086497425687150877935353290923567508523251887764355194377586021289905794825401534689557875488643370513025882631932564400773293809220324239181150924711785152385858219654983081971245520524796713915054430433742448844767949772936262237604374935314119386559110530093770512619063342072422802676143510611945305956242820920206179377021131537188340040650813215301047840158142838427225213641101678251399082446256875757699251808340572053029131821889193062006775507372178503541542188829206276883227142279186186114650570847544420188730085725501790231362532485909141839752067288188905232313808088337431269060502626409073444876821209131430994475516817450647082655517151007123683614391037556377053632953437976410771324336786868062653236918865353332845810643215878079269512110024032166936010400136341201463901504862994674012244090533251050665087818006032215666739608108196723725281772703499665282435987673478018971976077318219653545808129088172914976482380863334529792693945145955295135792358796924650288998074670204873883922619366356125857013535443366222376470184508191078711531380147486067786591247732052053879882492849248275192895498746358762394217799949008188592714146000910558600488464717891504657486168061750940151180371973511228878916621996934211722753789738232969382275622324853102153679707383781282301088731758134887859998902932555152019150849963887554177176320820321904382819690756182966691063893167048341032340784285932830714344755207382105237357668702025353465600315643922112120185363321052443162776308540918638385809045259252965174356090452046385653996319074169653633059347294869416141160134420184665314074103555757292823926565528825210986700867865696161585464495067036289666412020439065701602457095291377406559521636424069061330225607862003009481420171054195022929859884840235109002978790775339964963641190425165886644996154172482070190926829074737307550453714275559899235832817345654665300274689313685401110363713237206099223196853037196457695209780285450769559977382820246634372833322063699118435311225986559536823127324316610425652422464016394113213624260370967333115939936541980550765448084132102333240711120460137390180280301916065566324727100499293631209806410248475750528482917805051338944004689366491926769027309662941948309749752008935496572692456164378085956238123725101497981480197026377775488833489489788450823061163162482903356463624051804144732817846926950619450355346033156911776853333426524175662404690557254611458803277309938694045055068692610762017366198682456463666254830089032022194193012172013395750191675383891391095768579058377282727204614412964479097702743368630881665369401410737477133019746849015068042649371238545865631523748059373345187342583402126968727241583128723928004109928332851820946554591003672286261576511670470980896398282531062134132380140961641008047349676165120303192525481762491797414973432157037423649856700333197114702154446786308357859292241149263792668229311746387162301139909965324535433135849943369605103432670695493671715367034187096945649554307957957609486154739852618868614036915135635426148445761475273505696972449895970088625081695359968866172099090792420065960342073419880830841911993780218904425453628398376681162289232732286727796313070470269389688539095354418229796973852133363898590535611163520527845932058865433728265284048972166877419339820041259230575823261237053798441374269391036377706128861362212318491706633381352057239662894514453019858802427464049595027571155643400749604070854390631175523196824796452672648377160373000917114070997970879144729102435629884018410463402505168718610964767873956454274874086409501033427599152700684633965979080473903734320943542207191446860944056834731493824677263643227017028787928427847049913246689548487679595996675750440906799268839446115084762632028725109001391015774368464892264988661538904966828992638729044025723664160268801941323684299122407630158732609179760901753194806691281935384112010731526688607705361328208050727957991537021327130308287560031379143446813521338231859217896055496696081101012238622891601993590478161120874248361515565773725546643756364974250652878535345441926526418956615147783296673580616556584884319059228282255366174969510450162945441380201700336166741913535198745434861870092973064725065906734398807098385770784349595868099454890308294980283498090148622690796487311592320194641758363895872843864105060822307937119497478735108041117585085496364643653102175693046992946693994001653527940849415801478416430527653139525096423143773481206320496875119478408377420371872624123080923180166620299266682335267116969003860848442238637465302991928154379173101767807362791456298631360866809878520655877534870646920462952636295639237100954899378306447886151254905153895619460325299019152356658441152906186708554306290915578418887284538790033119563553735809035370544749990446336530503695950334174822116945112928035160527161470700215342163788641270264564680679744679839196015622417895437143223256235791723510239347768086409132072026692433617312487569603437465837274039170721585051719597972468590965454184353821781774565642399194731194697249950827066449632256344996485056682538583000437160377837634644953343438151044515612460575742727248323822793636140062029532422835186671847619229773181060718327094335293346072092910255355138407193740124424445603899950676630080490945425482422731612478694213199378883573208548200924458576405229972625336277985082877717645670438413961704158589851392896989523250117649059563244137080237889043413960726295707833288192807987864269128497841524704406975251951996100841483608304426363628681139968539012762074437342239073333545942640471709481135593342543517048212927174956779928371090178171998286110152681646141088164174285851807236402052373856463127297982933556360966315608288938291982288669936481303986313044569247241558179253269228556550890943150276147876668166008099866860255762207587324241987659456329610979223659785093791240664526928952900376345439714074841758291431791730243871249310103735334819631109480019283221429487753984077503116225629149451088213746752802719593210834704194682227915243272510778337483374701322905895669496454940654365859838787287474968703677199382531297480920337315855716253941867509697793736161164861847860893696528022456993361886553902447784436776558121007893274520477297822095267305483943815103743102906073364438331190499434659728521318622115970528843767759552800016408891557741135944728461594090261955053749288980819080965846236414450727989537938125555426257881516437683528804498193909246208558764496357949319805953727093692452537967015249598335787710789520696522278585144881554115878441921120053686165876053301096021767638152232703083951445502448813572902324952479489886884433541621087574094382890075125564060846626616853884167623024274568914403836835265713986583271387161896343905463152391824161446479714698983502364439977875931637172854980752510316189732707245697007666784279478451142455533737145116042952962160446996683259155465515963130881456930362589534025312784582130434287685388737372843896820477945658440765457110721352479782193258823319176205848275193134118337315190854749781871350227397386652787988063293166217519500776284659668495618280711462523952905657734739225426955811948464949903820626388662154859787483138785114366694662904830964305446536403108675135998103598554244969801683131348057093460843070872960027064300167436415724520361742676265932275025403669719042426110954980646043362643775994676589118240575447003558481200273653869007748824196562505786239666485471555966291112983736951766670645697366111231875196719375404918465359586631032662152618911181720172575660524484837026461986817150967447590164295940992437043173465342090347250775447874943778770250367434617242637315214277317556135938971844685657812075687228862573712892282739134214117141726476000686890324367109796601660678611548541166597572564340533765724794109280235330448590968248905521214627135168262622571194010392119103507275107979860912181344867133382763612980841393600341803100893579429950462901049274913678337894028121698461052377380025981326948586601483352432601025294046664633347628723417977076348137975007496228840829928988207220293806431806865223764142032294713777534380126248065755466537486906862158470240111674797305068861971055792401236383968550028922944926924153914829498216587968287858411869403480022273555649404406428972981810316349254813635950950411541203065941713459448875543756720453608079034933253270087932161407466518912255547896726159925353358124249128629656091304542164083162449152584811274590141262216388083116228576415159359070065336407372118480901608696953908483134181648875875742793102725125532528988968153884670241912610933074059057717754404082921550826499201045344748896058771367287858224893078254478499945619645060219463347799005744645078262000479736221453476032279629181870369976904685997941940845498810025345286575227111177643301316244964476322130419120226409611312290331355759946678820350591993256745976799361410330986390953127193612879984860265931942325862288422582668110862048305581283047377542488680226293434449550494282761735771790912389746058047493826819532573855795933290543094093195512664997842872028106905851885780992000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Process finished with exit code 0

Thread Join 이후 Start Loop 사이에 Thread가 끝날때 까지 멈춘 것을 확인 할 수 있다.

만약 Thread join의 시간을 제한 하고 싶을 경우에는 join에 일정 시간을 지정해 주면 된다.

        for (Thread thread : threads) {
            thread.join(1000);
        }

import java.math.BigInteger;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.logging.FileHandler;
import java.util.logging.Logger;

public class Main3 {
    public static Logger logger = Logger.getLogger("Main3");
    public static void main(String[] args) throws InterruptedException {

        List<Long> inputNumbers = Arrays.asList( 100000L, 3435L, 35435L, 2324L, 4656L, 23L, 5556L);

        List<FactorialThread> threads = new ArrayList<>();

        for (long inputNumber : inputNumbers) {
            threads.add(new FactorialThread(inputNumber));
        }
        logger.info(System.currentTimeMillis() / 1000+ " Thread Start");
        for (Thread thread : threads) {
            thread.setDaemon(true); // join
            thread.start();
        }
        logger.info(System.currentTimeMillis() / 1000+ " Thread Join");

        for (Thread thread : threads) {
            thread.join(1000);
        }

        logger.info(System.currentTimeMillis() / 1000+ " Start Loop");
        for (int i = 0; i < inputNumbers.size(); i++) {
            FactorialThread factorialThread = threads.get(i);
            if (factorialThread.isFinished()) {
                System.out.println("Factorial of " + inputNumbers.get(i) + " is " + factorialThread.getResult());
            } else {
                System.out.println("The calculation for " + inputNumbers.get(i) + " is still in progress");
            }
        }
    }

    public static class FactorialThread extends Thread {
        private long inputNumber;
        private BigInteger result = BigInteger.ZERO;
        private boolean isFinished = false;

        public FactorialThread(long inputNumber) {
            this.inputNumber = inputNumber;
        }

        @Override
        public void run() {
            this.result = factorial(inputNumber);
            this.isFinished = true;
            logger.info(System.currentTimeMillis() / 1000 + " Thread factorial (" + inputNumber + ") end " + Thread.currentThread().getName());
        }

        public BigInteger factorial(long n) {
            BigInteger tempResult = BigInteger.ONE;

            for (long i = n; i > 0; i--) {
                tempResult = tempResult.multiply(new BigInteger((Long.toString(i))));
            }
            return tempResult;
        }

        public BigInteger getResult() {
            return result;
        }

        public boolean isFinished() {
            return isFinished;
        }
    }
}

Join(1000) 즉 1초를 제한 시간으로 두었다.

5월 25, 2021 2:36:49 오후 Main3 main
INFO: 1621921009 Thread Start
5월 25, 2021 2:36:49 오후 Main3 main
INFO: 1621921009 Thread Join
5월 25, 2021 2:36:49 오후 Main3$FactorialThread run
INFO: 1621921009 Thread factorial (23) end Thread-5
5월 25, 2021 2:36:49 오후 Main3$FactorialThread run
INFO: 1621921009 Thread factorial (2324) end Thread-3
5월 25, 2021 2:36:49 오후 Main3$FactorialThread run
INFO: 1621921009 Thread factorial (3435) end Thread-1
5월 25, 2021 2:36:49 오후 Main3$FactorialThread run
INFO: 1621921009 Thread factorial (4656) end Thread-4
5월 25, 2021 2:36:49 오후 Main3$FactorialThread run
INFO: 1621921009 Thread factorial (5556) end Thread-6
5월 25, 2021 2:36:50 오후 Main3$FactorialThread run
INFO: 1621921010 Thread factorial (35435) end Thread-2
5월 25, 2021 2:36:50 오후 Main3 main
INFO: 1621921010 Start Loop
The calculation for 100000 is still in progress
Factorial of 3435 is 1878776836011803584481195566731971565661498258285339325192933679402021775398045550896145471932565999960444319221519027879657308736270470906224641297627419498583987894322904058544546559212714073116749715873391461495327540668544183318192733372621335684863110321665450076969445332036518131444593353940193465289794362037453215133290696542139638156930142523436941904088182017263828313554844472531553317099025250110933950638247374242593792342390630803702870731961395656012210892309200945575031398556961925087758236575409077657375221176556239314537433354207086990800652917451076643957700752325910254290610403138131373079577875460532747105374639485390364014543085996195957353703330106930224576077242113214283790272399326975894937792824747820174319882988301390414893109414781015701057002608620436986506843595252456736038661019532277940749797169999902981524387746815347130904269174752469626110978652864810632481459070750088956114763722371111177286352941283684772565746818534499464820766373043756185967166140561502298575745958576677886664647765326136314030932172917244131986737885096807427549924355159958104069193989889190517702027832542327568232461022002021798965596899931968653796855016362437401706391392998350745995072155535556180636380683387977280562481469330479583018055158513194867720268661830419510896362342459059425249554456293093065674970211543896015788342329839128638938691599183803050949563825863915960344695585276639683973096460679789889682783074238198641908338336246944381908379921102222103940240236652704461793090038787984202933266695395779371032240943639489917402470735577871321296286826222635829223563335703050649270449130862718646964997561319275927113715777481474658867238848560292096610284431906034552778091918658212550454572737283354879144315559662830022046371015992490212455794085347386105731421189393895516112103109914016071549315707327528885162401806108320269737006147331802359642748209181559705470360550581245770614200587817019082873367067249781949850066355267476065638298672946463058242625541835282286610735752626212519048698014578196901982864173230007648201811166284867529912699514515661229057426954115587075884461544410992388282834728896093121975981375592404510706644032440712461435419970931864258504979402461747988708435496342477647663681137656115985552013199897930618081700636960377079264259244237843806383070509594974957496793489941074456361539167860720773131522126252528119123361030619220581020738244771908047293125611187130191775300940824445496600330454912238512685006187837552615263952857445543308631035175503843956563154666836467370253071508683957787149322678309334127183608893904308651191039851753788184391005941992690188117321476709783026595664581705139513766998008348376251437341983358026531808617859619323030551672630225750778372269206636136472674827124261861316962432855602488931281689873776308798495144430512794173182633943473937302471698726425639819132397990374645534385073264661417094229922030114949748665948124081764784764502351117374555191064569421242809067969834941318973589301859865372000358837284036257160396018472696613069964733980474545438372077515194911925920535753902141653448604670612180723954320028330371482533109261038353686836610114524747734460269300342730638010732068762713640188091023965162024011165294316489619243043466045680416211993837526220020961228357960445008730276652015051556395028341745320749266161325920317670093736971384210939632984812279161595390091177501441398670279482346887925570661288051173459985303749263664622052998275766354783629900876571709651776177825574056812482558076518364374432525702037470543351486841526208205793017395386517588954079689171738777164428089314421173946416216005097045292831514243637301926364385256215649017345611785728237639925838114713951668648750755536180615496335666358391056646555219906993202547591124030010728424221915788126291702508533442670526677547580573744910631046684244285263279298740719311086746566157033188323046039907129477488623743621870380493344111773388367009229291521905343899484344185005575725158275822074584944148349351188948093112110536235442648829334493793963615655087745667908661198872051485880291684240002722270108359645922847682233083717005076617526790919196853596571712149668299731224556748053805014163281551529945237783048741602757430357279633841195698573206790689184412326454013413175303767665710437955473418677144838063081968620437206941959796872462891206988692623230059582433564988360605833422284372461066177662714194780632285987697763853591792098163177017668224483078991726949798174396914188160582277726009951297047755556159876989280209386568958687609864225808947748261368659424748473983282922520042524842348254579185717747546984570513771915482310311103207922692126190759435669270151028346758574246240072897075823510735973634834390575473630378793117275067556870724044245085977231618824149462167619410070640423765884327593913081695342414399640656355273896216516173049448717872081688976434624560431111296432025575908296899816415705546587810348933686051898584194714304034177187636827540961800491795224447824661853298916114846507940558358578097906187047572156307868971351016372508747694413878677330035365597361948584472349793367605402937730307592902882521936123952652915438476977945532194368394549154338442023323257542589543429027398801087594786149082488540452020639553723256832685922476487861062608396232291707891501677332803694611171677421784241698292627321146348085988741455621658534765684843518022229932051884238765268393933862035459581349270292407836768988293075589544357642348893936975529396891820175199218277077575348444220412286676172311004962019221864618474988715586670324079511456923322479987286032044095761195251352989767391970209632181388296281623583491306613361780898559537080078654670673496488238270056764638425843006147339453821695816707042740685438101621324592843837512398027232671409627322563161557244471330625957246426346115371127739121664090611257073352770051599441496930233028696850065997120347328908028699932250270009921246459939413077071577980605060277604895251903128174092475776665247474973088041844245009370699502268630913226539799261149994978657093122497562387045895724277791753450837981349099297645595283398700538156487871570248486269367182736610193730345599126613802836521029006881955635540812306430925608824250391727992907914348459126868829231788265053356841185560245542985887784333416788985232329269590763856223896224180576167603495185561995483467409931459553696200761264774049714139852712859900864090195860701407687706741141075116909603944747872650899457516895981967644041853937663549588473551146853872799316246337657146714549226753603574436848981180615409617454363554574978899196978344613163674664761346726655680114962938388032387216809954225533032805049491161326942545851401207115685461252224747994315065195364720020454433460525447218838808792548533197249638864933453387691069770704361737532062442704953292452106715284464009582203169266069950621973561146910350846845070823294004802197385559356040698704423901610729965779494833789661304769367933042363239169629063680939203648457800979308476754718637647377190535681429171279303025426521131053406127177370409139207095137863994407551463624091497378609360898250469410507528021296697065051723285380062987488625515139142364269307332560078724348906941692225885645438012708779853483131613787624927132401990644503852577703523608516856405617432369237775695186164050618043463848758185120453125898684441679453968276409010245971073733643939257987265458262386325268122513636649098202225145292491586847559809186270809181643126886458530076358212590533969895947924605740847592182105217932471859240067166684184695286245992401401797940519381101700399098937798990828279292480846076619991852060219083480419353717441296341332463016612587257943340352530722532433968653442672795932177889036060592434662318548109821182998968204609365388612814966050470181586794920564744830923196057182237789251754552009945963653637545888518833127351242949102122997513726565632043429218121957169073720587182875337566349470508704504333452715761378650385824840181698474712489098263163411720780781543125136040804038414630928578847773159057974734365666261582083094115339071259507092597955383324719275146569042556035211926230244261051290987687853143718149458466383741230763383787666688313493239542953398828215162704795881981174610012622365578453359357717406406649114651439060837999156026663768104728371819690101143275371810034928264647916821716749104772074199067684396917574141363478049423210375130282184291553483320297208345686876640635801294159567130162846538356788866876220544081853212943673444720885937347523669181571811203913490125956594386151971364293306502830512759198150925737096438345801571553425351689721572633026927277246334618915093511782961669765318862985973968606607151722501041872567746745229289269914700015339610053019640893949965686430494955209750911374335239966639393145527624267465814679976503399655026095162655136151596376140250229710104017146385242430642524224684421742821704023296441890155153915617575199866189951610793043291438108531219508081135573644979009566723198923662120854460224108437313567661203587381103416005314544146334682181009077448273729999258703583411557943680718919587600544253837395524322569202622058748669543172307314420231283057303448550102114290071647500414259985022972436554397994946339865742188741598940628985209587095562207166391734055302209376230219205118556307849784525271194276443952372568368462268113821068991703692085797498447104265200304939897455169255404391370133807373755126066470576560545815046942019121641662760829311287319518490536070314543697848294300553150084495408835925511897641795881078401418682249228176817873617061369095845875091938730283990689552598644520792691320816184798535734605287146715100999718921641479392138344486947134250380838431596387995636418124676508700934403325711306972567961600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Factorial of 35435 is 38658899203215125166700758381334870236043293110056086895422625762944264337323142722686755946257830250928308966524421590938457182814659743248278340660385809022600795101697244340836242397117316757443892308269833457314583864809678818568010642895798649978048920096899749030246486246929299902882419367082856840753055643421263148040699526860327935466234903776869301162600709910898984548186783800372911457212662756036522096267445673113320768954078470206563862317711384515860892336930405031850518900124816491537168755647264612858231425794704027071417872983700009819085678562237332249785591953719274467841401375574105330298770245639850022335886793936799816758871667644906288895604640518699535511660496640730935962316187403502632594485025150718314352515508235041931524788530580513850105928892049870764102435896329959408045085463982274301899733460584905699457016564059405809376792138852179015436997851959786025747735256565423160204956637993866569303599371254799046067536872935057781869391805327792497932958484510519205152349641954358979186680492397857751349359239432030417552059495720114398455322936471780098806839396360750333674401452361943554005665266509022434887909638700880701263619142020496717200307037493075940462953561580131316873068682508065016756576834360514269277257868649989916283609769226651566749909703385780992755821358652993708401157455482973866219064580165624100030783228797637777916911377537265829645064768251980450590217249565516766695968020117209638349426152405292327086222219529472464015670651216454626621056354038215897383775134126262288753032515755190651794418153154458167077386501308404850485516622781840593276907943291902293188079317452769537743377420941128700251833755438999998923237691983285124735755573943997277507582926998503694957742810332595394286031376225180548626890243393064379033649285338315107722507848824859760558543922345774549462813710818176009878004047919481107551203013015859869539606901567305745210754024530760798621525250008455883592817108340536548677410531223435131386082390156568108065290288542525921836565671616094490188687653609766976579200285855482888943829404756387909778167510378584012122313536246678696384358630734588954189283785595868930029824042152951256160973679914310681711389650125808198178692160910693448365526340089926479526072155320060766411128310780812683028463241864989818835772089820910037273116722593237528296283543205854999492821612598722439725728465501358904902569236291797728148252736668265086424273947480363084057205870740463929908855317566247322582858476836002628038767264086768886757352231270314515077327067345024179641554645089401624932684888108028586167445887104682671713930698927148160498659128701902642496917589002134814219640994149358470129959624910356786258455811994157131923513621645924903112846126985371381957629844832882638331941215107007668679288794204989793423105830844578712853580511588099705971485844558924142873759082929700522528307679333609947804997493843804084357358454322956304332472897142976004362068834419260169017851026039468229858505304978135522407758650775111807691779232124089000090548514090509905501165136446294156847307001262537666404145699910709717278002306488454414677476330035201688115948985080163541038200550668710429436962229560234586263636926386093743245575495954506509524060133058515428524279878993157096276442148053814130718781474866158426486167904501231141752273006470866116328391668463714356397604884639503260589595092865690164629030001760288262975606070826503923974688502819215128929747816699307869451434285937457696206134682562792370958644821418035603265040259462140987311627943998312544454199455826776133196378784120547188442102359668174068125416935730324960617130760058985450609002085287945572437529175268670375306032616626497668315306947005030239107933095068679736732770000578676850548340122035666923552266068476992676372904333159525604624182349136899726491680073459601342518230451583980569610533286490759462778944277778273723864960977804150733418037125893688158780097192147464501987551883722705720193780850879442532167356332867574035123724011135210895091019937178095757290772286428665770317990875098964682712485334340702627703984208076420052365510805153126740646270565724349807194049712794488627151357358217722298602119630254609762445678852318359160928437724424417189560157485617011881313762395035831617382052170292276163377287403298487149122477677200841476382164491166107984730396167415186009340943879928024641282638931905039339645751933557559038890390240603259910257033533500095501908613591547658540854688646878372002745299910919347881058904687551117423912281614837504545954410859166788521423352409936742153908537501602706764776175901363931458182713338700217786557262390537022998196604277326571375605558540725817159606297435633539425258945529266118892851025624486551646112557213619751758010504496313684068626841016554720078368774109718128928848256065636686568867898311094170435505798421048796242064803237486197515777963883076244404596594417587403353942825568469386868083177110377685049461587230421913052017612010438187578848079366223637315072371408466775736078582715337585081343822150548699192722100325942964333536035136172478812052306433672119321607735688006286903983842746747542653606960234227990497648000718248914779363292242254272770009211548447592180091969460294341275576518523235402885386418414698652142512929437440266433395041600934784689008627205484479917046642008187366242419444252623404143678238609963471418174923527741488377056195312841213293016633501681762154813665545249139759810239940777183229740412052144628263996780622021319422632756793800750895560806713347086337965701871562259090305231855215166757552173809711175826638227424977968016342242056749711607326836945315687927423039651949226038053495309174535432198592128880738697791342837789894817996338698466163441545345737381727316742915409632762786418389199281409714848657854944480101771540411628169740476147270716937211190055913580839502984813958784437173260324480258257872373561620344006484035788649827663779921731392366291876037562061486034198064156058998375112246564402878215561101444270990793460704629048190180578258736169934771809646069459405188518454586345408886771411925546030447312179196773224187190763804881739668698515389380499444686269465968130935279468669744652154890483859179122043630145210539459176882940480517058967174811535348992363909956162444626357688460203374659227897347032618495019900062265945360551437604339896681384424593308478968339815852098047052455511811726612625328753074269663413970690336559954018657764614417255940286564181070017375280620269932594110318990191452401750061969597950252686436384687283620162301506481177991106002570403245649036100007283357659399078423070012447098822005017966093099297705586931228355811014401750715550736337869474654607063454485922597499558751541405154283600773430150835466618459423607846265544304515131877810631874833183706606672472535363150077901961074611108280105596731195806181538632610379735127262729177701202628743108014014556353217248566543206157172911329048310260581338429402278157991011962491620639273627965156665038158509139944765196676939212232037443867543980306402317566024118638735219029174243625442440917535355982740046006405163949493752735398848998623327197180495135969227055907480542108528216905642457195514166140881132883244909161389917896155595497984042804858528202312074319007761827204660645283359226959320784694853578124629714836605714607476978331031547536141214627224972594166720631303402543099939539952306479033744028242781638847651825346265630195137623879098931692213363718963367734110403682916376090593244536671002482419269152978349242152441624743614278268497111650513249744326849834670527245051819722427212748624644370650780673162581693391684355256969382607140568495750735981088534484368929896172465884450133229194257925909779848015645360601095704967025026718419436153621534445235557926293229571176819410738482619206489695937373617474273962387760831785885492231676327226313531382674458998961592263757485796271845810306826593361628559275076190651184468706578947089798104926890678200331681311201764884443124684150020734802634243232752584303713425930304523792545072416943479742258353565252265474883122674739206170636148904588123609342995464561524360355757987625547070548451154732358156573620924263433453861196786652831319019173009323112391320051837706305668935273111243705101756684896438752384349297297968898320390645037739131166193671795478427350635088782729533801733826817961010922841995996776812669128929628480688871090162063095382549829683752878723350745355885865857123274960121989950010654853286769021743591867154188130178454390698182535703341977253293548074762738862132187906949919959498274490474568511347065186834187154371417128776994078425510289700547306629891000755591227974887366740535922356537252550982589698923093062666829233678312766731027978760668587899678467519562898214465318307385910047278147155568104311549844763626470522808552494068190783591075782962544393476236624784369345734715975436749148392752732831643298863880502253650252317188120150361479366823485931812937089945743940038468441981515509574759458077468407818334047127469518749801920971174280665798574679918601455647132549191218084567294797926133786932813614161303525053079765251890021979775554037281949578501607010691175987962032622867136870095633929071305880259289294634991887604610287228880201102545735352151187873453795649966885983952923168854248165572627826885447857889904923432790381084260071551287888256349459226447537900973452718441002549059486408305501640401276501935843108221986493355050289285238395471175570727021358713905362373990198427391157922997526781702959200698315761069623876813229660924552455946659595284397442879431036104212733134835761507546095403825589847585798666834688676661474165646801908477645038003590124154068985135052082290024914662270466924594194462085839928968711510551076841369926068540607679795527377323011274871786951613666475774292256414241633093070837421385405585072214714679499524325164371461659227147152214941635487197138307052498773258604354597367745646887133806577806958285801550162523024408050138809821063167299347966413612028302904243661662845351771701718944839420676109961659466531614623636029086976459130421581241365087013110366697047607976756990478827790187407348193225085019598486421053266929219247808545348169888376024938802504132106630404812672890535514679781359155001819538672027765383492218279531083800178225232632028121706481964679378634572098726410250779039787696511318715775355515952268803232718874408457861080790585676083251758375008958506915463610539351062207667272745961643719939887414188131392081786241684358932326317916368337870415181757385971685037540162716129362699593235800914671538458833424280483377686782269779000435240396529758331201761860831648106237153982444243038399955647360711922926876208098045620729233931040869571704431647294716219655890913305737638250047536653417755642775666014364797793919550914744992028646161137149398774793042102978595812050361929837430100063526316922914942739533681831236108845735167438750403491357838851579025936349665143951358857423042329389367892510326228171734031217728901509276663581209857632385744826363182529036595637154365029906708533704765808862321320206283955472228688543884358939403932422318370572294061551203467835250623254969952607448281264246645156488902532060917378927992452103243531228781508452990939317703338509450569090526390890036711550366490466580628310708095910775922623270115078729229414311298472833616045977328286920537903842999305854532141870053706713436151394481812011105547052452030509838986582478173900385808942952517109151987668954867414902876715617917652547154091774194687146026081085611180775251006140801148239352547901293363512773693937728887244282598225316640542533644565579615889660015213848644587164259685254946627339791420111905232299943250735164565832901619355141163312618205935692617587350358614465043226859680152048955778452090271016396434681170131260869951783924943055812647942155006184023834781362415205240149952085126067099766092176632641989105239751954757771985577628669861258105417447567802219763406835070632556050366756099258250453344313929146606159771893694672322791344960873017309886179449199696237410677076364994165873689102192121290009683567774608120592582071354395519438499550210516471504337049629537332563775008244581466392393294695514864702696760554306934526558249218901966951431712299132160580896295381612778024690484650359148053569888472758518577668823827369241315517088861456207516244533216593162755778552003529154854381426081659550885954276940276130507975005217773904764179226275287942328918739373281712967306024118934016047721802775927910645741767599186512626969733318239076524758344325837046343760939454842610574192959303847069308501063771775959675110473426899475906787551715901000249340840636846423572330890228034552079380265476217078143017986109886846066682151883775164029246898583902543000287400660953337708559651479749907745383924400171881523476266974528818954307041433617370521000789329925588723766194947824181609324981147966763460452488683880249758649022754990532252987237923355679784374125843302458197224578397508573957994642899302423117298765383319560414876169410511684703169476251044030344215123721450345978067565850074680453454319069872963156770179990742383442159075754540839307079282570275664363012075442969286265263527789053747326842894914489623655257378640583848235599124652888351392835022580067245421189414357686278719354364614253563323257857582423088857631786842952276003199238808168259705109228073701293438287613490125858076562403308087053568731072370235636298539417257725922704652042070946781426792926632451171322748372377225137108400609529615326423856950127444443078990386226120173200366931847173243372355743628976375288924643975709810974298991361846157262078498798557844515663536546295877538143444683825253238469171004202235371617011411928242523411601173292402704668727557036378915042183129094652864745596897205237106030137586048442211111742297837196863629369068302973235694823788666652494432764148846544801408648406890023054509627011012859071969101005670875987813058399774715850498514329355867488088848583661173392716455342541515042421840437058118384591536093537389068969579942957226983957000129760709814361967726759600483994937290767595063189950833291594221677815175493642561174443499017061416937499311365271485430068967165335174127182103049120583472089873045051563218912436219578674821214903778511387907558945039187414236743856707658266443518292386968300117175618686381202975553346104957655424370769525570102163570780216238073888762077381659681860006765598257214021312356359716218512369969036027925052463216932784731039596308222580955063999372466467941313447516409122633081256511195666603988955677846375330387925995047426204597113654970914683494845411285240388315978684132908699726415988722002089438871557366989285332663811498836728077653718992359668860607476510856872566037465611626120567369523879787367734056875517007981269397561812071480547792878077265513265294639651180751041680486626143472970575862243825826969669887259784806401003442251280949537783104731711843774712070391487966153606131428520235798408703244198115405730474612401602499601554180436408125484474668556440244588010257882943461028777119743192353918833450115220139275431416124183692000510076444003579716998467231103979025230714146831390816588542801185388353384158699669674534736331524006065518826275749159631450705909696195303584548815787782927391365565921524409060607099468687036788633287932795460447498701192606151180386911934726536193045098835455788858520686135524308866061199057358467318638934976110279232121295499340641760882140431269961972979767594882453592887304636381074579172699178808321401482874054540996888947714071012840465952144510797151802430846303962651184862687233255675781281378783954859734383853073263016096572345141245471773908806771937172301104018703059116477307517982298980132957857622541834088375770119430136614838990758493965815318061859730984842886007243923698873397638328393921417601219558680299577726152165582481420313556749929559425937690610009557071045094776925248029630207721798314233831437629824111299102454031183306550724434412961450165764948149182877067590211657949683275444282121268935469485570165535623577050044685735288399779045827551202363933408046590295157047718822171351821592898162236382601367550558399027176558878811577338357249722490873924829923158402664763181921983031397660801519046844834707218421315962753831754193690743149634699810563913320068888527130358952756511191274809642895660733806691675826005775776946945254091553711689407434998043469820900283205407596591624120012420550301397292733561599582610276806976937486742117515619193283879437060251853247404384323767699648311804436668684179952829940942309825439354184554217957756226979750315371099522282101374954964463505286346926573960614578284119327944818584383905065591306474562191258555075289459159703892178210790057773224262956955271986818586495080206031263211827978306706763792013022355583219433642882123705355776247352645296141100173535559497539457355683616110561239231148616064532937131791150686307529839969020867009254066232077894678568051941767429814436914651695410733777413742721368139808140064554944429339701182377192626482522492680685388364028776374199333963954348103944420955209041714715653391964753436147350309097470052494645539506760642740701442024588074589458293522023070649252223266010978134508666001095228838427149237075577825630342201240119573292777312246544486545742997132301679773045476272853173415593253195740305163217512831441778018521130552898690579875923893053084092691921499566933283122040152287865938917614479650338176145652927495353306247747677087916883212786964467328703952235357152432801337634890323878320545632994140388254018538517518339877840583477186385717581273071640921530596038609809093091386125961453026634959302791391930629423135112024136824074510738505157902703360639600953350723511684442768002874792241909764644818385457340112532937252141612558754142885977240195561851609942815717925192952865043716888435191416323913249514052162599885548202841157521757203019494707659758064723207673884813297321042335358233317872600829111382827075832440104650971177550001878277474557078519253720980746267161565725268723045040165559031677732793954502754823489419853015021099451056875464847906054537053065756127136049532674818428160337053431978853647192232303835359920812927143918492242193846148556272503487522905029295493524001334135662490735520355045293049000319013031197094156955781251218168326045850777877899377909557477880557124410814829099870780402273796244838260128844597379454127699853059025418609703881283860500156920464217354227529050277750278485641574380881092528869375191047162208064287757715379860133667324554053394328295344621771258376398170858145413133535576418389912734438854899719699878363391927679982592745528599131923524018339644579131297404102272639861855723662607589301942320134625809472333675033781359417014390463040207877621977286723624515495879560106573752473514302737524896204465709915149760930070297490299150707287379034692964937717937158639441900390927185726650758819889457827299924815104604296678076157510390724382818111791180384147318500929470335191521837396643670043444282265705829496391150544545259892597730225659905850944607067436781038327354453668391098937169979461145777695032323584373512425953240249894408181163056780081404110940273386260742264587825273319744625820686635570311426907186466257978167648425932035580599192899931269767452829937510853377819016474908715224889360611246302471033772421707174144791134955544959140018490899161711250268516281771046186888385838335685310713372579475007186830143521885148335759536641303431036562652047622628543930235571392704830880308639994413398360729107718214273340958202151253299489365196200847490573429948605994174608612981714324155142220328163483373985377606284979803132145783374273505693578984758229663959944864868571864174198839566109493627235690258755097859727477623142728041995554238632962063475101558429067030713321317508484770737928151654340593807204425906960843107244079593739687484577354080568427592043611616027681769375932952635480630851170907235016447122018851814598310985639807866494114990500188787343304540394521445306598650439967244677370035566497599426312639275483130171544238179892576846972697057736358794560277479894464598563496118851788884603614414543239941465871112718167625591146668726546787890706033584758034942632844520439404316800293459568501157578100043984565096987905593759164345302863646656728016609836382918350245918773931870424630340884911024317584055935058345573372959333650799064960508988555227542215192379373342730677887608136584259399656284129014524771087799712359883838166757268872625238614710242029421145958087111144416427920072283078160360347242357401485275136275127847853850096208524864850793868813247758875718420392400799274151191263564569169479641697093088976028014272408726605098388903308393937693568595889668653020709697172887528914254809295944596697701233468934559859456531808540615702827991665864219841115423571919633637153169056514263333149847359459924244597315040768441629702572791658195325941103821401468998649959937597850782042606846807636089661747552676690323103352494789280977482790851491794202932457760677852593172766555606484071240417598625227287657803581544748973646994089557704797399211378606217868265228115014408604161789865137639771276880461708913523643049807024675135997537377274960758054103529630425736259034690638893495264870791277763346181992912626769813112875383676412235626649206773077515111107774380650674536841282202187347897921117466029870052644794885961941080214226859480703913016765893608800013411045848433194606145243080869762675568325752322984513924665420567297216403303955425886980271696442939249798320803181418415464235671385016707458820375108390496385065537678267839498927628434845171798942789170068919148182253108802661956112255419104030837601361192455016468046713159114774639656986693418944862068645066783763938323224811185716078998920932832681854494629835601589532375087622337135727047873604403153099911011599177942859284179613182200924793897026183240049788353863585828743428539178762003852278808382420418805602768593342878207776290839207733791816924564632497037165103891620244161232519159249108287992438418819024280741374319237604265508718750828451234922705298004104499085291207250655930297766996681304266268564908827703820125014349431119894794708848339621621583206294191652446840652987914120767134053723909286544037334185788806283063853660383222466337305480406784029551828253655899529303740314585098058188246890597891525536280447506062301332135187019697471206087071933976173258435028668475469924366563063184635279060292220605842300270934494809991713062797668950153614807146713926091746552837983565201692753991794541314223044721473573178515055534881203963155986305362846177043772881698343983495855734381439783600846910485610288525160167306421091451611288851576770877955371908934537848949546485966378605073237580679617239626034881572720502689285448202618683557724024650736855843753463259454347132592747964872354440187874042201683992687543809459780900235698907923482280502179721524249367613885804848782520989737199472367807241044771465503269850453833383207316890141153278367040576410471763197205346717396451881751724241973565875499681756772018163084177843218897143340055491684596807877694861788235827749500465645710438216575140559433119071688712922010705475399209803424658543178102593758320006860013552914949738327161274350950681458681622515024917618106499719505489921822259709682085813218188183384264936739268117246300787675083289031846723862063771255890891450732028067922052759595354848429423990950993954174726848491741620904437856409052058441332055576008518905223892391191140413725282717362528799152357871973331193682886362889589118577224660610637789378820974406893296269086242811247039492016725319123303775888731487041132175071506082538063200309907403641947135946211465771530126116721350203820327550274260392252210103205961103537933997049638082728263140162050603542460098696906277784249224930536130093065705674485906683605352882145480058602817224009905450126696114989109681335759300823851066323610254637608278435378277579868334376322027614024828975055657207840204392772191222126365353703142998219739322750234915671175286240980489410107086524537893388380328520286878974280374461167048182273799823492471825447576256181532915672539921963476195596557732791521069193694338264485736658610980003878071931084467634835848053852955776008555259327518348978698171458427934765201411627728880305664997358914702104235337065645756714028651466629791384909543949650668792900930989767538884685431833522209589227124331787568385074141313455390974621191024320731850609900876667191005511823899417856476256671403290196008474557388645716452925782099366280052096424850004280582336962511336539868724659674895279564526709983639197006984756758757652812056983781346316305234809418299127753083985590404310307423640761402791106588523202532887414810454817570528856051132833917020234444190042363776850032248155098923389094749291561468101321470988365862390833356160277626466419259148041291982988903740052601021497745531688028543856695001408004376945203013101394630923244645070594227286684536273287919110861043233806696420499323403369626956106023205302927587121201894440009826239159749518769985850907872001944432754758274878121117664214751586005815464854293556730867264925239855114634883970670195605174246220819878942220141455071907707284739856804840707364164895604513536109621937480825808543450841282961358981711462411290925390492683199384936302970914978986869425739565610557792927428891451004952695862267107884009578640667185842973186771162591427511103918166526961757204564672969132435503818003907082445761187584313583404909846507328960437878881463935571978468726811328311310862374847370977693007938257640638841489682256299522171781654918686963038429966660806059204444995910206661127100835420077311262522302590383760076081187979408626801790257905594640282436569576243524102068465215927519750341789642209466491568434625163183662147020878834840311570576054061405824317244861694162998665918682036172527628102359199121500778733785557494778883876557160859809721391052790050908243283898025047190117697064381370207140103365141758040827484065674932186946293205806408206759852180074391709180710165723760920611500983977051007478282818738223077724722413177416263706791838710015045246329633226149001142855337807246515157866116254841193056159921657217417714740802757294091613868689281491132654690346316153944216808897234421596467996941021615123462422391584741076645689292219646195292629548798050514655262501682947123874103563715373337415180835789388219498652388005985394620339595534246578942452096982396428833144442436251082595034239273945968479561546732081282897342224185119566609804923819060086728465946932245208475968368865169241458033186816171414237638369921064141233014615871155262714220501611872774769856004733908577441854296846265647403911734392499938426597580174904314931462664762507706276982764045790205211460782897676069325152486520178676289959759603089211315878645022798029741337369451551549512598546476705655241040355367141924617172332830758287063511745266769242276133941723967299633633886953283426601710856648951381900583759417896904241144253217418597328259653344222111118449308741113043694818725325288369340110299733693524968999358850319038761271634525571580004191506144043835853725315554002457896869960956218043923956316321001633798123062939925859996873130331608236769788384812010112747042527957098435353073571340481159247309757446275244876230852828321183014613344326806686290022824475335156810572700482298485256703266347159984160900634980253875084003233040621833991735689095394858647583368348597421020969827985583618672092489725126612008311237639728258291337941069986386963414685044286084514597150467417134279766664130134318865919959069296851740548777610766142280934544216742480847094251816889041911710038067078470758647062631479294213290924640465188867207473304618923366334074658393447766933163576331617772670943364471240417139940037010390512328796501974145658805776187832166791686642786396431964242772834024734859741660583835730820433417896678665456680723606334348050515752575201532760817205074532541720152148027299220621286221212635985124440588734250776151616523279479759927318708769611847623871047237558495143684378380009102549036459713257772925671756660839568732229748433620077958337388408650208994584345459008699810107673690607795402512362885774462765060533917566168522704771680195690945419607109515317069356648827643461750013544131090747612683017896299945080727635424603558590580386124282697884690305267093904058784000102043922705548493335494927506724743799632786767060310926250990995626706636354974010489063111683762944710875641072915510407424268581722323552388225257289712980906212083697297276295417356840076307654690911589266374297821551919537518058019421345954696394930351457945532118568401632607869801579145066147418068110776405707172692162493221390217180509875637060549605419309900838107348317119450312105116281891969291775428378494764131114312718065478935442398475747457898980246941545670153973816250576915606210456778886963929941237035437201239669032387558832288140080639506276779415787489452234427830430858633073559726328698555777582093341776402419737470854011369739082560284535273973667408766092931361251912028088233044179854116698406081485886780433608860963138216048074228558294569981379416133198045052081233288872282476309143892406487764529936756974407797251112117398232860957162010071304286057630855593729200558715072599422148007746173267535748038621197875191529486068010985054405976906115493495189837310980857773590653400773330829046008337467854207428263452096375599596731403520346604919776484935858850650067261129752823285406686538831292078610757914555859781373770870366376938583976823705940917682459015214892712747058177147963298510427453841832670716906385999602412974786474583174470723509930195248835506525455356483889858171063191172540913192405336468325503243894846758639802172510589323076191907041887153749667666047724975749410028854425067596075238498909493829086117931028523464426619264234135371849281062686080862187992587625653673602945765671152729784529882316484339750570845100398901725287852787543180931318745989581507391548612381642819122473841003687140330376574672369298614013707895210842033034386250347060125935354997097165025530053315947709530886007124395869117187296371455070634167905083405458473289317043923774209086910505405300771781759053920541231221139218484640904690488321754461793853579897560029883123849912889159416225799792259760382632510944560363662841685430134481538954754699928154590660254741381659652944288605895492689628083009082343823358430179325842900335711432881399771318359093674365560852782242802757675333128922779930971393271197730299502962253037764826428865033460205294310019744680971772669526469409350527447811331179375549949734872796296265011120117181158636077001768671445826106276966926063608842529348137973485504902244057457983982482455897311348317545696338719805339853290466954152392059760501470827484008491976668592078207590549619861911034289385304832931469433772476817496236482647674235206663499358825990894807660924397879474193974155963744867001810437123773000030252595453540720008227707088685039700347840010815693207422599663906820103041948275518383409252869741695090553090165703806564008223061062319476805684694758661215292475387576495092217524600751548291359241512335850452637063616077643551036608484390951923412275149331783211051690247734707234787900123222082091890412665837717624493106756193476484272599868592930496255510085917412029149098191316830450318551292109246709179065049920718109102587058909735002776460773038280693889064079405918825510145894396812725424172820526504058585965362445958066259990069383642540568793329634306032497197185276067068665219060457694764778868030777013224135096489492785680452558558906621007151740324266713035391230542544768970774830709571279084640376989929627541732702162950518221816448668900155947410734932811810064269536714106975126785662704155162517776725369554207528566788697351923646981531792203651610105863742874087498139964764109928414124516444981554774924194207896990080133460271628159881334922060018675536096141269848150528900157858793199467107879983751705328871157272035854813405053410183166967019203230728890769227216090740020288522126383421455926622415436705611492117078212724415882974355766176015205847785141953780576346684566842638497397350957939289772516273535149879744509540978215073591951200032414303827906782274463033297694568231766037798525961313194102761527397654798255726573984230107312107816980867291310742096022150106707490686951753440550618420636093702505032955502679240668175623117327341485113825523563069275902204380779303340444312794585678653117971741580268425438301361940876751000230723104431433016256538514956675192426222961166903238226079368733765749551565138596651177520036585981848475636982120041165558592382758479604961089794247401051398495539545207699208148403641425051115667897160370074516972187113461926570669571552579761976645997020109893419435424793065361668059680407395329317518432258364169351008952417415219303475114961027162497810721123215136358026397041471574839909471913207900543878715336038810706851734000235191430796477955826443070108729678078273385548545213675977044819585057999747038995112371318676611661417829686964684751395568294211858182103153869022421466879496081314026524788330120878334610453211532110974498840878235176434944023560958444968923083472723391659190660754452806905707247360054148887779019084625619925095982541858657936371711187537000681690794758401950014494639314104352065201616137865302383714036100349491415817784563742581923593566843505446576443324017910256147166379725615270655936020170179263701351199230526994764617490084942324046612587795209549852632787983244474465872916103959302326967062891227124253433100613705353595267592524099672223938516509196784783341943780897725014851741517889178369435967296641971535597994068099087453913243605274462998518840112327697276411452262841889781624799659237926235038972414512707433876979660652809786585588823673089975124784610497913189457506704757988943498250762157514268546951620120233899952920863067154660565725303147812393903757820901469863956393081601593779723887606968045180202737299476583194467039807578619367032296772013681567373768265843506960046105129398493013011337421834058303516180480467304145990127415729645218854739961504397256119154155994920591215107846391925440994863899910400595423183543529367172818508865027170500774115571146951916308806690943030495439684056970172919169887028052446757206961783892849694735732918315707457431812518283877718408138199080362019859596496646306250957651712073480539943502619742428342106480827699464373565730357853473220418227708035074334595146744523138479635384241489461103725112633370664726605014687975881890188474781528748184797742403243963412352959421550362387344846768071959248591189942465122110916003824425784289594283606768858882313467704345588023131161681911225585965908932590517114925164552679062102130763512602923086217830462447069013085228349364165153514126214921834622429495892446815213802909588735429671672390010557176804078070660146761213492970188259106071917194951720385638704442360772392717866381136259099711173954542006359561212755417882493846733803316668940212424630307806197072121621877516115900342331079454864271199515810965006086075020575986196837858579405199003434738804680767309467472318549161473831089719208495701263552811244899344474663027859964369745381234376449236716818707779732976036331837067082371406118110799818123014386559450967653573595020859495650460409549147211602683842405127805575806464564693342119651021871789732084847533185136892901289877930501806767752994856140555715172118327742779048222899927275960112353892596818194878633587324535604633076333088048569725595831121321528238386511402896438443465449216328108217550894400540684557366121998202152313375652317050479328010316883357185287127220107866498620329329662677871678898471558033420136458978891353414803595604499808946362826425332675253188955973424052264637724418071239785797972700897660772154204710287857599710288823255027636213914228233642876827901608834888087415019967233505451948928713032307100245292708545783911218735981657149614923534052713890465510714656627288451557775076831865492278796012049777121891755907507791012202723019560283818858438469885079573941611882060858800746572756301499189200570524281914780936604861104377976623702081654332626494563244252392462772719649506425639389866075332208969539491057599119990228228884594133013251491765944266871753127041514595031694422164320946203247657614922860952520759178648032057060551824355444370906559085619110387187890014763389459042610662138339877337704835698603491615660337061339150423421279596801526559677580847175579013457853465037092460708834025729413219572856580862623768332306845802489323387915654170298241389090464837275459264912426518684306019443335183684751677043570864150833078256066541926938775988493414553100539308468627859756683164780797920940056994965767003917487643449378997597388458015444948120158799155771418481890400071998201090446043155393157353314906667793283460904839237211045045647341412734013081761716499582263971930742417057642966415309670286810360491422102293136546769854687905943728982690621444820560731880520558804571822040227295635548626189094219248745981143328596583276198489351941149737222306562859665041290229159559762055056506256329005585635265088327156739779657230432837295735423643039355971284089691439253901032605378710397064517734131332942923994398346840063261027117437843268769411711119608754709926023389222119820088166679593195379831977974499395054852783486557887956211209076432341974842384799012214405521595290525343959390460617178115927756737613202208816930729289539423005868818637745918354333144495554870790084626297951077320088545808017806118916322839410917837816446125064735415886239289674160305784850438381379904270298956920378082020099081870367806169539642537814998439003539612184764455426908665215549424316674410444137967267395407189954806766432609564879819019896519952912744719748988208661989933083220538913292030089790602066017123866191297315103939242621863286617318253319578487127052800380994149986152130170995540083354083672786083324313208190640669947146437534859494108510503553296662804493041330218972168052029719141801566807284218564338212236759458600361370028908184475482432880760021369188880169526900828758352481765716190303384064192402237399337662935117877357565230909997851663907106114508843638402765095748918574156504385724228378957831291866938392889854732034140851574794406249199666427115142396366261905421343198768622837242164184265536644041352341225200617890481090567109686638192051466582969732844076110844164209592943449787811601784570091181636650252643725150691557454492939869308556140659993787525279222121648215408013164483839693743712016674543356641434990099530969712517719933915230349581916277835657807333956168271232589921624521578666116473966429979031416052044187454033374227270260522660016954429839309891554311106983108296776862189567071977395355947624357660379961332255828108092316854188591318808483659473987501154882817492462019099555838494848714389457549549740207588797979907617975934956320577998145347386620273434018385027487211988960714622079231662826168449811634918351541925857529703234615522461067218874010447218784429905483679004337598812851851929510830761457072058472921699863016118671116783853854665768214972992520796849240109609901549501800240555201775259089947310053260401022520219420119993535166919659072422068045075275302983691889260228713139664323568644657947485526796403688917950528994336860749377305066890463446887924237240958806633069364293532704928371017406961048031065333153921081823764842057786652064501714143775352712061552526901055489695623701976695623965434570890594443253244869670007351667451910792939265149573768457669764785706005919607606800515853182699369043718969063223733562041278135690022046073658907965083638472014661464247348390643339492839748098820886236168094642144019832089789592262219135703518950415730157964770910762752417414597174855793960132956934776877165961974308750077759936819609437172224556062850525300877841501613235421174456453947117652204297506550236862799490219779592689090382441258902865488774107755927922410740209737721812587262931150571589307453185245030386059057299355656273653587950122647748872647774954869998850407507881825839940766634844461447028252022292765626635877056742055949492791693181558393208705223774879112596777348678413400347030531390539381705946713663404847388657833966143053822002087677213738283443807050295061689455011435881449585903235707256131028605125369335176972175441575742113916087419661449198238082123394567856620737249875946970735864662134257665639320922332423567186805225080174798785650097404188379875540744066123081392848096407486579129490959976848826217529247286270501857424226260560081946097320991655238374987123916027967938681364052909577200528218100631773965430374665018263405608443029311858894172186631079288401752129311863571116554262468814965997655294524873298062900795599499488316550276928215471299402848001739367471043233047970633851576184749341723695989088642333722815455862265167561370762086721450442927358093458186256911731675467776065377002603719126146455622646796266807664728213347107289047727473898240270136186905088727514903374274735323620793741299318849354579472584552514431834880561055010651025644810519316088464377768453338494452611939675880980813813567439227045533813813482539947151328833564648779626706314943087273880977596371432344279879499651823609384905213996323072076721191669670751717415845229996234347402584228175501616712499100207856081972815146640543079703656824502352254313872265418427545438814811815209020716204314920731287524950007100469611487179082028512316288138025848223235257623381822727222537316166625523869772131242132154642273140562919944565276846738580916489168365650988975236921379451201100499953342302671904884204961568917841180283117561121474023032422829097062203709087346734651226965854348653452377817652087540582044615833797448779420778255125562453239167880258647638935073218152464806046831872502839078646694564343159201361063582631892524608084772455292231165855714878553544330783405088579493931838550812076948674264238824062010079524106255417178948111118830968173013878210037355417226145699069361404965401548237819787945708197267925364398213262597666283928301410923191966206100475729428711168548157507602803344159901132974284440040982856001325495018266197394994065103858256793911300979243464934207188181338259966319689533910077234237237399472963534213080825306029062283487734446277867089176948285532144588839704264205869884838631285377290248559835443505096240962637434237390393059214651489055849540747098147977237947853210295209288994355581355425350376959020607349949733350669373210531664496036297086699660636178408851069330748519449549477071609156368225212914326357567883259053411845476055933185170769915451274599223044829996627695045360765490301018886199319650089544784216943271051585165843250727515669108571106246452900554252717707325096970705144531801312749638946469278476706626470391774016726666694931313007559264661459577844989752854727887798459383643350605923963633002200254453818535796707485170071848947413677510888629430447823332781451008369595238171886913178349012473270562272600929823279682876307766523304285724658121075172085668146638704469761618284333248822337132600568466016644728387688016689960791365468728099341401832852219840128857582000463719099399620053267207960516745059148070786652631967758352674291693675666948872751077463118545273720667073260440315435163470259042677631085581292431395458283153188153676576315411911702764694454198101106703550248628018038851862577713184947847081374735109635767675057024602904391219722084872417733290102951387724389414526956162622770019825157256330318042523747587299008867550915513487884412205305212874615452732157984301787464271242065328318014727582059731229058090807451163516713770832624157818818216059150529549712189095489242548234937287466735872252071182891055659923544107245534853468208708179023937150468171836474025200671555344626061456934241219282036771059267962535280652573051488533410138320874504460748959451045313175738344109073607940370714918784233173776259613403764138840773260813081828502640904629219210547673771598302727415529174394421766549808497612832230291651989012491132382896902547307652378519499666866636068183593926735422454067865103159711606821845606527995093966761288961779345649207987527943223355640083769874170726186175132289472927181271403564556729958688251197440684452847915480304406354335888530430345351759284326817131790890131354436502587921547962444411413623360014688165688473387002160644703636630161275114586197266090079931222270900787942686739006950528736713783360088041912753105065531742372480823500263236316394046168735882732114130933621731179909831454507887169033225136070182238011882351909964123556190206822304146372690913411166707093695528900965900105124503617533501694590615281392252575033334276768566845212696216983116008679381830625155560983639909099647080520476743435999198943639241463556842712996404427159824395288132858511308784889517438449987104004708907254630591525927674820058078806038933088726814130220038323683995671279758616736194228906979028469384797209180087050880693639115936268124162612294239088872300163074020282064204132013933038721824341548410672499772048373007134068557444469427534420051798432774944167932417117752079540048123401483850515421273128924724694507480999951739169358761562758615144762248065237527239107225737132144990227757950548850508753540092020102296230452883451829629180637639928217994403640270482262626158468051309606418729106914198671170316626928949070814898542929666903468783527646717634911322553527531915641857955687690497593170081606230310420358845749300012378946703604526254190251841273280965342100010061987671877894074281414733914573690658308844165810478971257578857596458577982777747504462225898183078394352383483754917802884945987794759167008894221463166427498227837097752848251555373870309069415548219060908361402301490855608219501322290076028255769238055577990826287738183519048904720661858072180157080338896242541688877499413387896430154092827389101173492457378381315781062845733828562827551717651702697196109346002222530394604744721324208235015759417533419371965563909547963722002242377037609412640929262385156893341744864207017602963919782424466397356076783449750732686235217792193112287570923694357873469622678739181166012505453656263539666665573990978545614773326904632494478815294194081254690300043038680987664129047198611537882053644152161793817867171230677963343212490400045601679311613361150576737785362916290784019466373238264477065956414997823833973785853708654903032685886819140280272405299757268019055454544525882946908584427995651748852359309415575338614282392601602142626293739158958505624723258383530538636007191289009333718904936931026823459546000966533404819022412498914831575471571018614533754088344791986179246097134797537354250724784808773384282983908118552775752779337100352656147663822182845032006535493394361793628468755587102056935350402336274775612972538474626307869737732988389244286672861648646547323940917783541358326934962252795501164798366945002920643457272612049702070140415041711120759654725701610233880685251135532535362837520877462429007221488143288443683453398186599025512766578601619668118957281933695514223316391830523666746016623445418990233636613029623323381194646626378612518114051840115102665397071520194728475988533704649076627158991237382192595084121288756805085326375691401079936266771731229511247953157658028018807979942900689935854160722736514071227134645439253912217486641953232698332334512603420177090545903191457806873627403840056963805644768575394392208821115071088820037746235610703361989147024606834604103354339021687377692159104787262965230925588194489307782081629051690756683054288203157205391169957288520148732210372730727306095867504481435999186273525080612821020008969547875619221446322447303314470414009409819849243495278484272374063483734218932525913309533573168329511343882129789983911663724575099173054680197965002780531683238460457274190587761237947331564465446840983233245988479609420717429535396804480943351167408826949936083839678471893956244901244702192354933950187365350558019616168481141746512942699440429237825100226016544908653767230132741110118704078220532035341726775587048449885272407039416355404223055235022256642857556211994217133827096345662529918399725514113621704669996026394667495239810317338593364004197613870446579908109232945541106491892724541353398980345157913407163015999539859828018976729780056769640520909150160197248599218939032768185298394513534122256538188485036444699732380832633768422386775884749432914879630084677742885238697807598293222257788853908160965097740014086772788466685196608750213423856767235146581226819013966892959908012691310877997611270329150138271825416895597375808743601475989958943613772671423983419582852035398525855691359075474272835494189856397662297463587071187132037517374282697542692165477366509170740450391044168398640725406783779650612063974755037643913453728355710406761097074544560812397690287383576059952255271575538031548247962644407836190743963151456503132001273875256391426475408386970928255737496107594042600573447974850185615673805858289480144966788768816505103197652767864619250272270379951701180725175219546344975852778476296319131260638421775717728196934853461400580589850779576069118196170826667387600803216570015083536074751379915942386871629536512469324826456817474376406082569860693658204234296209247652236189830398455541649411796105873343680485059254780713412463751507960095022305321023188606548906715274431009828547751329764068007221502660026945145026111929471555497888953936400045180666922750121396782484713841505528629588737174498437401297483298117670426610028126526639698145582628088516651479211948843220858966980234291471838358630422868337450427925549736134669141324364725535169783110064592582763240142624577202436063529817088414504844862423142775488137591837969149502224234296478067439928483073649243736604235995772270184664689849721826655529000124988994989507913503095789302645778236750906830014782940030233442034040130189204906860251698749551991159470868248155274758641006105943842340198310398300530858201254792523144775279077525513838944428426590478616695302659828863974313593496518759049221588427284103996081491525353794554135702929452516186980629642784617279619132105790853281850753385672757621426662725269817448656005541452672844213918758851303352275488023598997927693205642112934027178300681643513925620786198077239617725662369145577416991916411342294397165101193876865931198078494175671845382873438114608804826952317293106945670802333443898341609334083514310457942983759329448965500903631990264732852453730494756932941332226251297018441829421622357660852900864919594580280770194342910573551557825358911452308756517179519709651414420670239538728250652040486860619710968434977771454470043752453177042786479657988212449900382631759156103899171042367978191673824778928080756922557914637804412161430409480546380515511553053890892424293790978268234512256464253716387523740607018392288134063402559573312613692328215533091556214508077923022974836405489250110581887296138188429885960461369527187568710474479609850976507507348519587413313072930661728181992983956277029240424538983654922115630007001868816164683589111472907951745486309692498528796133167243702335109428438271960654167074148891525858888996191775921915445573476056869841286671389309175784723735420325571832887419396501258437952048489385551774770026318452495556177119610164867011349937812909591734180738248033287795461970560956681734116164722484779277415395763148736830746530355020199043350157294889761353340237655312922806733217562831777481648250901670963761579109176772820673527576919270702611217747220568304619424132372642919885345619102964273655419528364618264965150466144322522207367062160498979911282654998702924360624443138834356121395838064780070912978118800653735008983314514867195404029584122219869331723295485929665178821444566798823943828997780023603514690269332424435533302403585873254300017777760909449933421694891566067770663879098585924264150368717230844978930556279988837616225241588027340055144898260641161155783378010246807552717687706039656468101324582358486759161639703135909581050958405147660995283439485179454477179252331436488339776192819608550125237088833564757809562158442259478855594785568777434947757883656125911039716164323691740102549513524366836684408324957804449362258931984221847267215287397456469089190400945743725244256044643600219322505686506489749273082215193616534588528832593419085588233805839819116147444596641791610956595005026738751655583455389254805700194636594670912053962402755479648381751751148085956319886300163859050167041745551827211184701821326563214156428088752752795070583588309481794021678248249235342509754048585678965900362279567788928033530092059302081506164557079201739980950953645411931232121631302222589504198646317664432701955872515320138390845700266793561573280836771231914350634294316839441748974804531058974017259128401792431464399956713911277266747228736574978559480073049410561983073192029704681922888251706352173372582903041463185781265868162938648615900733040861463849455138395904846761691578143804589372544433795161564956721546140875327125043215277465870839641092386888289389758607207554878929325861709160122534511471110515386054754019029906606702329075106329329346906848319935042483043448542184509228316715165131917957268203147300280156156630238574082252744640298273551495167350909468566608533163114607128271158778338108266732284420361008677209808254930147744420560910836747942894739343972689823567064482697265280954117144458513238288150815749477056543283724464666225522064751499157082585773695900738317165314047967090637764692982337600923552246561694050862851575291926623403774444238681553983755057687494966149914901981458726659192201245102668371485840248863775752663083325165851122243338274158574081164351788510707073321788033892375725274932468029900790185766126469797202473614131977384593110674813122437130875042566710477682918633508018969111794936932527618486208132635626408117101193362067354681295532435373227894517334959861229345176027632313053652215411155546906500564047855419565465069116142442161763185908534684913297650632035284227862753652440451746372885080895617585933361950450161120458014868421840667916289547094583574234340080193748337689777586866901751423508518097455348135267484855709232880098349788412309913658167377240872115201769433534491890919042075313929468461637912756806032629795079001288620796246879889793702867424649903053922352254021452044102830572467696058658909555061774849182390650179559992349275859328924608283619840856636760708016848126932320179255481468384586940059460498008299162785461754991395308831467932335963467471161606972091985036970088360858528745615376726188167545978180004861396254714971092888161622964903784179712179459899718306476096814114350871416294793754244649802980690422933738125530213900491812470957095396947627246377281972309678625078340311852664280675210289702076595685327812594962075619160962493450500498537228312575629519816032164657268393710792373644734386122759120296790236077249718314714945991555726052358638301387244409264413247607496186153893547610053656740865328553784535915245888661750286129431829927451897641220615342149663280246839233411248168657334752086034471187422497306953061119209203786096717865094282205241245998589095832330935969817481420751139544004358232055257046063118603573487405645572000507790550971999590212710021038840459784129809160493131005416508182314915682987853404323999924618398817182862502641120198311045053067037935318779215657260085819445888428764083845856927017405975622077652984228720754811044518405609584888218841581348292945913961180474105706003625539732101917033281521852947383124390343458133337727402868840207323485162995431589309674391676325728996615813772823161052286595102621107482361652029043690524698223939274914504680072509532733119025116665243207463232167455918723525433287838654504450211921064211316387377943346567155488710136512540845423035889803587309069619641932202866445108758501876799134824597495524418172318469106015530395015640061974296142877452242238602161257635870670454619898660312183812273197226383540101464233149337667571849228139402080951222515726746778242249122042621822512652488323947079699973693453676177923882666909611140041160723785464167293971072034557304587020443582863940588029397367295513402847361956057652069503200543157340708321711727696660625665098833015914155629318519254216478666099667256379853611940093663899614058969027258596032936702815018692828113601968488370093646309370920672210571362697015543320467566883968858192198570757436725534629876582799325694437700891938250248060089635925451894550785693567835282734951760746944257308111154260710205165088638080074376093070453436418764770880529915569580959452010221513141586468843219478145451648422025916876790159444314215568462618927334181669094323364260166787955113413598103200219489442257546213584982280507796703248408254021539750714547228965517400122173143253951023408810747249114943254298981823880667658967371698358022001848624082359122723114553215431613668034895999193371543215704774520390469341950378373541743898254880261243345770134486447799020885762291465645807772362764785444666813229201599775855592128252881490163812767739532237270758148532671794893214996979140842751025800165137508245397041989130968134232201053476631600568026973317107096085460837383550544274115932573745355679920853793286980677081050428519417803282928648213259627743712388736155190623411001592467727088831626606340769061414953881679776216263421812105975307032716952199203958928822151660433297317173580102680221776806960469570485110040954194430261523815278513253658266483867490587379579849929302969420721608203705448419062554620314271838238524474538167072256920762826401866030163539410078976440356847101356440366900005112197994544378666192105995602358399030330663722111001461852938093592104646271018795228095584745808207080673319475613711465673599975919077671700549518339422186938147872734083430742450760976289550629856149877668072277124844465126003181053522942718002130194497861620569604452872443595221189743342002196571127556373210797860086088783915632259640859102863593667245151477669494216179240288523423398620921127512647375394165487673290879544841218158268617227805914001654671569378009375966874265730361640203130272799908002628936043740337936067656465978648556319626669053414605814058349758172024982784698266173856921160531399259161055114473381426040735560434780173608737688889269547895049700562129774419663144720226052966502392009714314999118883156215699293866142727892162604273875117060080216832060109932902570345497301436132795841177150228606883532641260788705580850957661092346709380812147116429082087939372208168998476958215701766363901266544662203988985379276304502037962028320899103160157530050582353272123965003259285798728603283550674555785469358922293990803913680067768119303461350479861937117938524440128848323574432108233014518850742292138707739431741263095385866797208919732345631745373555917299673363385455913489510688875828561381561326950537716032806450231784896336470735738980698742208694844122511475220772225233835090446704692342191804305451986178366842559072618110142748025491851020022952339390754702100689484611646133963298733154979904242788746786968417531846042284685889445655185716388556861193361150419116295406036010278880502702687629900733585261901075659866587919179486701145499362015515904929464428121900727566868603798881594813753083341107230830180818073416008884669718132872194647403922973995062095891080003698665682174466593394616139464531625490079224700425119469209097797120154631866032449492772105490735566180277790964980843988700501570056861221674732831486075668539139211579328647027154941498344018247514418903768840602706141895780799793658495465017326598267975675436179869064142983604745361023511088564332096611275634195675122970907083160880760294147556560076324078337843118550415078793069538227503594418330792560834834525820729110900362378576292372383899952964503271618698301412079606296900499390291193595906171600611772845841620845373147154002256996545176720860242333959562643310235284923921422021704175920503701982431162442708944590715546569496984224097126219824954255719566846118614070213640101955715860659050094328246970933363047598419969240415216231050193071414838470734088797219600023031110052669289220174073538664325385178791278796729924197031121546816068336697890601433973318731581673620561167982954693435659362911312656554815481750361137600227879070130765179913164000673065335454663819251558467282551701477701944407128452950090229816789726369361156451381445089751800074632238224814883419619489382934979927028907121344809146983552394390478905476755808719084910727390980398209885012829292563886124200746213885456434975221459211598575638872152139493945424464903900877901309539919827275509362505560596042023431744710434808705643529419217786841697513212551436889138041223203026369324097318125961497997306706510061520568115830527887388801866714137261944601578993248520590197651700411993782444571314107052262779157071701548934827848699246853550882117059657148406111843508561382104127619361308402374814054275195250929174220670894379636046666542919874498771303213984117970208946015482307871121144659089999597523653499914478358954247815518402799121126419788968550582669736982334247244237837550615965156199246335642389741280440861759107875435842198037076097393977447202059317652703971670613632445954360743348038003627169455770332770694378842559189299250380215009108753976964769255884439173387688165437197299940419734192123095212410833136011487841249222258631333211785578183462739794284597580853791906738052304879104681296549842422372753202639499920322600636949811486258341041259760675011182716246797730171360178162813062835243923996955135464654767763410061269113133555470297063901617807219787335635005596393059486467934044387114456172253130396588143454300843905360745828699199103599334696597882141656782185193340469225581527625748794418961085208145507058155922156672053113068512426205666670931807129214058833083580280318968876312302135228892350185908910886751129123741387052579557339153087914329279073921149085371108711217105118918529051728016558283840539859174297122339113493500029338555777307018740037710692786103345607779906286307424360992206875855741897512846535531403718632561444151899715653295413323789705058647147079021726209551892629523624795933149962618839311830745251688638647049405822388745965761633550029034951131335000192628408862477448120674092009386883374036680940361199552757652032354708413514421822587718933687603171695482300405154776981323241181768220617196637318525160857790020920398065092264232827273226311362247995101149357585066899080809961911333476824625400342187244947148252650908844616595996714352796140104956931903662532238865265194080147249967786157563384950811461754219910151181597944758588006701329117642941515881225187378050984918931396044057633531548078086554641937257984896875444140070682257226657820043249684699922004492224501644176925194680597877405626707536063874389840946970872581700457058400046205202109260903392976937947912128825709259667289430548641716068159242479168184516407519374498264725831589607722857223937353885553816640286919705857708775113659427710897298293627049669052113611089788748924864606187821572264929793284550086307327255936841824137041752474019255371923588092556569886199266755178152097324194695718723452411617986043542140388702787148190223610665042418423749804158062508733776446750437208009162195340110787036138586244354412224398481881506841488727856790202822553823339890964391530150938581267919766947105887039648972520590468260363619876254071147015104997745642910863434163692668278003322861845017427160729417728197042390012495611149677324493020818731210015613694813345515833310941999658143575606320858084746877519553132840309177456446748059306765558800192010185999438810812414948174461274386261405972717594827758942074161091347408254738028567734474289074485915362113733077686928079475681345088923965302634369054041967177267560936271830679882780775781154708287842907220327175048205545119657119715690198012411834501168782115794617455624328864657942160086497999483791512504550498141383184251217514280379901282572332834315299154082518879219541560135371980875065402193294414307661168329741548600188851606963346500696228223753949861143278379547455829815550743371392397352024475404282137943664319449881902858757458186861304547152257398468293338844977210861783355538904326774573282596852147767477310916087254505886384607062689699073538706344256555095730454233697203512205268820435498366563201549012208688592550677711947937921704683981273299780886441247654492735082615507855057553804783000415189461774023597422409192601735761367527450325958524289052481011619008840419579535072189548525565454177887184610753736013424074304926643915794754773352970836727940731159578193471287403917002893564076950069805081648144833962456681309265502129417119620906823746381560427896297601323873044480619237775011674989913672616141205059978651004024315300680371574592311418939534926985021623414617649893936387999055806892420704019270922331042861046264356228970231131913182878832562482426941509594511016770240688767073812519502651099240332752571702082693953116606643511464337489100751474719736173140092981083638751398156247189632683487230901799032791455728080555702688950534749213693405777070566035129651287523602249212219344441890642760842292328718736510761042511634654567354671290668959107986872706684816760623372308631404298268549282623948301206127750851853513760516499511834629302215467382667300553535157187114784577684884008371242223484917100807018732281216778834499837880418712154064515137275020822249784711035986267138720715954999392054962944003304753604039916121206600095783826495964324432977573603044743448617507933686768311041349444435515914107619674292606228831280641665425437604551594303368823003303623158552267005445540344888830646430677470218344852974447608481379360459408136086525198073771394191392568766656042841313004515985215134923688567924741197569796754357640222662833315858948300969974217254405780381594554031467985895710742713164894132754551497083461465752524790217397248317379452099876751482686833694082576134336161353651481638889100941808113739834561999322860927033877060750874586859643681608237939605055959184974022376886833616543854940860077849064496361036834406822664234391784458893443279827725165457402763443989274878603612249288771319105416283566948534938313284249491920050169649493704236232489234194112559063644878666019651152278440468940254055050685957847131619433464275178939557393877442824722281316942829825388489738638720929008719042535679208983884068389806595399162300725162812935669493151555082615941056079090935296035270777902862588084451810416346088839585188835852570111097034628302989217480740992195157061095263976716100088487896386172792452801702064889688524816136005301282249397849940927409758431170528228727243660069041899776365118520470054039464586546395340344200030277601357052316659632259498616932873179230001514839007941915031035501384437695500287836114469753951513386278975031521652575223223043676963945538925267788269396883505181337921354351159296904309389437775543782646102454496667222728122177244830020886104703335282504417806175388384148761845098047526379735218102813149603119400106939973303003073468011801098879382819842252633294159498888672695624291061436069142268461507852455878243727294638842780911193537774991383662574605567923664872423104617250896007157304063552592309013803411817649504498353762504398169055594843928222425105589351879189175014219387630817202189222738189551894567766942957422005219293054474334968960640575341002839383093661135025211221387043125886270465930562461891417154688408139452847661120012191626259595291526076480643886360991500658440276348072320887233335594476429656547571409147268633449999922270714716661117229733381224198560274649794973405819242751943148374756227447744128652318063146282062472894529741697519253841235832762480054072902855527906259495429191679450401564104705590129247603957227905999416762142511541283356435278743801182150407318376485675341914988109707207646056455970368647219153928240262873953927399298837946910269869293296380341385614870415737752633463202393506709040752799829626052639118798623173921232190895338898264255873071766783065697320646418864690061450101555944075352253271670967128120335353799386533094741331113698323477694612040433894246341452791903903762517066770365055525338848400741501436101428817169376207728548480959740945534767497620573255695964838458162926912387364050017016534303510181715257136729989044124312602618667031437397758876742159855372557138948453904876910324516296710373094876052383761200629737289293940840480051984003569040197467905225477152599312982509597117717209729749378236706604811363399332107210485047021553296518281362252516221231767428247125016632456956885258950196876677489242189903773640825219659468735653590625694605962803560145824734064127001671460149173575832041510904967551008146560039037123460025699827894334789897628549395969903839510228068249988668833952655670663659239180896920942022527747072293639883496884476068909873162430210786504584020425240704614962262570866356039090237893716490808770225572472563975437513965006210299384273406344473904908156471087846884834175617164726266356931004884651176053507412902078458058512299262163123458232229774790085323788759254093199333395415909124913909867505987910621573580735382940417715615747009269863179773522262849877624004133153257384391704456120175410684072365583858249090154008867664215259806717106135088030066947029162892081181578874993781454126695280708834972377417787992678437740573896404432968444822145272402487752853773481442247191053205158763071372811728382051870484602564755918009912556840449476179205270935553820386707316344541152581531392896377693976849196486741885000124777633495866812824422340273516609426508802014537735004392523755831045270641854139147150727086273557482714736752319488265229169309146248282708606394002049993621055869562858897486010771949403786239970249074650819514609383017559772660391350513410664795569296816250882013599209316092185446721516643567544538673038730899787609804414529209435344359333282966497106878477752231706961891262939198871614381576684899471551104254499133890005045038179370288835953022642819601709590315849846921335062451907572869107833998158717358790595629233854130137736001999467334166131629365440182795982142841264851228569899123997114072158198066320539049779421474628966636276703430110269690196655963964463761474286986135944218599535723721063358129669823225862995948559041372894230229386545550403273359393314472466406236484657120172941720804688292985110405505972426610096998190633867026620942541761869481317599183382500434466033704846677609409078966537820419343248598853212730154766322866657384279934190260413579311182506153788629188375473950898419377832411445434688137912981042213479573446355458361821752063827463375403344679049607597402633726531525367077361327020988148105590569246054703345991686143452144749440301146310236169435896689223813778694784649105937094456336122468719581185186187564086845563923184012064440454227252628778946524320802346050458761119141405827071478167886064574722782589005803532877324903699886655412370555062267301010766909366842666853276096449633345218142840816282196691475479746008323718740746511163272074037885734969256244567579382168463631443167358651328616360940214433289697493089326592740594971577828658069107942109771678165597040430948343759993729925769805740423772042598946759267670925455505444559830358904496689821671274315413407373538499153900115886305289848590510566369078494344616508720764932610826545057359494147193688429837571817328398061630271486540609777039891771832440790040464905051253291669324880028306235881549310791120747964431112555865334215021766198504889423456829854608196095883316459811622571220759616461945337001870515773286555091717124869837555418200022620930164965063635879443556112282136970431701551221743399703186013333687787327161234704078547408735499615415000022439841447476727895399529917504577980969247972484635060754624254513366170796595464287716132505579302945760035659840111665195424039885979100120695587603212016661612235277436905991790412020670741404189384652262786482615972682313714138303994246558559714419347637164544347485583394618745135093883569994958663253087109615407760646369137733653874169147925589780124593465341620920825481805588682380169817712721917832664337342632053986343181371512950442957947063877189769338616573303422844210913411206342549191432325861995730473872871678089645549180324736390937755731972656390423407696850762602832726854729146644342571363796295945174499789858129265894411216858408589755800640251375249965632449619547810075971837170332949988129548370441014032691695139469301612139489690830015688517061594433930681298250592187949125449442155393516657338895617333394121273227524870321221275834358107659836247280003381634011228465020674073829048904015718456861567662376000618026669482096196540041936950121588084641371109811066857908826776990718865886030454833743563602865799537665845236084319278039351049004816243487684675472811367548417127578251881274754638400575044274533272615976912371293864497777999708637565767836272215050048524006237278763267005404199902674287877497132712355527043232287709468299527063905137226478586117312374065591256122461290997451295851384881626347113228913677800346142728930192678447957099548823294135086274389149777707409410769064293072990000356707356441314585161509776967776830719377636125625750576557446218594592390258310030727337195718774045381835862818873849894315407342931379855345182057542237773748673025530239264839304450202089291664679599865816892291138647977725789718987901732894484360898770123331846895300820820843506051070659775724241300446220264539802896104606261303137188077244470992417395100863923305198148239651713768905011190866498551133818438372879220435366075949546292579492632056194657867427758470470868544449906364909350627872251377392560046784587625838030018741323581677014677973919194520757337528163730702189574869435073772838607203083087922594123041113892172861786929114713798323875916738080896527772608019056435536897569165143497753517291814015661086307542173059425846442901402534763433984970245980483037430977463220295895674471212993245254818659781089332717442831956586260168297169588543181791068801066613890557438354714788452477320383595198999931639668272518970456237989313840650464640111938869470553494552760340211881820072799337181810558533722482634457105585360463736509630722201743378865577417394393168917757023702109292100640080390997927929388853898513729072378922784241199906496436662787038414223249695833812945861697320982059642433313622391901952611383628197752330313188403932311269476512318689382420355377601931414915269298074292527018722318968948231516779697039212834824264064214377274941364438568071051232404103114976280329853712847088188012434243014000709906379125422490160922536202024421763452774415545033352994904592554990226158568486558610107487072524878227122722486464423937535291534035328806598778842049431875568781190766750721571338061977082521325864577775892794416940612633912114761027850829866573873612305260870828816079571258397811594220104101523201798234325136366513561803898205539914661913323212038349080325004349116150740551408205954652783880577658546303663293289385058848270706671139984787564960258700361484587440695226282801956148679971371391701522058079003476244973304977389883399297357875650347120813602030115105533871196050646038222566784187139333291574074819315814797874878729845212480261355536176426198579271090563113584649723365326756795329722879122100364404361651388535073761254181258914833438209503536564280656810729302014901777330625399112164285570726460193743465880955323926969807547493738313024913640017531655579186611664430753887695400758282480597707650924274061500895715032736719056692681623952223570322201893655695896546827013015018128294695490233602420556881463196146207228343598112745953360332154646785034603888421055244236842574227208074278933920477546730085386253276084752468636826285873707294301654359009177845925071358956960964321280769248280145904929348847174718652027391370513747079653359345457703305521924079821956644704447679174895680843969365614724319722678450143918666886636971242861598593727330409383290589593920768501892926745249181954934948104474975758596726041738381553556295925734109638777465563722750791754890317290978003590411850466219463375194830244758515470658581032684838360672159993636778704112811674634551514491878467986291618558645223473966765573188451825957886308427029616692633303109149622341764049841806729457709732684718850727455690188502159456357172475986813653142978230220427029057624071299370622755131340734236114180498715030626984003063186268147845017587041605599273519194601641134372642612169841007257402869285927006628436048423884189043641092890411770359150226527449851386556825713569619775785247672775055495388768217256746546850697680766518836603510078027785449286207158255780406916480838897708289306104276705427648416359944244894685813073426532849217379275516618493883043343697056340556771685558248562399116873701023697714673679833898165965413115933136210324553208206308386620460244984053215210516819850394231234580234102189300800908813488995984558697080865136105842016307298918851241656401437703689371596850370261680999149013497043263226887454247507427358986772675818387917927285013708636706648737617267309842385158822950069103225219942009477981635293274264990655145538250332790424975840290858444772519507327355267939490226149052520587626054601799290182402521820454209010471669143218813425438604962208419502515677969748123417761791160816902279188225140052844803798044666488004860580258893521527794404092335304429663467159653249643219019837633395132184578266991709277440495455686144069658817429174944485981960488523527723015569213661605199662480335324134225430604419252331064643036932554484910596307743283227538684934300516154913434697196272526005557997479775568832437783507633225973661212267545893985973041226309468015358163666964197499740271790644598345411607522867467721876571484432508381540471987937025874515902193915136236928669365403507968518601843832803958015132792052049373107488363001915558882265670890797864043463953076420067294884048406734923698428794667781451577350055616781688193995763991302937979328875376475132183275626495386796901149233804558677532554336107359384554925238395230084145874436059473012565394208096420166565429985664129577874552423004469486603302161523183763549953912280149995668272230238495120197905777934065166434927156960167322701802071044614301095011048877121353662092230939915943338783742433189905365134132426770313487640087507631517796551114906519447070810626016052449318578918614666693749791500123365501422911569749862525771211122236494753938865799759381891335417770646062813770496743354551820365052207441113170484083378473359018711384797442921363737860220709298865335287984414244062904442734374861001622606491203694738566668968322230416470617845983812791067305150791202439654673797617504989798595356270617878257948401515578215437676830146963438400678787471716483482247234058514214408609382885017855287436773575442444218651175211362124410911609908766991348267772974849675414335635377397743061301107203084791238145522936669066153565723857091537076784691871281334097898350235143024042251806705252252495535524886564918497993548044277320212424369643630084971668556286402904845884078602763745201674603125215142722945330949232741768187685058580323031147455826268248696329832550781712439601469532546896231773348228040768546707375144616255479600359312267443000808145326892512798208648993571419429032958541974911980256287589443433835713574918596115079823879393102635065712273693661332884520296636416897210499278094040497371830179765376729788401930734851435502338954070122357203592573855837107399230897336718251993029285285209348144021466408886862520602124363586532417630394545375936579105756569857297199874040085066967269330580753041043787860298143721837250048186750224973139217945948342568485648809288503668423497987438973299502522609827926147402506987813484472249926386448343198305901764026648981928953923094884708147501883873323894418641335562950480592404720211818873098245026056887582143708892738145533983549741690167702087156119798296793555740882258500533769928511267425309168934531244062456938869440273657270246419133845261232274885114214299102021411872262488312828312270237311194012840316850020109340472724865779913580190163521494463489718332229628188986015923564954602588818288413658497130616072796399005656617168863146865260859257528149201053541228413006961954626685800988795637934121437740958668250089656446745362269993613406601404943193910868406404555614495702780019316883902313308344988697748712997925696441710358510916784235465473657756741765579201042612925324149215449511070821118794461788759836208983177655615274277952410104663733310790563773095006883154387411845276596113817769561086144014571503765197257044038875264974382419393361001615157189247295457708716179303953662916184642255004313466017393140965266849441596264772605158652717158173618893033130050066627859677508136439232532735839097143543113472038885200519389587625929083804059871989319344949109535615843424292388716910860622445791027764146958871469266193473078187583139490048366385941978316203519849991487855651239245065018479573789957074097462810579703420988666440303150669647999903235582509064066634878807592646781683943151605463617289775162440855279413194584976302720640120914941276236448225112078113212593999646976871278130928645130872892367274118356585303551778408538440861194890822749052424458803214624621816026846509364650490068320484969181750178473715494612096030174828514366921340005252925385582645075167774966757804857456370858331413912148826803708455352126410631652838135930019422966739484993663243186483878641185564255794081159596646408047189300697833940407444513363920458265112874575849235500600845614563188509930204374126280113212260212169287514678752556918953821243990461226588630182935780896088208986059549063008919905230365889096136576870383130088036950051677065969721941578549703541008141992702920300874664117568524715882687587833581399915471197527651180560895089472435440330879715426755950671622733818378728805836803437184347430864692813276209414889650829731096871139132658307846292574254378467091809635783922170962963371751496474421538533982685428640178662366638900850602394426736265342651506910657438555828151947383968011503841010874968589856715474023207728830176014754624033109661562811518619110875429485783685816380902283536156712501894406849655047773234719741089674743974835675083007756658963852021621000240885183777924323299477311813470871539766488140430111215368382098785518943711249765122711354958167904933898406672548259310806698552732988059713059555540472962323850228588572508421869378267803262292501859528265207753310119702926063567912843659808912365070814707271593072290853108083249993048361293369521035415776479603264491159380348142217669131660764357078611567801715825826970691834956844956110603410683445017826361418575712785080541944372718894418941072900092042357923655447162586264393242587657234381254634563775025966253096786436506256068016861759224218807454768955280425891051331833807769478679428558924038430208760079733783336800831325266656097161395955877898921578179339711171910238317023078752257108652691900414290133326982947887350703919344678506720271386215926633849682943639631093243745755259830842236649870995127570522055704458064956807236002856331410485583220559694761022400261604772838904919967685992685070387014910026004734457226950951447857832278220547474932501249684960967421400329536419097616363552843168776674709710850434014875981349688019705458112382381380529088922769934129365355744636929580431728802373973483698254649288051487583944949363049026427966325169415393138135363649130364693338501197411561459878354793214680552844399520282686568965807329874035511240499823274044512271234773684075746831484991576840454212597225314356960408083583688303140553942194453419553171597622314821290570376897586257922505702950113369582161890671736318055319725178950669051496632198141138937861932126406621521637067380996098140514632185255234456885417297725736393039617005244739090049984582891773720590154523945883808686279844053902778401338698779939037675319521984690558605709372804368146138398536091961035291627531762853588656773587109184751705000538508391531126283731892084709175012903884300776731676287977678849007240744638010384514651068753210153675804523969932156234168565653708157551885467273913940631799952222026845428131918674980137545133656716514648053788031915190360445222859914195589361883505455188733143087273494134897445033096237553714358871943506951094402911725076307823028578456178765478313791672076045231060476090206546413061556729870192934183894250389752210397857703450800916969922834946682344953241475706062024480312334090259683641394982174529771662446766679425162610389142921107155159258973677451331566771285748703205587806658033785954459323782767125165487293229140873816053438820229135945649244020270553940635442380025618290520526432125020517803072651603902601181135247654593237636855547351073456749674168180226446028658183144467090972230150026013308876146043791138925452902394707212954851312712175055057506330910836338541791964091464188484318620197400869279666541082923196299849560859447254889698483684716100801705204794791215106307481894840547594014115126348947626606927440177528269729923695371837505864654641281197906672505001597393044738148752048597492044281537420580518046229231034737772515430598040344029989636277150283358929048148924888083643636250584012361930100425186640982632528428538125946593649018556572551640617797202935240200866557401110490981924118161359067663256728570481168782624528257237415572374983641177020009262351449935833507472983551655410278619911128785239630344973268581972609438464612279413386152714457984816675670875740761560920493823471576276625540263107772275993889496612844614806279347865132377750152028611512309077950184442470643979442251726353057517939506207880763598513106162192144491030694984987318313799509186128395751859132065060468541638065921979543715321260698543703903199505575247049106399755517300711468324983719734570120451816519068819999434332258658711446245795950106553747934384754809456523077272264113839853420012761784247196739907633411841614509006530800414835143023503926480488241530443474471177380855566880057025788429427842138078006818572071107224715206585968780139576513316651284770477551122995349913018392221993144938222235571056597008677678584267737608233164104302412867306710277271500064428756704468245853539996684710408411080840936274239714243797634395117669458633762026122497141796044626837020968455308698656487669354084414158696341422663628501609549686235359374504809923914633114480537627782050355733501711013283830730533930521671809375766536215158296290340111852777786019983928607841929087820167608624716612125906463168306510721393471833881634174718879378869245738139735155255595429676456052366870899691210471821856867639581067843571259234067337797646980601918645526364046429086591221241930761464102765398528058556445536743694860161481938231579079602914700705164684761026297263033752299296715166944293360184856078032506210426869986813544320523180852357595321455164568850128769368270199218030423134733705619522208951430121264095583481912002895939372571009997415311591643519315355247574251857245367832448353380552177419990332988993830618601051754515480447950073973961329766356585173498110084380457147032956756009013723135520217193291657293464318210952343750931918053689479675154611500016354574252182206512474358881439021641391598405214668614727850913890951704091343416273862809528354947010478589286371070580689531144739838702314193547872017011786748456102770139866696386707253083216731237570780182637015407183403947442363122092773563457561977016529500817111878745016562390719607528462126462488752741846068519290971175233843602608240743185894998805055840045233671272841729552027145045427021827686916371725590540241184792339807228995680223797335393080575471743486343565600808258014828025410902249789150878226570325234622768608644501314152881456579093891661321093223372681209737403271317858608923728981309350115915221283396527231661505224088511150842466835387206613419985119506978247943017655937729397356629485142030702362661227883463200327740377882820479755698837629954244969283035352638837770799766061800559003340358902897086145858474595946211798545538301789995771705276350286345195072814724306865422772267905761166341006423110813595277550567848964025533289489187270582604288762060818605645667250312859336167544220003914092085949433883447064701675824021324306580813958031435293499179444745038748844474331961212472978909699943524664476113651032472606436876783943149966155629559162509011439192886660600053400547964498253262244070607110530401021609876351410642819987290521248819669663442448784331993110715935210360982862422245617099412470118001593621190395554453321479337135984753013052382616470882620366054313627397747909280195675502715587284218628617462635058636125047836735352453708146655556043240153444555410864007720154254035673330175978188699424107633678253707235287209407302113679842389452869344470188002490141083201498130319985967484022393623108778855322409767095315557517582552195981263249003204902415765450100378557803232326469312086460098552053475159300284120744021329338857427096317537706578855438945320542237880128895667353160370609369591363712353714049957354042537883572076429604439212024492577045381228237646732925508648431573351431565724611703721300933095521752603349672158331248536818026096416708441743888927499147186937604700762041333934752788152606989210799052570728663224560351219697671573789985631011427043182962402826688081854066996717112818540166313751630980038576659349140910288669695454289683668455316711588624858759008582441009251931749720662270396440317673821820190657729465622986552905614951897003129497574478684623224432892368936691884921765528078497845464774444281157258720989115727587563416549902458646614282007208202667099908943772675329284639487812820641186030292298863945474290544299953976020874205532692307583561188179225368251890705634410449758054883971500234202940208548362786534512115439599186810386300747225367197270087640965187283746235003638201151488809001737653728276456846298125961802091371633964317504027533023265774142211578817771355721128125619577135794807964496150741424094305356876629570348124815727262351159599996458610920603495822733896666566714039538171875398068137275070306363866810536702644793408334540065509131218413350753295609073682028715289886765282298924197990132365265148608586532363497653610629076109250510357024924656350227665974989725908828534696141657922032649289101023009320293502120366659033252835930950608391527109463574728938588629970592614675623101923775452306000391504680062877074093949085459708911244081184524220395204825748213151459050993605985595068602630294864363841667619698992261413505631584311950116100061227899564523255399259999820789771119468166283956485194281026657241308391209921149198072675848568660928319333987280559496116394140658226093342004439365087812244932794708671416679165189287953400226307966309645583806211026973011702874222769554240730103361403430116962033842677908784222505918633003711892870212032783723160986305399585218863648664475046703336830924656906725224691846693695192188413051428944007072529332008936852478013645232595171596616164105093382060273347459276735375984216897111705226277562758538001581697922770357895031519958798697106036342826191627253247606649432963591922502980593217566316180311546978618791499502433617117013183442775215772704944197320005327869540013612873416737228097931201799989391342217262580711830450669833068806018402216066689279766019078138458732239516724710162805665167700721238577448411661002733751545502540423540160082080796912200857314769816904190675456171536781432459039262773138485400384531471459680913733313404345427928162885489445375047488748971153608318899776930192121824375096546627611847117956026869537119686377069154126268120008148423764575002252595230924978393239778347300367853083583366348210909049501375301830786926377897014981206144703926829809818284831058135172035217144030360576624392429510414628778423820078394911488300223869513825163251811548427307172873904513094817709862914527943384962508238102809079619142941143506212518828053679616800554511556140958085293167575104174606763088823872342563945515409715253255183482177037957928648160451853000730680603461457951035224262321141916758890599520297535544077452760249305373686238713925024881771400057902096269977078597996898004509125537053440988168904132369331973464672619012884998095981829564940122674899477189502901466201053120226270576916434066947709363562082808533827964339544677624848862253619660732484333668561453315903733646011206898076063338172956323300030869084766681202199315764565607957243687606513548087020186189928561669485938834496434043676485643941817463680978560806595517356988108513618725114970511325707092409508333248174752011153588019395367701815978060402155521771717486354090543918315454882661726417097607506254239339900901348205469399600144386574028645582529063333133283209179417510208861266707009639287953372343832808563187008565413053243437973908314213617004784191081960983497964249908498966766516070391887187146927068776464955543967182061571117454300461786726064242667812081421953259198204015866717522422278714051928537795075168406734891393842978773622681807155557252263972271370055858312235375507863821780084200844208914835227587656353574316640237079392190678739924509488420639871249283723068517074754345604645396151252194338901947219653908202921398018450077631913018850781989625939375883314133009007952892914985119015852865202388575756830358030071290146484089657113346912464267646170491345227643085456003335780796650396607418483793563545167494710479409646910632610919635465280253759772215870247904396654497527160662896110216664287211138492637309141415144703270751032632852425752222211907609338209967520171002129741797817400307362284119930368190066641460622411893688902972111041962893394215985781314116273275268476884484242870500653195961766205818182074400372364209451919099586541898281269028045689457453098683619548852951760087036988443462718564792694745752683491786284271224495875104397975555721581925434211709463161483274001598833305584639481189729224920339292055583239512311049269649875854793309127623287276472471169805635040332250356994188707691839293920915947161788223848434130856256806209964256300721009494377296932825052422367357860265257982689903346804335234749472191607103627994463482786365936133752717176339083252092858777806837907703525145845642715519527256118326582241919121998005736752959603669356971160254309853272590252983601363536279275249358312784506454282885101654323193009525004832844517640522283687527136844931752521594317187014184018416005294956316704656796151191351936654235092519574893908175285284249286442339700793560387357325742820041452870536909356274935677046175600414152753978439078878224680074221914754511997430981736273564513352699738537089335294230149073888180295066480125030923126824577082939751487799443419553112598820583170725201980556427481480234303849911915554670983806281585772799085136016842360532339618727395946108432168500663278246766022536866927083654799599704228284137426635745235973912713952851608520383042171990793502903209048936397305144564260956708909875374427978484284035320521698574295826559959535269937462070745087255820714102407564090901102639179367840228300870400111164695348403814579003110781573793277972245418219205598656782540388242617864909133071111104174705370917575948151663830066960969412341149317559942884004562758037002724164567485198523493353701415304195519611916388016108145288493201991678816662644720807065755100839919311313362104557987283131755698614050589064110111330766880338792733029747305923478378899075027200810792954404759931495078814035934845306037999662752366481893469252221386820185514271086699813861084105662833083564690434972786088097610319426725567803448872278530400908303587165277964014565491073231842999439352936967095501669134382745175360134229131246626323124412131331481959508976316331138175525934029538828463046803976108822517741894316298076801809016552845410136329629302724814945167767772753254745087069723694348186512031387429939479754087113604296580232727709514904992641912593448893286904984579535935408420721616406517709142902696330518911221867833439997065183667964885652091820851945274959358057397791407353543430253851841650047589532031073059988712376329748708202983765985480510224794354542087445733330508556688593837609656202429272788219320077993985795646490868200588804113130274817965725500323808539779430662059758225691785787029684339396475186095184490460046278274948263643427134536469757070032934125844767005992052435597891752081385128279341713415800026681904946583590084358243039356782902465633217462184448726801427212671994579901243140423919112919820250805519520370498337278103645305516519104694863325639826695813336491459479101668692460838333996495679804524589027336055686598831595989205289326010652895621300147634464583553228304574332712164006866700768785184711171278074605210917888216984173164510822355793920201524333954003623432636183021947613821710115268251158473153064657590031783230870889760228170088020499314964433951979026249095419034159305812214283536843803910399590012883883708907811408099012998301058407142651129975246731548654923515641514686084036394953883694303582114846246096625197444481445156930250885936005442737796284424084699796752755795733294190532308128247411480818825729930002050106771101468509595728003088540456042474490824934568139691563595657955495639674014875372974557515427084675464573016333813052291470047281483969038206315651304753664438181343301672073477676943262973401672028315712035741023323784558614074237334353779318337430499278449266638412624984069197926932939535878021478067691778386145524720322252079618094326987949296305348212985013598084200129739046560515056544942422371638482226234188804843249351021188038463729611290441296430680127085989053070621358550986447686027312894881942227939212102366882207957392380827503163722966574057849682998271941343895775429840770927716525389009627454513962270913486584418271021652508826003903317902192686301656688035530447795997027584025091660292978783416533283313994497250291794194400422684605303775744534225646357275411099907557668217344867770216012201053112858911683240809611516397566199585078495059206636278392513067154789010231883455697828439518448854019886484204118641395549277152340386365761756124818825699964481691746773222231311002415684947331953524569866619659921018497542618318154032008466358771416998459733076360451228908591195285455012958199391955631968412479830920809507087845043257659406423337981241383841367794062301269756147658740913135047014155149358000457621425147166165285669004373190135401505478830438608724267080544532875892522291249647138375958153949933250603215532657876540084968672613434216669152753970599692830891021035971587955422921945990161547102767934224300928454356626988147061081391919875287908862474726620100191677909843829715338141149150395055822029133162642672163770585165932132957350528610742408823609852638746042912340264413601215503916312812399871680847528544991709064105532962316633702769911564651759157938903257279098078435471753530836552300013721833707565271275562893777125560512696694788755191379543184378342374220334513413512765433475017951850024228967583887109829412090198032347224575850530486106166394940099420379258198723717566942445182705966948182031783678735170041242840813696483594881167919994731890776437536025705636589425414463188610497357347867024917302571581620154608865864649413849716919009952941929073981375269695581331155999936845228048232097662602837268317080113539075271198989202223480817783560285201619337744218893750432657429064363161693828458488152286107159354132845537383899234305126248503215804512802452998365528330968286274342516870406778317255784230940522032475852206563229681632787791971076839043099512270467754621225077887743581438466879196638887011943862292404033415050330860342406589843493645829329775376062951213203104427318278449254097117439757244378741479909230604545773004756703902440526500704079360046214784381867539648936778752157559542300217040756388702350677561683799882820937462126234716413408385176321792979062630685118604152476026717963587659821160932879333768971031729089613212253217318028115583116080885440907209653069134823422105857249028148760803902199728204354308071756182460072684620634186518796402367221352096594363292228120443072694461241566746301419046287930827745971402857235220753886973424282510966545606334246440405183363843739585295783980454749541275719853906379203509298345945298009293510001024346005710334469431173808960660877386105985263681789858915389516338662101594636807940320648474751180481091892050060463502193995051016889960351516439116832050904016440444234342516928047694106047304964011348252096006173531112393302634071140171776408996980871020295842129547897734504044995871118838905252132328101125053302060625443918054076560943110539354468125220258367237762209206154839391535091284533897581805415655880758412717297229219325177055522781835464498080265365550694907930917844489056950366097232281930832280728473364149040711787745670453893369655947026687703361881666015871972357037499430760416790627543863005126628489802778021522365655761031179489972051978519227981129552049909784219828002987594852058407101468508806113205008617220765052472725154892818345798087516654739003942537169481858409064504742641227294721146873704832363665062242917968639901693720079638975846622666269307777399802277158487831533579651790649608715022651537563603120010308803004940497543885141852739996431507217080404026975597103013202911323420435670055556048800938331465364605157101977311011984362359331430260564893741009025876550592485079175782232108200021414261925952442660473316728383360900641042278940835744530012600470918628035183669578249538532388237892620937738988906061529660224577017494440532812981545740563285383843423075520111309915732749691023876237706443203013035626116578195378774659552564307077799006088384364292927136686312763526060054383532962722948053237036905439128876970192753226655514520228560751872698382503997050950656127764850718093473221265974867160350235424759669643890474672272204583722807879732010034714733520917072814371811888646358104910419619868053166914242724348819594750638214024833262532868087374435945449159550562490475219422265519347599448053804345291141650922355083992498592260356565779530667970974724323437777522946430068015912880945445641749920779488708511146082632627910778248081655493566347119256869439607956601631816931371091033511137900047597559071518752397404658908516449188230723689257766135695884416394179023268286652418571234838008091300738959030256778546441315635325811269585858014879150609918008577611312405458840787032073729656572133751115266023048482431943597572623365373764077002211909071184623429661637331685194451127450784180375743540945431797198918605491281664537580801247483332551441645144428582607188804011083590171021801595644869658145677476759028588700851659044459137608057991932041515052623895062806694955703612145057284593976659399782055573744746324813837492821819738176939505665439225690664154361643673595028366305910069796975922328800395023000861321314627010076165631501989197160870387125489858638030709087230091765933027607757085575962778768234885659679735221656829733725148176959013182498165226817370576750773538624078935252555575610136578800061968589432195180479442018396410285478212657949898660634934492828182562363310693441476472323668339487882851264524749955198569478307530039562104692772923133407149985235022635100877772119372050901831287240869941029784569780548873061402711176829688819864392845873492848551577172584474941071822407246766876532518623713826362328393955141105222935229262084931928517775915736056303630545786158980846899356794512539917083363810870676227986188254371150473240561797796998274373012603421786431693658639978321150926391337303434776312045186810988303963305525623890710658098595159395589213113765627757222529710085624445323384001330340784806189828251190985279262703647443172138536390842294419096375524406984814290958869317318727663989789507446949283959455085584634756124412818184550578497930770014413139204951446793910523334616235886809885290953186166057190335092414895497521931132164709942983062548898421336304084612315924277254548622677633688008366688458012602981680665294352955608346163370200440295595685452662638506229460274795587192646058748776003626739425799700545058148458885491627846346265005156624964178355058679582132701206240647545851478013927012317092226103002866164421182172678401249156307323250431668607842022369130755017241672730148993025408730560264458954668185260617782320112590894792021457308156107182932333419678281841970421407956645761814437251378415606697782197680200366582111230821031231336629530747228472780545914036469288980180203721435228845927540465426247039436822052999675870417892254491396248006213507050070409273556173184601977704425373284075845431990003445164029495272098124649826912903132209583680469537114576228510503029580831124401563016601981486305035942747607625371728154656386242965369273660731459602205826802545271798699247680174270563974502892222333834217855078058270932795032837759003062732451905157350854938812780089876880273701101648206027933298140472209214960877126167663420082354332466328860369940353258694893946635610300501684100989343619773697853031095646061037458903731043103561976114814597419655670183384668604208115698264922475487952442370880764695333292506924354834234248156322254390631659298045709565927134958250274382625614815342584672574221504827334352120330029583612195849188818017327051690572643610152165816931751302918848769621072825925659482125399826899335934712113094714702934259894449839977938386313328941934404484527829262679605013245114277053631617374328094783941539544912156343052632435831041416655614095115566332562110039606923695872009597403001237801848811617980312549554288309839591898382666503776782038997345320412085982996078916123678339868209403268123790764569460566834268976835931310796617844706678222954369713780346813619780700781467045399771590479370464500330912142017283345294956163216295539889436620445268123072866005176817209777317323924683807852783116497211224091701537838859407839107358075455628246753496345818510767792956107060541988674766513259491692074545732631697767658295974517378269981533847742667597197194390970432005372149230051746943809328887192811229488761756935973496816451822989601965824928279802243247708455856813322845820933359900438279603991497022158555212211495383077133440232470343999150958967995240385398243569801848192004099005361230457426376822435173400048343985606743959995383067808567440880476919938523931587869337443124132167742376508619086065522333069765912859664004001604439278460906720472505004185920765356586228361090339542177499636073449412649851044243329983181646978532603637363522065205053318994942907838311216936556704439435963368723198024121085258071102343353203479592862280587534988797625426998162122190661437937080366273419269886916460818331800595916946690492151396971763236042849804988076883060464011332379129008173173287236297857675071504369527618727159769989362637919608106439756462132145376371764900595072928829178779223626971386348553224482596130185091586610337440456397442900883100753239296134531112667791204509604846568762893294001868883031970886848992770074904625960548845313874219750316885731739643759725970184616269358466073341430163102044393443628391891441547728304175412929496352226177996553075415639271532452668688840239241737112381025402308580519970913433831733540334085658320001424090005633962931595835287604556112815806414483290425490691037559783006897564674076683864260537632233354067253441131267962055758014382333194196049835348714536339045689665522723552628972100548824736498149396621468294623477055867388151582302416376675600249706051753963993706340936255861345230965402985635320710018515931102537021209042427240258314105085012513158144735536517640405314826888644759210009707420438139175679956861995993799852272518979195972584137158325538232808311000159713575088999384731883947077064506164004023183876763667785002708445407177711380820682312986639150223385675391340223520529127310573257391324397032758064076953599506521577740860542364727835925857075046817576435285759260868201624276382191707584740075956467306683821933939326288061567177314478275813633910906847463045627026499257028889036218912884810283804123902114955216091816481121148125009543777150393460381601482644966118234052567193459879215052631980508239927659620657275873749709754269975979010009013703325636086904695859673081546482979079146539612804084538328346633107116875344930896651453848258821927541410466517070305363106714355589164434151760858073473731612087866158481826696371033536300325129122168664050498535955543715008531381915856320951027763246718490604441710974130759508077003609068369187382687194737128341369619042304903900806364566091524257311759358143116303958709083604465796345535977838551324502120330581099139157550685384730366287333314249532933987636934929521527827142552276720142697917245776426519302268464671881078932648417605698536335416585560062516777772643522473444466650244709288882474737666818311348681327514761926596409602162242537469647779910153335021922108029282495790358268552561097235224095931434359141621100622859083754043266842061057614307398364917417834446920864458761817836271634877590963229914504359389079916211914773278586541634020827178483118261322944022033655724056459238107927340992112634027861163176130406800669524148321229969036986071146645828474873372275185208347215869953502128797823997812154546859842356250936363562397795113694667256493161326983806146715042098882664867166693034939562422676939166836398783970587066988836786501749972334953438391320409405411086804834006933363344046997902332022564348008867656678912235117866087022182879259469298715863839650096630601123224008481490421397370124380647891055803070499289083518577764794071496414660735755297919939943003255743246089953392167819310857747226174386325045640692766975430096164284923016846299888717687409586685191057556140539831073974647782992057546921416464462828692339999219145920600587368945430416519917682606002608170473476543442528296776351999694562197392572404212161889208399831534410240205088595038119172269028961832722515618000868459614260239212634106317336825031588851042351727381889648483945602681405437014534450833111141056137641691937903231102046413105323153089020721878684598428715525119800620706031502003965618565184621073094706267806930921449971882955768897181128611703471910783505835187444366911620694754033405233513776953975483888132943225927903430724583892705655769938031075265685492012393744895758887461679019574829163943069009427882119978009346765559367751242306951949205440934639889179258594646370378364799828182772328066213752325911430106337789161801004111053474012681058243450133754085430447628958305223537901620652794922097934882640441738517501404960000378853060066337521225000382822112132030697736117132510391624328160262322990144254662013289285042805744682192981991489222547913159209348408255848357153441660929141975041382701603227623325472548626247632795846072909798336640044966079871351996454876168741271369861780799080565581456226748283336926618229643252868982325926297885739106408013167858676843506782425680065761840245371533817532837990050811819358367816100735704685496236775180369757079643482624228039535571456636559085159030969307517588656825883515506657722835987810995464782716574142140397223976396321635156254358825257381609034299700584453076202918697931511163111410901287731047994857930541649110909563524564270749558206868054673698856929334801687084865064040838970887686160366239031354265279607173912946020620967146940171265643076422357580955342621283326835778702754632615579481558054878042886487737707449332826397143405168197904662541929055887577582684088625229845075900532421928299949515555732345606161464713871335620130318776937622379834987898626984252411776965050288813722211454611437131840866172434043932082524619840042490543064305026964429557777536840998090239256389546913632415364980695850525509734504323108866383608968961794192443497323845029854781821616887266302841421129930881639680818831182628346737698593556638258666631505644747750661613409328412360970340026688869980532448870669354562233915923465131147856539692183227233531345457593798253515127123566771534980989332944139106302905751338220792832109788582508216709176870776289592230136938333186210992035460849959065296831789376944325382583578816243672730310786485960509581668827673064215565080332228800409352562526998133698296674596083796657714766363233542967233951472607638012778383812832933676447237199847825431407411146482365764042654789862844275203508223749905865774857130367306581844074540324324480340078147621869375228911977274211147531667172384131963481904857539578061628064539932970860331737973997772390611260138219659663906529156971240299484112892775352373638527709766706723595389042627208396123482143073217818098703437013257646674593257979919639256696741136112765731153433902983763580481048843998179318402409945346539590417501286303581352630937458201956328348916295657465350835608754352612502719170834451183009906135253548059136573366484417191637546147798226461331967937955840213470914809537925148665694418485869993502739790065830437054303946708111870262894985258153516541748505402728442539487915260686678303012087140860529724361828376859236162786703837323649506555686004718337305860642826062471616068027724831176587898300604443875406340742332731990682539184377369764959079946783523999247624711903876104378327209032436286549659533544944458921715199496738380285707288656212368454952564249528114430976021259246509290138240823995822372072138402787055435438720160722912597102248386883940011419688826706632021572785321081609757715263160394803178926622366727635251766960739746219995616269761918130834233622389977602726506732704505535406700510806627046204376601553796273925115818423362283792877725778306335763191692921882729852654908162953547109373835355139584400176424723983366830403223326371758591848337311980516574973988755521300338720306625622915509461112199186289472038853462633098450487653979577313366868753041859746906579617358182822241297238493766379919983564430479277609262681461666400934513466132067339760942625904710404523301700953372544059313107330167790962141473840296262730651453306782528797519815108160433439912942482850829928656926109360011080661884370935509923233600898923993867261517818263062810509602583494125688274719273193117348442140106154282277212628815362196169934618546961169377751559508968185059150266784748443732375221230796943598198413602788718242724535004938330368869124851056224694875245031568794474407941520779501269486143926366181692440100091797919843132583682269970429034927162588441021583981468315448828307029622565332060040759056283880708766421161293485879204905679397957420438042349682918396973943268837999962683737638803314067152409801287266690809972077436029840055552365976882795344072767140310420866360396246534468081308601895697838940494158602882580309149551785723882039027476772429333200968288046420786373547933491560631498908004151759198482753223978633094395103795484324513158476943604287425751218742894550856648946987177433911912964376593973111164812078437762555813520099086894426060796377983669076554087314745222647922715509030854149469061381639183485969904521684667457888923149367758820209054101975469292881439363000675077896288482702054285889485032872542285596952431956564139017646242080229247938388167818754251650922396590135678845355526282860075210921438830064310064594560627755993109979042074873899691567196947844581364030323073332223938868329754529507600679400286632070338327510023081172412488673596524950923435923795554405450213452931235303238646480366399090347458097005994938500152552563913189541492534887103274806159451502974458590202393941254826497607762185937783632907923582486911367019187322145403943280234079191921095287592136912299519063217157862789479093844649515864015806821895873403805684658988145783846094348725382698088681399439721222593255197181330908984518365635194031257045991612163598014590014172702740292262431169050829573603140649349034479546539705916540492465380740233652864491022481128746883460076356627083801760093408088415354021853148018469851699226308747372450695267635711027896482248185328375105848385324096112840841395864942555786901370648466872822227088250354757767749302528870516076212423709586138522521705404164178212630588221001566404793634576807390378500809232652808788898619938429010636546488025416571773525749673678725497491438959020874277694620061109227306177743812908264828277635560277269918186576795069965641492730715311946356318510034519463804852202703221227283367695257191467555305633625889894759578301760214467457361332895722085705825840504615950363642235913044292272669084970256825846700304465776989832770420386398415923013816456611539415423812295908426783028604258639051611242177417156496719816641743018509250785332829967356774377211971810276507845849755979319059631905724039425786502389336198797187253545685431747706628169553009311552527384074743641370213290443981002469078849988252275657071250222379937984447461406541545999978345745446435543811850824147453470290756383633722500380740431034263348073585414266369240866372733371690110099235113073909258527870060832386312544499069695174241805789308506783086521566907105107842536927062135538174481233442023891383056030242184142779857464528099581277863971649240067989718104709938437326540760729141035277280625914391181250976173373440562475766861958404071335847261725945123752114318788297728018097240961928664467188193212548867114291209916840363249305614690877070296183540290764345198725081011335952052117255577073050428208943533478066382630344463042316706870698731702822452464549907894065664220062837767009628647162891794573856597243946796096379393470113113422686995074055590025692336197951261491215457992936886054973121949819743879357306471862019243661149052846147921277556743747677024083648385325251651221308962923144500236237647278423192455764079357106482783516380485753505529443948049671902108570874051096756237933053985009761023660389385987005304195500886757644362486755749858915567806521391605540239351139758243315774166996681283212175068629277770753941470776646176538363783894266658805936243750574050687302441439513872570168059099628106029049775222769197674845790580087602266563178955735379314025069508869585927613001626205082988641723635711778884545952754360131238247152161911079709898700734861825692434215811062539593062830279806618887394152481740891743160508694687431421559719971382101085351490215563566421938127288435924489505106264470926591020961495481383483329031232724534544162944173851756247291177095310975885065808281729057427282184900316771397956458413050644447222518665581447651622766695072425827472294905480141235495476407022782153267528529199059399866181557816476508170305174939708232267360543879986633239803844359471120642007527068317817055647225473571017555485267938437181380878066347980057017452732203470472987406106017947497105445743462248620800073075627323980182307625791206541970033135320081960976953664296841155980500692152542202922161373086767636993639903392488945383872373908567320360034137092237063887593534240431555706977852091789364592373012742397079618576567414451076865561806728724646977138192810991869498833895017157209327030384830448275245757944939125952364495647247089667970325958631324042867866072124121897457057861443283259686245029530911471342119611090397713031624442761173249455047457735529810889332725680539123078269261237969362146841642082792570280088259756337881235506051264803810170945524200834626663487268616356470543431774351802514104991137181079963143968606193638440807982862548818236500456624902469275260106631749926079543615103545585294722457324852696614168811946714369840406913393886800292076884055764776338489300708158438480014872925499694192320384573153242790154863948006184464907132119211254919055606186043813216373665044721464553513372574141003261100775797498447232141758611703543955435298483763119384198840250726749423008053534012846178061255638664526295310993723162689249263940049289719728667811995134118386809125529273237884544007247871986576285168765996654161612209443937431173280174677458599211743237770430800853263029378877946345290116224931024800431595484110781971393041807326896840417009680722660645115264608447012057130546783956035476723923753804186181525204966015336714901157704693448048913618303919590653014744134018494579242301921120803264269583696302690869152281441583078893141174331214806029972540719839528545295911105304539743901353500646895799003571336966264759811423525270704929283863634713642709336101902961151301598854017136759712145103429519135181511082693992776643560896927402504578356581856597929956623767688120622563512618547584023351384620935022615631221944264855245871749449252971757898674541413344207425981139478287017659763318255533521797488297514720808983392432603436449502505886179601756589284265186779639100775528495722607696790495101150141696661386433641649736042162646855074662816609440695221296127779203116070847385548606841552701967821132434970890251447176386942337461589634318562869466202657165313054063809090657713101547503192662662451280548195191552844495964854362386287538087380924774596105689782572944064205393078873954115838608960681078549234391435626354158588680225859013724262978055545247079545846367770328701943397327769177093957375311064120122018435858725968282488399528207732583969612263099929615096439957819055298734774007208569513100361463992677831095533945595911683152442678718529653673757079870601455432643217440024069430060139153926577388918044119221332243822015375524780595361848816916780709142920428679486916656996140689831019083735677889255575835231137152875627392525844371494497209364709151536329465920800054020938820027224444956017562565318945175462077920837456538920865171655005533929510814173441130139549052252882880115581141092065670384813964989875714835588629708689743346031772887372016725616098343932976262321621143275054116679729172978970873882562219625563566137923976793435802651310428898730387201625102052689763641941100467606099020197771863265104171556628053329892285815280108866642837600702984589056789288105676827614578757337176035445034168752421373996290026482553168958249405868052363611293752646634204755296530881586996260166959769590048161016295831900249352542263118912687056346236772068898444936432404214111760175293303452701109856800484010111977980652868504641166091097234344931831911342928744579585210943710153135166463669681440479493522682402372374345588482553264708469196443469868623428034955129479117408933405366621280124840126378394037979832583831599950326446769810908069227903974473350144283238527103554281194368085683713838595582162989296784036431265784149679442168143110968174059257181146855541119514777867079758041271887695533081135940703479824356889305649411747554637586393765227836954738571078234018812512355586194951039300492971509605142371570073584323742104876573121775436134487149814667922612693588258550124167496158449837300394166655154122023318066587815719267532734684163219259382195961182522006924721214814484543738594580394560095990547453454724159829994466850522720861538248602343591413036411434117368147663776703904917407007657564808396977440911947000055996492675896771832113560074750250384953814061578801526211839161900332214101556947152431259610498239164673026550242757940099238068378773144340724359199791411950217356673348245680406693416177467097676736090848984947186919627953961556432483187962126266477723888128962103849951711249222842041453787733581092217083073346335869373478397975157713380216773874832942822333739091650398395419072711819389597968595632364704182696333939819729510579246842889249705286428091359356115497293566905405242895948100929951626902054228722674775827184557318397468962737420711887684314851154608415822192434714421098228900982169321862636197252138846416132898351341470080951525907924937980385848053866954289155865030665811004603213674326405278839360186977631107353809197565105958949283887114767357653691170327546283591762758354211517997305463858769314158088559020896378988193476701373642367392767330017064372724174001288166787522356820231069035962494148780447607973348995216913428046103461147123164875436564705530157062057740876210210924754422881957257379330576304400322465945684291982100047950538336176960910884645741298346449684682071486425619636106117991086178807254657423473696627748564291766837036279373296556389357271004351424618689239163913750108038705508265823534706339447890511711401878917341479495625904882293266911822949651227238491824195854440359650922093180473320730143646683567487696588456982854942867767798035144590262569663409639586005537550811013602088400801007478095136816477513399579355484234822344261030848151646629383565239150407753695508850839915654200001733832064977533337253992745684441778341044971954737244076252729147411143272701411123213970410661122950876947285435563148871750576568256873974478861503000498448558070826987370963128441319941496200712173424912844324618402424665980473573651734275388664893551283409320834934033198891918958922370516531826992770501366615232080658334719672402483926380822860675859186071241388014276419363820031028170516351202414429888656647296652858609649477506536009069311470662189754474601860856684952153018791580679168981023882378398749239666247716186778655046716655190816850579694561627943925357392191538842241947072292969389323990135868988818611819656028643128531273411768680025170546725597514950264808541016058669513613089288383460321067600646972285913581791094545509701220043084365012248607174171795056608366864748095752142054940167620712069816107773599188505218263820535854622221123804105627338080703729155131738791061460442786154211988980706992422174294055678630226221920459863283115388247435977807167990341681578599146630947527716968895632388121786964646194640184861716707959675833004901369040440058294156513427645806844773688489930066171561770612455351844881851884877058844643250727635899341681110724777682355890995992106572001811518148216374616457258099761532663630005434123614446403748666915558137707523383646386317229507261932268073847044005447353722468631381895196964064536930280190081482570521046502871297526432446032836401323082250648648553061438006657788239021771200366229035172359650641520091889433161494536759935315823421027609183769606984523226133455895327057119289481467000056618924952726179109842639068378701142301024406996785253193464328413265002299272795241222888339965271028112670231328268786939931882762983539156991879608721572193472571577773865674890840927048789821451891739786687454914808374640224570239152047626558004891581971536190747139138599484143117962133884072302427476662720466888286606227867904099397729483855802875614357916862205732004060268683706787693669292575643802201999256353983675183996127517107468505930005221187643542441277780120500298761500723820909222295964025196687848161721022639968478633995808532718329058303989010672242824841603752340386280225633612947296187092171633461785970534740840778988781449594701347860168070394134127998123924958967928460936145582534078085375361929759639639259369675829098748844557098287108784676470911033628733027176120342944894624307666391411695106888740739421614116165093387177291739858011961983494154322592452464766388077148547534263342778538347620334231068125154140348158241280805963675743374661690896952832665305668350942868726088400785545397199237115562337164836827063169491265145012001004549011963107062861492787405691461622148411719428197547758123787299701440570999416617077082348892582100739015306586597526747069457171171385456867415571475418445808729135317249163406598631687223715142251993213119463128579079621495984642263198549222664558153966772398153150664216569905478455505267117760067541323286432349173637645800838457500864643085765067386601737078513821979427339615349412728862698896564674956224213812812545398316477703599886134229419326479972720715743288119389922248339530806314407932842655669777400347280722142140478942575538822382396655986127566255177786016721556217143858305561119383981299676993723215376936981443593174332587985601906608561629600642422189719906342634337158930740963570829588466883468168210005474657704877561040218412584496019517686845046882182054161209704879555220975137352119112653313339937697529148522253882790839493166053274064772275713091989206964531522345432735338454651943100660766155863343706172012438853263969999401513735297334019995970700676984034584813337913529640421410734405791859173050802580870769773878118260968260375311403697457438392737390193385181801301523786123833498940718491837453449361671796968888381779215239252101652667689733091043218911901204289023442814444413781449870129913972713942761915047064803353724788406085790339319438806309410054340293096902947709834775528774530862344645598437128002552128120540269938158068884585447081943179460267472298652357546932226046441988079621627148655169228889420496409803776558365224409643234321469445984700920259920774879029301206241376432377224825244304962428239665811488599213209756247106531804698952895285927805203891201695459061670282859752875203941451200526153090025769010343182992071960091505104789920755076194174583323432419369008749242296312176383679501945773949836665390534462916395970753708876386353806072619969178670443810335263803322771290610018050789569439486101722745671730189314110866336401693634374298799657509106105623284480548921977170171169512403897374884144903716040506046800120865150120687962875176741002588970522085998727152281964709563751636543990139601717206315712239162246733504333157797995633916355392377975102627470599276571994453046079213202545766892913703989397619812085716891129197560080601788347604944103265111018633050489466147315044457475089212906978312646681843706741610256643188693215023386276832815498461715386429530484651461458950435338968080646451906049713190196073435701891422139831707872257933116256159934374822607546064943514356777318341181187392928793425649752671278085549059949072432537566931310463924260684139027461736034123944682801422897406961130824357293043149126915354327242649210174335137517165148982337659368432429691470687192841851779125215582664129580125964137975828915064286353966070708460596130555385245971508425517775208271784477094826734279193169578845594359401007169004324737890723253936671859388773351326658333536089647956785370053776258034358112137633506897785094193710845755418772765553896791788334674550310914447546726877257065132966289417318962130971906531613448060995071119378938369749650003842461884716387007518156336515604139611727830073343515003982809045714564016189140137906478370516930277211135005922978575022265212314700254303002523831558294604358283252518865368044235951242689541934660845653956316952393946868733408720977574908781317954010114885746472365201201257777988957779337799232909506832070684302703996028152507514239759122141001114005772698831906800116246161534688362506443149859725667167545931834027741855936280382634101111485061262302009449292381391790157037562958006604742190812283638673752114190016753526257711935369297757808870273841656120855496254424787807465822478786945349491237532200334582698217540887530079557388903017028510265154994511589266752994346563176339423739310728974699126438439966762406761921501649761896885938146286200877320727926737926444208826527877769936729880016784639445257033372962891286446367264391560069934009679961318169650391552642440655482715062553707152006356256004695788808924855642298518773026138122350153001492336232335570395302221235832332195269712070988192470216603458446152638922079607624594816193069671630085537242241225650384435275573760030909971785203371407355748337813066813476672563096922061873783696806516812126002160576512009916468027693686019067466990515313352334946620477867156096954194068384758572797690195860969177217902415419467035296305530314581032923393961101880620993527543430760403765967638585769172231420370345503978974366191268772673821248262533543924415365991676268574324418825916876727775299593863131628200358386393635171393795374345661312820451012674321176448584984230523342415765259544170668739479265977181438546888814974868060550459995788930444724961594241125749406011895108303805714019053777508050442840855363015806108939969541796381270140476843195902950099465828796732707572584912103000678885101706233669952008569816588794090163921024087387953570231133402570406714730370064502568925461318871532203442568199101261999066339167450714175717258003574383687614617597487816407238229662993920221661439512905984080175613488212452126129179429022200925775847669056435566830944488237713915642097477721120092327201494543156922559168456325963021378889982346197828172583902484388006387200686588370464974224857863395869100995348760482635698119148902237919944878550207650685886010719282346215738728577414914166510161809789383115119795915667149292599545288484558654332832365021804199266673208122189085448769728515461345139726873894283249091610655150772501687261170666095154928584174589187666435929127368947985923263553235906136663346171433377101065150879406848420222435445075127622595377501333828503448108842605496037114369688084358724717437705806796805204595472224116949513502285009163206989376903475781507790251820749784438585744821231404180617917960509149954427070589328283188530135360144453121496628950125197395601861689040743355587045370362865905338071880488548245664932654963421731854830135885357596010211692617328189218150838682642032845655308182318964201992174111341323413904608260165243821233584390670153724330669938410014919519310836742139819729282235592022085402857812723650901550081200413194331284082387816230110761297545569194251564400314978138563049831842299835869275969473856373460794008830826999749278996950633017158034923842168885204825496203090489381253578869154861066133776893177690679780559952730773054886777524197792040279313863999172864859454297645520316819633965653158155194209476325830949498424585167475470138694265586223019342832582780969838058578601000481425257944939012473536043843785401068095982630227109581618826905444476691466552563673842701786159172089544314731182630282013983789049286096782175070703699334829188531649938501388040311440374092765214794841536630966582909610356196053883390909983348375687735098673389365935484176075184731173267681882197994355565765372794966731913694187589486755072848320543704954455514931435394567352270218468965929804753739666515068233250357765090688465423945576102240814621182659130040885711152982741113163425493070096653337524417290746737144367677138586493935636600449151751145163071320875941269809734121118893602033358342687313977546469220088611625072621597197567638591140328154834492764139042095947915574109427225466041893240722867326303701718016194638130655946956017241828729790619569275374756420200954202108029722980154766072913974406337856201444206006867212697231943850723795800847769873454759119629940190935632923502498234884499080762671335836696658621920532664606628448459568326902869678324730732825922681776009785227855112545728670154973677201618709121292160434639112000165186481950484905320136753843465823253046611542199422162340159467076001630788325197674713409860404286932468425867876883515970900054761136471605504201668055696555907799988213094748716595684221489308204246668300436256156451958611843169044763773209321130279056629173282480336215609179680477672982301523804198151747121165809894837849902198645972410918331601229483010818194946668812156747638912207311963732854313360847456028077795022810720999753113562082604823134593008044341467972173922930013424488400729975798777633081690847005962108258884012163973367189628405569206768649613816036784963784198930435461529820456398290522191112871466375135216249819487125188981304687828766207603070782193224313607394751695529781376391653450584391366169281409295856884818861931303651662643027124085894600258511737921454001958072249893438687514144471496060097099882585232049775874809603754384295910170238249596933446313644846798759197786691079043065826800931357965254326127636928933717112437608430921304588454823337888039711817275849596333437769392497825736908623072487842979214571757703523370773130483101130132925525068214373010807955550845298177057136040477156609126384441466088522094511846037764865639363955606156366375850271540609096511929721018799283820738744689846459362056339221257177480458327680961697758699349003299278297591447777268939778179577900847380403286655143647392050327205781847038003483011615526983963750736948028776827826299568109508631462373037575226651883106992128000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Factorial of 2324 is 821484071650481810568272005525454375722239535835098836749464580548444469081208190166638546314032955071603477825118674497647246137290734755343326184120466886192171158317348985784369915907226843129957759943777055455894158403299900114054565949730891946898319371827014833461223226832809258213455002671540276889456513662359052055255621813372216759152970497237764431225885804697880060521610838996036961117801752963142434963916641612929356381289121336420298249818108119333158339116559813806877463854628822918265757194314991968173627345889611551204046316981657590613573838339478086363236551178704773584084506318592391821509233410905577979705495880136773872999826007453135540830747837310933322486990910620017627199848610071372435103968089914746031177116551478574018698676457243721818889012540237367732230497106809426235203119264832067502638667402865560417210166698712427179853704093651474891997457233219480004167551756061917060799172670313145986100707185632969551736439129341815290126349092471360871049770872876214537118589787530994822636245545312660313843219203307472432618443470892359745223118085975768281908592407258897780334097913002960585217399169453046875824691608568954978557278754326462876480938501517947464184213706879693308552977923450212378365998674820823807404705366952572567587133433927896413750303921987978925649946500538789850966887633116570727120575873450540432587615643781481957487928516488598626843478983694739219557156179535639535648909450856953269871886530331263164581367846352970860013994953000755256913370518589356219068119771165652727909254740400232792813148776118366868665602044348989480220075963406419026653443558427378588054070191724422889210182584331617434759710921522764709482941021913226141426600246679994665101694056852767946820560099489986183100440037351257726804637072813824244516665937070782064831287572101764522432385196828744156457193739783385116085267524190951437388676048762712095527583442913309503997588795837488485271039260301478425668349512362267451302795683471631734313391619881626583917116535870606620316596237744105678296412161437652130176163928729240408377831834918077961943745502120141515323624695278625083359695300863105919129104730372917726823044187418961598482320486606305771176032276686274424357981979040998759613665607748912402683723311790632659031509107460243436975289692178872923069167458045726157636675265145279667603586943703949429848299857667924486573557995726366031820376330229252092303943388805800899577685746942174721176265870223596980237758156383715981425943100412088255019640433695286409024549242480569756961226228655429604192923724390754805691024847172182505825941981844878585660273465193428813087879460691551066645149273850597608923213483307534918202671906475676423178709066587020714980287362726380299257284304579242178748152981973787528554169381798419144476235070056513733139431349511795988539174513544681097492472079305278056960570833647246430767451216710632901925301126749913140505456948286570197037712415701308294461750988145067773745954437655247251819750244134608775947172349491069859503495834233487244139678469513296701248523637926394300359211373128212668924308697841815269638139963710200025830340212906782059669194733166051459114122409479079073839697462564891494001200377758901385317977461999143044364625941930320534749302698778718896329253298548863966431166334627296441119968057165982925440465803010092630893424659396658217080557076237820205312091921394344100543504207256051677089495744653485781862795972642139426110604333500539881196630366264545425902610693486554092218003473255720792468139044872832205923153078263671320578884458110741338046350793952649437046128313065846099692512472268170061388998062646708335346787131303890106834179659230059660098351940879065501713848763721704584740841446095466174357576204722623366784580607094101616423225766139905995430741996578367867335379299680893402497225366138058201988689907729348863766915751748005718438886337009987499685962620087937332011405217525474047697895460400180970287994957678470650306462077843300048134702347677510667226167990950445516973991346221882246856265417672277664189867344997760064753316045140134580304009421880919745159419689989429242068236176878641003675412705986148316831821284561422729727219767175883535963613900047599308499006597371640816838894092401326105371447588639032532072355452248630394872791844950502856184347477055947673953182879240277500341255954700107015970971091145956898759790084435519989010019408305565462030455139896712705210773468480144874613974349337714584642114274248803921363820372058851261086225775577018198663864605870227070634780504120329784437013076181386395796122541924452579711117863136913520524571184481071676547794370555478237615951225860080661014110404083954046339571460784324320291485392246731122421741674848753693099351994164428187607728509604037793296863522451851737662827299332749086369134818961212276819297205194142577343165188674044343024392815305865831033074499758766985659076980102247505025899218952860074189084434225012188803599293844152637757860501100898695487120712649689875251391170782362278794606034553818314232015916627844973944954250974554104001621938618443551600074171224499789540199936588118141585806715318278220089504294478286666667116261199494149046438232270060060483887530734473092442448469155486443673504225230817771595749965378118046858458511253391628173752701928835976076454451068466590381982166118039031155376777954394115438975168508847009449539019212622272896534491166247021527068655144472087328239129389895511708389629920305844255384393175578495996058132076275907099708740028857230969665114226705510695409213706731125934686031385736560902507534454170572390814583446035480921841655687329822571360535545240085912317418354431837814834034939072388330638701849460545079328275964917278856535116826361151098296437839809619827769713246797505504946315374664940602304256910090314279947323810772019200101528156717730726190255166349297223491421176168654082967752697909118751593152766579007518310877778201727675245001991034444264994094809592553829674387552237135740005649346818209044636498791795554963143368290554049061843479915575423560302731510876920808789093024391964014799851699458566365903006385203532906065643421306968155392668327692566120718817845844564693473034240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Factorial of 4656 is 26692694493938210554867558049502399005518196600127928168307785835283125600382713958108660729459477906388213209685407608080494572018823788442112066398752426023586837642493799906371482688198252306936730395531105262037660575572714172823753704535583868189736494579234477411495469258372753897558102016142580686448869359094916017918956236587694601561728718289203330993603537283207068037079658427741983917571626580196778550260089573188571058641815076913626197802325983420668712701084301791419325248749140804850138461175834149942180676892243388177508954599925136006425419515438685193118534553728861188807507472661594627739827025560749106194399537292439303948351368161445294191410891466868892021386338659399133635607765563516840760953119160589138634801843542860448892464419364298666582939662156183420576856033751109493099473089465522468146903632989773085200151329974073747416649320935485638920822737278761426965972419747343180933902898261780927728172529533136916891600626893528592366636855156424026647135894704179621136477899172660443498211027144175419046239367798874772149360749241227372322501875955388537546722440849100866098288695095349982806707957822052944961063552150866546944978070189067194572006354749938357473156987639434288002206626999030073730953909432806791774924404482574077357195552311085567213334368658080937759739099265043255779293797550914622861363972647382114227777920009090112423891748155158312104497774649403183272511302028312792997600880042909015622729168802741366431450459595051311821918251939386437954787434619670940652178720938441798458089962320986671353779183011674451073107056004653319011085057761506299504023955973772850830560703243940267921565295430665384969715774451977455121985142346572072908362641518818474057825707564817485415449378620608502061859910553458740553676607215634797312005218059218274964398560589097734762921877031035849561906892045494315900290733929704577116942687614284409416500938165715437706598362183720956974811875072189329394143338358816616300993441845834443876071739218729810800970081463757827236217592451092244639944527556328999833943120644921866009934056704736455055393726788478035854658348125573761728309911919719904219951359611912678485347124465087592163566645918189818362587358506348218128062262279957996600480224155955884439325585665088484387369912392819750366735811742326576379868452984582033342910141567795195756510107964704537650807025056158480473567992615848151874892504180890276658843605212994519232992723656522569338207408024095764329337354182549761556740636920086555944234978199086841017783761779662024514652262331525249770015367984476952784831566857031252195955823432363984804118102467330614384250863042579254390137613785075084947979887467437848069539299866552839496015890373844080632044147253591193408618324890640895096231382223952243708572663244868460017037286521002605046475373692705526481023172463625392924304779861827789206196759449053335512923923556277873870296131957872334657615383972642015919792076954825640574481765365702584708447951410737194815017988539864081559988202727565705756321592450301753958487514854459450494917782182431156205999329029462780605903247651534473034976862071943541486263021420548632342674522866616370954046930999948393942645522559269573386413685184280648937290460554850517149467651056859990194978478976337709999283366288910407892759695689195248507540992728400582297875712635126335031920830907655435818201753442149704762893810235074754572849494776629030680809123351172442937789615340193726961060161741438949128897930646974980841901103784607572290123823060735485878813644974261356183301609632912638186288340780618141759891897970381314097912601947571042976687787135606804526956305643142803453182838943681579369393850415844405812777195966059070950011942191601346738547607057226452038413831210364117735215928334893696056399321181287772823037461312301855379850857841087893913269801898931928796758411513251956968472513613948123628616265029542808588401293466715767515920764338494190485473557362632196169028473112307597709171445315723345451994596492156586328414431153823111384598215482105839475282301404550874209799552907184795584280160092432046521459056379477473089077818944264854077676044406057257651480527637071603984922290961352806626751098184904457539904584098775430883160960443386258981391775826612937870017860036057895509370018000715804205498329514728101729390802119020331832566022435645267332141148663261470504940884965774980675277658376330000386200699627689139922271601343146045867952653737765462634858941586586801802676578068786163943212562866258413587240142331980762071854000715376385913545367466216642886013948814871681056549534320524044624286659633587127995182450567355084902099502768431366171381363119496470047142277460043640304805563194206632854354423380651035345826815266513417117016522093573678347741200816492531064898085278008087905722359577686759041636626771263329651885578177864569587899426823474286226255058199324747902737048182757925895103860271982297508527496043165577386468059587448887140675705322802957485578404369967189942142993252771276825887092886966476882675502668379151613763316374570565457542296167180381159886775808163795276872634493133173948257172063586476765754446827490409697811398423765308988381352108411057469522066726492180870710997222205020872967041289040981407262805178993783116405578705856294318521315413133906205488178832909038317819779225067781841955331316274481351045593657430483308323251670245536124748536377523665046000799727946266514147750279327131983805449607663359338852142767989302787977728426077816045928056529371853741585658049717833513982168721740924086749550910845938276672360122376953474112758471300688327580830484797444320281655651380447510123190588434465538326556717587251340209180874710330793240565544869440565248190599952620383678868086163242384748281974740046578215169076181171287638620456224441683277774810848042745560145952374372870140126489924942301651095654139941046117680406707677269186491398140893144648759393632669450152306830133784993727221989848014975467621194853798876917149480231120622293409955681183259396499751681776422571845727545299283118234287649054001702950759325251941611698791303778551455826103639261019871788400682935339880724771840222598588236855258021776174799740384152206078687438354503676476539536537103722490851712200403502794472993610204234329018920241303470833578293472827722529610760362112193179507627494052365099644408117964105179436953501283206458832363571913949054709961575158043700068899965808813324895869744398568709992927247110104645347424269645235556291452404275134927343321710573537970986525187867590511227046520431584917500720750454633562249367895489391683350960638324424887901034316170145976655706975230710783121991180435150345091058379788216334150373938653077910542563475138052596205807408339128885712726754971354492873854903349109195056260362363223693814909543098787176722721029293054297352728247506617294517546191650774566742563481589595543020578565766647065161974640786152006670568301211566310244525113708507471706292073768959166864636823642841730051019053518491261203552799883347415850823413239222786126471483923409745686581428131510804989615258065979969124446998766472869875182726745089501291825961776873594399241799765385530715789635341799046279729833142235811551619503707577475260497804480997640732548935882898150271191174808455888189872354430970001107078505156545029333471943931726804207079561275134866466589105406897018313052317661136975256327607136712648276237224766443063070578622038658873823424697561611344174234902835171162581836691602364329251914813136658068263362264428429813388955917929854145882525440775003881941031427768480599795214070078613534231818881353750980926539133884800531892809390487470811387809924723733851883232679213579539057531521610467945870572483389018344015333355717153534000836642723123326217969085572610356221987055822590472837726481121686799785685468199690966853755724126387208792101438782599931143469745904053203214137511216367754542617040698542941082117645591577349542918068410730804542720865066753117087036204087139036902611882783709601059327169988195497971426843079925664614872319735963565808614604887734036693387622699413296977536737147920001521356457677522699149397226741714035266200503505119224417432144098087820548943539176519629039420337441155913057377716171351006281327028539700034236500358536294749351948785833069782361386165714174684009618200346742006286031163133849904435202406035651354424959405918566203269392009294889991753761719037518407700822540883935306804978476966098714020957637884794516708780044910495462299919460119377378348503949654217010364915312764983082155654549983455218777005171870348223250221437699306193894958569175106215099709262179380848232762522000146420349807081416398907185146898527303589847717489242564509718838884584267706473387599000326891816851508316936784771684020220452460997926808695985813276532845605446300727462018262037730520695171787441793701956891110054773725745093166415096876351814732887136210347523459667920262374003435516396793753816781481440119317963862278218574278111546592107567363628921805191735174888454619914805488611838695430550014395810729836497031951785371392400472077863482427320404628518534411542575969902567165331068663859157875909964779835395193587950703377146342142199875340144467474060936813745629237710557416542316654040566769091889976050831887642676939264127776447232347875237793160439335813168652320970327472173547385390905507576416532292838488237799352916966606199745570653965951983374829044987336084238119784440026480148825858865313924017092663572642552869201168121930321665708951949022021374813745120311279451237925926238277734929278506688312683784173195633154048265956653519508447293894279339460846787914341502825110921026400394963597164966404731930506460570337372499408011753627454864699358111832057060245731224009098915364452089023129775977827749267938926928982365339958370605725095340479959673834655631755355957198853069541354372018367230706339533102363627725502807003699167673121774404651834104392473533642260708031843977022249331323969556948652251500326708362196822525256186144615570242002972665134418190355448046014578172881356486649628969141568982619087780116563755541235484636052390239189527480762062357288593893760869524246344756032087525784162817348323642980204073784918073409302384059165494205495194920466541223454820316578582857193514627356634128995346894453269597262589722800203559877466526369597431626514879297736455364685636579836144050027529427319377311526163245430270248670256649729457585110642875985377753747715072261533271402340120859295821713726040840545795380097086561487087645812441665737850497069154619131064183204195138571718975245987949533623728749158452515369780972580391702289362441335037335568743370483136322276645188691498265258873193743718818661755948864496626282225689542561959557627692204331903368462783342819891647803055632669734039529633002084109236235539836814186939511004188274074385214776970205614201799081254503462963381720480653630983901525384343276646235263046885270433546755291341840040476705890560290590716032706035678588857210643010056233849369135440811126847423771182179366609545227503577439013202954215869250680553090472619233194500749840646651904111836356836561727280548702618684823245212641274181755140811376153594850440477674478266750737506204558545645944068314827824631161775015924969959729806367268646624999228312076775563902589985129957907967026074859343625504333481197050828649319052174928740098068312808556902670481650197483584245322953091344952118550020666806996847056618559866371461523166920305287857060735783807821622799302492332800018494117170801887048889403040338929034062093299575148026031714990321363793031797168140808040407312464941571916319787108267713131469224879735495549305456620287154648411829865165501170656840521585824682210420152595244339474092163116752523818431207879372651124473471439810781915815298227791307636406158658545702090975413464082294207882549348194983161627182107849953174038455499106783650539661400501535746203030252744400949919227032873924749758588027568353672275269417004432065388416572379219833833537989024575995656039934468604377703059380959510876580281079571656298053009008621005784359413166374374314171531216001360813276494145922360264251569953348039006642225981534493627643896751146627483422167671834462040671943526637438326244909830973309051398999124734837823800579423458555392762733162175774553454037204346058222997058575589882130450327527446286994571001244011680048717777955488219875039022318631846706051023518768951871124117845202947990320477901479898539556790882353577326312600743916846275533511148304085726019405454110824060051186311196217864069120913179364931598919129707435392319788157456262672408855599792965979552803309194214537266101142852401176997394801877345858192953442658676883245949599188617937006128386121704799634556876576020396013960732146286529485648136984650371777381189480018299206664651669817926782614088761301141920989964341764893638478709842657594010492845247865559243261962466859993353413829471914427977059134640263668577118494907014977836715162633615926730995202898154968048781896188329130635857514287316888919696790973938194611884766535302501539527929711437850642254873715639541234487892834260359718827728048556912071310563899617140876381640634384680790647598919485407879517409806393609810702286178124364347270023436978733934905394404229393584165257608814607784342423558655578456543923169840122259804401332115321895884986933570834735228197860902673633533562307409414788915091029472729074018236864766337848610613726115014697614132228527686147184629796162105332236667777122002576627077123170153922843505507972548396958430437464747058258615355857941596498993782903386993941475826456406411872352423763520574752791180241730698407046026503258860454220830892618925893340937422264685696922744858527083016289207361207060828215669554624746670533401694357282764125815548478691227577706995282089312056770560000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Factorial of 23 is 25852016738884976640000
Factorial of 5556 is 169951596443651975670936106905268009726857840237226336013137746655786102060954429703093586502331082826160126799371961047247995144715820070247312688604842794768928847291312893896032788114634112357340801046170478091568545158838617903734203035837226035774546144492055388045581638976896837202800910346701805528345780346448737279942799768285740123441113877459743908298928378568056037832672886126415979533891158448523868699977603108952611899206157312431666507530013363132993908823345469036140849433930083908627837996081859089633868991845092390413814366502910303364258473646056963644417904925510079733945695273847607353701001957979303839233109011259150434755085862227371047733279531770221023300431223694678773633509783120992795251134935433303600096493826614284318652162220307491556740982718776566609669634479326884975780836645899251468719034078979946703796700833659276719348286655351002034583924724660441367402080083004659766777494283052777601192072947211204828876249280839843090266089577254988773668901170746466368158027524056266854942629776901104375214407771822962679765794861510440702287992151596790417056702580194755531200365774118302552783542994947614908886621323841139149136905270053165962626883337469881623528374092981297320811491512422804215922176107553566645222634369293115480449684278646031648470315974110656135897117119936689167140663239426051203159415061446452162085232615926793971619371243237919885795620567731951104874039570625761069467078260505478851321742975131890641372519244089290115790076615548628505328877786045112333515559127489781749644061572941149555063425558825585624041597724456759955192578012099806681981197103222463932046307267161736948283096922827696202733225271542717306116806768855614076805923859634261965877464640651051018748769785899191863371550974734959997295624080197920604195253638703752047659067197152717944878053870052052670452333834137582658488371091066516144366225297018935259644696623758926484494232524357141874504029613149970730385686225732992132224787594231291584670398886648633990543841242941894309607103686902732067651793799088893191373675821844219570281810507961231758794951284522486585924358067441331583880416704772584964787611955079424203075290815131583073553125325743268785756319122579844537691799390859044850450414279628953589179073957923956033884175730938819143780020549508752633505414096190500288634994309017540044233137009053721900257594658528214715721339522617030650434600496837502255429858948832844413756231468632402237889526264014901502807787079606400561069304680687727300456713876228624695100010660344587840799344396305090333998454412690907532288429925280291207418609055606803216182586999215333834189953718435255282955575054736873663059092116126723853840816368829287043212624078831291897123335295913982906902503232995930740081415502291676740484476932236926395010403588369557749285880963785218816241505416041443361377993203497163276680025989169299531424153107153962486584423851737879020050697407622369701595487487055826936904663705595996327302437582905206863088735357469915185316057294081800265621183747276485862706036013213731622802656341669233244628364187820436060765060921926229164551887151964789768926560518600687531858445412595337424049714704202916761683508191587154694907938470059683470369316959701285517233532290320633607168262305673985626047073525917613512134581686553877943883117600364435760366089493072611829057864961950011789080356972974544315809092514907511525812841647667756110781511087728264608227816947035574492838075935770575250528064998435910709319285379043551829450932219788077763938109995419757942439215860006545108102360911754590181154734817810025082069430901330467235998124578591996101378880066801514055746848709489147930774586462778926187516005952558665216394202954516402948090585983609720676195726962781554688094593627225833619249521345701588950700469851944335418643121668140961332365083551878907700202014028936259681834786786395402572781843016642859607645104758068877270556168656679432700380811256940111798771148487017645355484798662185892063445255128420433007840951008125478194931000767447262514782956597480398265254612040615285027810494170227710336736445461940959750910599894792877438375503463844308635179722662297399564910219078070345383059347085380948461952690705620160700988049647123829396015077881872712217728541085350567107830317390917558851035832214773248750670884434558059571684229948611888632747504413473618951577094763610145905218356436149465422171133936409636343335502831941955947444801444481398486278583998682955451559262301138275711479881607490607581638271866646818694488739668762271728748036309571833385245654560165648366973454959847898527193875997710198352537877966107394601201351632936827140722025325312527397610525692492897605588347649334452329730702313946554469625038077138467087501419341760503547370849244503316371064914891356975943456649690965240563144768786182576342763144202528773628679114689966171049786862489513694133511911829163365326555513160228454986210317867952925756072270174606949579602413899649048109232155070423880860104835689609211005044441654362788191376795591266045764797416809012899683193679421146118318004619628892522315350980838017266998207561856469730829513998435340135487217418187621715855253156139967986415818849466564723549197476670455253354905695010809781663535213090745769977806034757357666978835278203915475155802772652293781147570252185940690652070290167606938541262045231749560042605886148513012674916263544003776045940088532554238558420588525097726835062153119259468831138496772432750099350650681463989025011144222048724413683533414308235673011068207981684080919243477105415177743089741705656936946769574602290356896202530596586798443054765877474974706381428823975697980014241124457945125802281428218267909300893006476531892126635453625010951230334834923259460082477747759757318638957899638324376978362458108081924911927157168889486586500758135574345207220606018681527416084884650785612934391370133978680022017518429062955933247483286296769112654227831497514797547338255283638622045112438444241178231298482643267672623918513709475009052377673088248340646430977887534004276603194043813692178192693481607547214463366569788274174539323786757289242812012439597341631933594740505597619621175459315253419220618723284456163461385329619329546319079742242893339363748283436842664685166048333381768072835355167845664021450676309675435000528918691734955166161502641729826402920087366894094349586845062188873550728524757466180918529182974782503629967453716671155367083537372890350846781248844017965664445022403476921974788281624405009229698971695227305807063316537401308760762352220198379862195300809072822242684847700021630045568668898648381456334266602395999692591570470509621714158148630756607261201210196728938722036340456526084723052577350598686851368908000985075589665455347555274033286129989447677473554714718965966550844150582198085454572416432548505983611271058631091635909827488592723279821116978367686251493822580952829548949758787257680932816019153062326738550018449975236251180123962744408683948681265294337959391940578798847378232987281152471485360831653916573330236129848048435326007414921471732443411561090063288886906769729650091250508059897416935666341069522923110602326934445771959447466348334963928210597922293833207000042707393280874959795192429227717759090907626316556325784421719839404529523593958410744734531602762196091937630947288345715179579295344066287806381572562986321112495500707224945780843142747210111567051758763797615075694451383637081539253979385485346088192764256749478432433467021621872827713971123002169034644014010010996150985665535029484691292063427991095282992718860264882886425574914828366597396842388511288721782604643069484857728039691268907226782454093729677753946832974831570698485370493509350369230530889540227351843224633648261313443594552917601759539490052605176402789413137086516655308987484540067236632338097354337618956323970653468135357718943086497425687150877935353290923567508523251887764355194377586021289905794825401534689557875488643370513025882631932564400773293809220324239181150924711785152385858219654983081971245520524796713915054430433742448844767949772936262237604374935314119386559110530093770512619063342072422802676143510611945305956242820920206179377021131537188340040650813215301047840158142838427225213641101678251399082446256875757699251808340572053029131821889193062006775507372178503541542188829206276883227142279186186114650570847544420188730085725501790231362532485909141839752067288188905232313808088337431269060502626409073444876821209131430994475516817450647082655517151007123683614391037556377053632953437976410771324336786868062653236918865353332845810643215878079269512110024032166936010400136341201463901504862994674012244090533251050665087818006032215666739608108196723725281772703499665282435987673478018971976077318219653545808129088172914976482380863334529792693945145955295135792358796924650288998074670204873883922619366356125857013535443366222376470184508191078711531380147486067786591247732052053879882492849248275192895498746358762394217799949008188592714146000910558600488464717891504657486168061750940151180371973511228878916621996934211722753789738232969382275622324853102153679707383781282301088731758134887859998902932555152019150849963887554177176320820321904382819690756182966691063893167048341032340784285932830714344755207382105237357668702025353465600315643922112120185363321052443162776308540918638385809045259252965174356090452046385653996319074169653633059347294869416141160134420184665314074103555757292823926565528825210986700867865696161585464495067036289666412020439065701602457095291377406559521636424069061330225607862003009481420171054195022929859884840235109002978790775339964963641190425165886644996154172482070190926829074737307550453714275559899235832817345654665300274689313685401110363713237206099223196853037196457695209780285450769559977382820246634372833322063699118435311225986559536823127324316610425652422464016394113213624260370967333115939936541980550765448084132102333240711120460137390180280301916065566324727100499293631209806410248475750528482917805051338944004689366491926769027309662941948309749752008935496572692456164378085956238123725101497981480197026377775488833489489788450823061163162482903356463624051804144732817846926950619450355346033156911776853333426524175662404690557254611458803277309938694045055068692610762017366198682456463666254830089032022194193012172013395750191675383891391095768579058377282727204614412964479097702743368630881665369401410737477133019746849015068042649371238545865631523748059373345187342583402126968727241583128723928004109928332851820946554591003672286261576511670470980896398282531062134132380140961641008047349676165120303192525481762491797414973432157037423649856700333197114702154446786308357859292241149263792668229311746387162301139909965324535433135849943369605103432670695493671715367034187096945649554307957957609486154739852618868614036915135635426148445761475273505696972449895970088625081695359968866172099090792420065960342073419880830841911993780218904425453628398376681162289232732286727796313070470269389688539095354418229796973852133363898590535611163520527845932058865433728265284048972166877419339820041259230575823261237053798441374269391036377706128861362212318491706633381352057239662894514453019858802427464049595027571155643400749604070854390631175523196824796452672648377160373000917114070997970879144729102435629884018410463402505168718610964767873956454274874086409501033427599152700684633965979080473903734320943542207191446860944056834731493824677263643227017028787928427847049913246689548487679595996675750440906799268839446115084762632028725109001391015774368464892264988661538904966828992638729044025723664160268801941323684299122407630158732609179760901753194806691281935384112010731526688607705361328208050727957991537021327130308287560031379143446813521338231859217896055496696081101012238622891601993590478161120874248361515565773725546643756364974250652878535345441926526418956615147783296673580616556584884319059228282255366174969510450162945441380201700336166741913535198745434861870092973064725065906734398807098385770784349595868099454890308294980283498090148622690796487311592320194641758363895872843864105060822307937119497478735108041117585085496364643653102175693046992946693994001653527940849415801478416430527653139525096423143773481206320496875119478408377420371872624123080923180166620299266682335267116969003860848442238637465302991928154379173101767807362791456298631360866809878520655877534870646920462952636295639237100954899378306447886151254905153895619460325299019152356658441152906186708554306290915578418887284538790033119563553735809035370544749990446336530503695950334174822116945112928035160527161470700215342163788641270264564680679744679839196015622417895437143223256235791723510239347768086409132072026692433617312487569603437465837274039170721585051719597972468590965454184353821781774565642399194731194697249950827066449632256344996485056682538583000437160377837634644953343438151044515612460575742727248323822793636140062029532422835186671847619229773181060718327094335293346072092910255355138407193740124424445603899950676630080490945425482422731612478694213199378883573208548200924458576405229972625336277985082877717645670438413961704158589851392896989523250117649059563244137080237889043413960726295707833288192807987864269128497841524704406975251951996100841483608304426363628681139968539012762074437342239073333545942640471709481135593342543517048212927174956779928371090178171998286110152681646141088164174285851807236402052373856463127297982933556360966315608288938291982288669936481303986313044569247241558179253269228556550890943150276147876668166008099866860255762207587324241987659456329610979223659785093791240664526928952900376345439714074841758291431791730243871249310103735334819631109480019283221429487753984077503116225629149451088213746752802719593210834704194682227915243272510778337483374701322905895669496454940654365859838787287474968703677199382531297480920337315855716253941867509697793736161164861847860893696528022456993361886553902447784436776558121007893274520477297822095267305483943815103743102906073364438331190499434659728521318622115970528843767759552800016408891557741135944728461594090261955053749288980819080965846236414450727989537938125555426257881516437683528804498193909246208558764496357949319805953727093692452537967015249598335787710789520696522278585144881554115878441921120053686165876053301096021767638152232703083951445502448813572902324952479489886884433541621087574094382890075125564060846626616853884167623024274568914403836835265713986583271387161896343905463152391824161446479714698983502364439977875931637172854980752510316189732707245697007666784279478451142455533737145116042952962160446996683259155465515963130881456930362589534025312784582130434287685388737372843896820477945658440765457110721352479782193258823319176205848275193134118337315190854749781871350227397386652787988063293166217519500776284659668495618280711462523952905657734739225426955811948464949903820626388662154859787483138785114366694662904830964305446536403108675135998103598554244969801683131348057093460843070872960027064300167436415724520361742676265932275025403669719042426110954980646043362643775994676589118240575447003558481200273653869007748824196562505786239666485471555966291112983736951766670645697366111231875196719375404918465359586631032662152618911181720172575660524484837026461986817150967447590164295940992437043173465342090347250775447874943778770250367434617242637315214277317556135938971844685657812075687228862573712892282739134214117141726476000686890324367109796601660678611548541166597572564340533765724794109280235330448590968248905521214627135168262622571194010392119103507275107979860912181344867133382763612980841393600341803100893579429950462901049274913678337894028121698461052377380025981326948586601483352432601025294046664633347628723417977076348137975007496228840829928988207220293806431806865223764142032294713777534380126248065755466537486906862158470240111674797305068861971055792401236383968550028922944926924153914829498216587968287858411869403480022273555649404406428972981810316349254813635950950411541203065941713459448875543756720453608079034933253270087932161407466518912255547896726159925353358124249128629656091304542164083162449152584811274590141262216388083116228576415159359070065336407372118480901608696953908483134181648875875742793102725125532528988968153884670241912610933074059057717754404082921550826499201045344748896058771367287858224893078254478499945619645060219463347799005744645078262000479736221453476032279629181870369976904685997941940845498810025345286575227111177643301316244964476322130419120226409611312290331355759946678820350591993256745976799361410330986390953127193612879984860265931942325862288422582668110862048305581283047377542488680226293434449550494282761735771790912389746058047493826819532573855795933290543094093195512664997842872028106905851885780992000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Process finished with exit code 0

상기와 같이 1초내에 Thread를 종료 하지 못한 100000 Thread만 제외하고 모든 Thread가 종료 된것을 확인 가능하다.

728x90
반응형