29
Understanding Network Failures in Data Centers: Measurement, Analysis and Implications Phillipa Gill University of Toronto Navendu Jain & Nachiappan Nagappan Microsoft Research 1 SIGCOMM 2011 Toronto, ON Aug. 18, 2011

Understanding Network Failures in Data Centers: Measurement, Analysis and Implications

  • Upload
    aaralyn

  • View
    28

  • Download
    0

Embed Size (px)

DESCRIPTION

SIGCOMM 2011 Toronto, ON Aug. 18, 2011. Understanding Network Failures in Data Centers: Measurement, Analysis and Implications. Motivation. Motivation. $5,600 per minute. We need to understand failures to prevent and mitigate them!. Overview. - PowerPoint PPT Presentation

Citation preview

PowerPoint Presentation

Understanding Network Failures in Data Centers: Measurement, Analysis and Implications

Phillipa GillUniversity of TorontoNavendu Jain & Nachiappan NagappanMicrosoft Research

1

SIGCOMM 2011

Toronto, ON

Aug. 18, 2011

1

Motivation

2

2

Motivation

$5,600 per minute

We need to understand failures to prevent and mitigate them!

3

3

Overview

Our goal: Improve reliability by understanding network failures

Failure characterization

Most failure prone components

Understanding root cause

What is the impact of failure?

Is redundancy effective?

Our contribution: First large-scale empirical study of network failures across multiple DCs

Methodology to extract failures from noisy data sources.

Correlate events with network traffic to estimate impact

Analyzing implications for future data center networks

4

4

Road Map

Motivation

Background & Methodology

Results

Characterizing failures

Do current network redundancy strategies help?

Conclusions

5

5

Internet

Data center networks overview

Servers

Top of Rack (ToR) switch

Aggregation Agg switch

Load balancers

Access routers/network core fabric

6

6

Internet

Data center networks overview

7

How effective is redundancy?

What is the impact of failure?

Which components are most failure prone?

What causes failures?

?

7

Failure event information flow

Failure is logged in numerous data sources

LINK DOWN!

Syslog, SNMP traps/polling

Network event logs

Troubleshooting

Tickets

Troubleshooting

LINK DOWN!

Ticket ID: 34

LINK DOWN!

Diary entries,

root cause

Network traffic logs

5 min traffic averages on links

8

8

Data summary

One year of event logs from Oct. 2009-Sept. 2010

Network event logs and troubleshooting tickets

Network event logs are a combination of Syslog, SNMP traps and polling

Caveat: may miss some events e.g., UDP, correlated faults

Filtered by operators to actionable events

still many warnings from various software daemons running

9

Key challenge: How to extract failures of interest?

9

Network event logs

Extracting failures from event logs

Defining failures

Device failure: device is no longer forwarding traffic.

Link failure: connection between two interfaces is down. Detected by monitoring interface state.

Dealing with inconsistent data:

Devices:

Correlate with link failures

Links:

Reconstruct state from logged messages

Correlate with network traffic to determine impact

10

10

Reconstructing device state

Devices may send spurious DOWN messages

Verify at least one link on device fails within five minutes

Conservative to account for message loss (correlated failures)

DEVICE DOWN!

Top-of-rack switch

Aggregation switch 1

Aggregation switch 2

LINK DOWN!

LINK DOWN!

This sanity check reduces device failures by 10x

11

11

Reconstructing link state

Inconsistencies in link failure events

Note: our logs bind each link down to the time it is resolved

What we expect

UP

DOWN

Link state

LINK DOWN!

LINK UP!

time

12

12

Inconsistencies in link failure events

Note: our logs bind each link down to the time it is resolved

Reconstructing link state

What we sometimes see.

UP

DOWN

Link state

LINK DOWN 1!

LINK UP 1!

time

LINK DOWN 2!

LINK UP 2!

?

?

How to deal with discrepancies?

1. Take the earliest of the down times

2. Take the earliest of the up times

13

13

Identifying failures with impact

Summary of impact:

28.6% of failures impact network traffic

41.2% of failures were on links carrying no traffic

E.g., scheduled maintenance activities

Caveat: Impact is only on network traffic not necessarily applications!

Redundancy: Network, compute, storage mask outages

Network traffic logs

LINK DOWN

LINK UP

BEFORE

DURING

AFTER

Correlate link failures with network traffic

time

Only consider events where traffic decreases

14

14

Road Map

Motivation

Background & Methodology

Results

Characterizing failures

Distribution of failures over measurement period.

Which components fail most?

How long do failures take to mitigate?

Do current network redundancy strategies help?

Conclusions

15

15

All Failures 46K

Visualization of failure panorama: Sep09 to Sep10

Widespread failures

Long lived failures.

16

Link Y had failure on day X.

16

4026940269402844023140188402844028440284402844028440284402844028440284402844028440284402844028440284402844028440284402604029140219402624026340262402614026240263402644026540266402684026940270402734027440275402764027740278402794028040281402824028340284402854028740288402894029040291402924029340294402954029640297403014030240303403044030940310403114031240313403144031540316403174031840319403204032140322403234032440325403264032740381403864039740423404234042340423404304041740420404214042240428404304041740420404214042240428404304041740420404214042240428404304041740420404214042240428403154029640184401854018840191401934019440198402004020140202402034020640207402084018540186401924019440195401984020540207402084020940210402134021440215402194025440255402544025540254402554025440255401884018840189401874022940232402334041340408404094041240409404124041340409403154031540315403154031540315403154031540315403154031540315403154031540315403154031540315404154041540415404274042840415402884041540288404154028840415402884041540415402884041540288404154028840415402884041540421404214042140421404014021240421401994020540208402114021240421401994021240421401994021240421404014031540315403154029140311402634026340263403164031640263402594023640087403654042840316402614035840183402644035840093400934009340264403584018340142401424030240337403684012240337401224036840368403684036840368402944029640324403684036840368403684036840368403244036840395403434041640427404274042140429403434041640427404274034340346403474035040351403524035540360403744038240387403894039240396403984039940403404064040740408404094041040411404124041340415404164041940424404264042740428404314041340417404214037140382403864038740392403974039840399404004040140403404064040740416404354040040401404004040140429404354020940209402094020940263401354013640263402804030440211402624026340304403434042740429403644041740423404304041440427404084040040430404004042940429404294041440414404254042740414404144042740245404064043440429404084041140408404084042940427404084040840416404184012440263401244026340263401244026340263402634026340263402634012440263401244026340124402634026340263402634026340124402634026340124402634012440263402634026340263402634026340263401244026340263402634026340263402634012440263401244026340124402634012440263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026640316403164021440219402634031540316403154031640263403164031640219403154031640315403164031640316403154031640315403164031640214403164031540316403154031640263402204028440263403264025340309401974036640366404204042040420404204042040420404204042040420404204035840358403584035840358403584038040380403584038040358403804035840358403494035040351403584035840358402394025940259400744007440236402364034040263403394022940365403654042640428404264042840426404284042840426404284031540316403154040840429404304040040429404084030940186402054024640309403094030940309402084026240282403104007340113402084026240282403104007340113402084026240282403104007340113402084026240282403104007340113400744008140122402084026240282403104007340114402084026240282403104007340114402084026240282403104007340114402084026240282403104007340114400844008440084400844012240183403094030940309403094030940309401224012240216403234041640216403234041640418404184029440416404164029040418402634026840290404184034340344403384033840338403384033840338403384032140130401304013040130401304007440074404324033940362403634038740387402414024140241404154024140241402414013540137401344041340241402464024140241402544028140304403104024840295402964029740315402964008340241402284024140241402414007440074401754017740178403854017540177401784038540312403384036640385401774017740246402974031040312402414038540185401754017740178401854007440185400744007440177401754017740177401784017840206402064020640072400734007240073401414007440074403194020640263402774032240243403874027740322400704007340231402914021340321403304024740260402414025240260402604036540114402254022640359403594035840359403584035940358403594035840312403054033140360400724007540331402264015940121402064012740268402684008740087400874008740212402204039540205403784037940378403794037840379400694020840378403794043040069402084043040182401824019740302403024030240302401754023840238402384011840139401394013940139403664040940113401344022640254403314039240392404064022740227401974030240302402384023840073402914022740076401284007640084400874012840337403384007640142403724037240287403314033840287403314033840220402814033340205402054020540205403954039540395403954043040319403584039640426404284042940430400694020840430400694020840430403954039540395403954014740205402054020540205403644036540366403954039440395403954039540394403954039540205402064020740069402084043040069402084043040395403944039540395403954039440395403954012140121400714008740087400734009240093401114031140311403114031140218402184014240379403504030940316402964041640307403094031640333404064029640416400874008740087400874022740311403114031140311400864008640247402474033740337403374033740390403924039040392403904039240390403924039040392403904039240390403924039040392402634008640086400864007840372403724012640372401264037240120401204012040068400704039440394403944039440394403944039440394403944039440394403944039440394403944039440214402804008740087400874012640333402694025340087400784007840263402524032240226402694027440290403604026940274402904035840359402744029040360402634035940410404344026940290402694029040359402744029040263402884035340410404344037440376403774037840379403804038140342403884040640407404084040940410404114041240413404144041540416404174038840406404074040840409404104041140412404134041440415404164041740388404064040740408404094041040411404124041340414404154041640417403884040640407404084040940410404114041240413404144041540416404174037940376403774037840379403804038140342404174041740417404174009440151400774011940120402064021140231402324023940241402454025640257402584025940260402614026340304403014015140301402634030440261401104011140112401134011440117401194012040121401414014140204401204012440120400724007540075402204022040391402264033140334403794038140382403834017840178401784017840243403874024340387402434038740243403874024340387402434038740243403874024340387402884040040401404044040540288401784017840400402884021740288402884028840073400734007340073400734007340073400734017840283402884033040381401784017840178401894024640189402464026640277402134022340227402274025840258402404027440277402774027440309403094037140371402264024640282402964022640231402324023140232402454031040226402264022640282402264023140232402264023240275402754031240312403124024140245402534022040220403194036640291402964029740311404014040640417402964017240172401724025640172401724017240172401724017240304401724017240256401724026640172401724017240172401724017240281402814028140281402814028140281402814026340247402474033140261402624026340140401404036540365401504014040279402804007140226402264006840069400704007440078400794008040081400824008340084400864008740088400894009040091400934009440095401124011340114401174011840119401204012040121403504035040350401204035040350403504032540123401234042940071401694035340353400684007040072401564032540123401234042940169403534035340325403264033440134401344013440134401344013840134401344013440234402354023640253402544029640347403484034940350403564035940360403614036840369403694025540255402554026840395404074035140351403514035140407403794039540407403514035140351403514040740128401284012840128401284012840128401284012840128401284008240209402174023240242402574026240276402854029140292402974031040421403994040840420404294033840352402454021240291403624012040127400874012140087401214006940069400694006940069400694006940121400694012140176401764012140121403474034740360403614012140121401214012140069400694006940069400694012140069401214006940121400694012140176401764012140121402534012140121401214012140121401214012140121402354023540121401214012140280401214029140291401214012140121401214006940121400694012140121401214023540235400694012140069401214016540079400784007940078400794007840079401104011040110401104016940172401734015640156401564015640156401564015640156402524025240293402954029640297403024030440305403084030940311403124031440319403224032340293402954029640297403024030440305403084030940311403124031440319403224032340120401204019040191401934019040191401934032340323401774017740332403374027540123401234012340275402664027540199403124031240079402264012340123401234033740123401234012340242403164031640351403514043040189401894026140291401894018940189402614029140189402274028140424402814042440281404244028140424402814042440395403964039540395403954039540396403954039540395403954039540395403954039540395403954039540395403954039540395403954039540395403954039540395403954039540395403954039540395403954039540395403954028140395402814039540281403954028140395402384023840238402384023840238402384023840118401394011840139401184013940118401394013940139401394013940164401614039240392403924039240392403924039240430403924039240392401124039240392403924039240392403924040340214402144021740214400934007840085400884014140142402814042440281404244028140281404244028140281402814028140318401974026040197401964019640204402044023840238402384023840277402774037140389403714038940371403894037140389402044020440073401124020440204402044039240204403924039240392402174021340214402174021340214400764008440087401284033740338400764008440087401284033740338400764008440087401284033740338400764008440087401284033740338401284007640392403924038540392403854039240277402744024640282402464028240246402824024640282402974028240282402824031940297403864028740318403864037040371403724037340374404304006940208403704037140372403734037440430400694020840370404304037040371403724037340374404304028740331403384037240287403314033840372402874033140338403724028740331403384037240287403314033840372402874033140338403724028740331403384037240287403314033840372402874033140338403724028740331403384037240287403314033840372402874033140338403724036640421404234042940431404334043440342403484035040366403694039740405404104041840421404234042940431404334043440366403724040540410404214042340429404314043340434403504036640405404104042140423404294043140433404344034140359403614036640417403414036640418403594036640397404004035940366403844040340418403804038640392403244035140353403864039240282404184028240310402824028240355402464028240234402464028240295402964024640282402344024640282402944029540296402464028240234402464028240294402954029640246402824023440246402824029540296402464028240234402464028240295402964024640282402344024640282402944029540296402464028240234402464028240295402964024640282402344024640282402944029540296402464028240234402464028240294402954029640246402824023440246402824029540296402464028240234402464028240294402954029640246402824023440246402824029440295402964024640282402344024640282402944029540296402464028240234402464028240294402954029640246402824023440246402824029540296402464028240234402464028240294402954029640246402344024640282402944029540296402464023440246402824029440295402964024640234402464028240295402964024640234402464028240295402964024640246402824029440295402964024640295402464028240295402964024640234402464028240294402954029640246402344024640282402954029640282402954029640375402824029540296402824029440295402964028240295402964028240294402954029640282402954029640282402944029540296402824029540296402824029440295402964028240294402954029640282402954029640282402944029540296402824029440295402964028240282402944029540296402824029540296402824028240294402954029640282402824029440295402964028240282402944029540296402824028240295402964028240295402964028240294402954029640282402824029540296402824028240294402954029640282402824029540296402824028240294402954029640282402824029540296402824029540282402944028240282402954029640282402824029540296402824028240294402954029640282402824029540296402824028240294402954029640282402824029440295402964028240282402944029540296402824028240294402954029640282402824029440295402964028240282402954029640282402824029540296402754028240283402904029140292402934029640297402754028040281402824028340289402904029140292402934029540296402974028240282402944029540296402824028240295402964028240282402954029640282402824029440295402964028240282402944029540296402824028240294402954029640282402824029440295402964028240282402954029640282402824029440295402964028240282402954029640282402824029540296402824028240295402964028240282402954029640282402824029440295402964028240282402944029540296402824028240295402964028240282402944029540296402824028240295402964028240282402954029640282402824029440295402964028240282402944029540296402824028240294402954029640282402824029540296402754028240291403044027540282402914029440295402964030440312402824028240294402954029640282402824029440295402964028240282402944029540296402824028240295402964028240282402954029640282402834028240283402954029640282402834028240283402954029640282402824029540296402964029440295402964032140296402884029440295402964029640295402964029640295402964029640294402954029640296402944029540296402964029540296402964029540296402964029540296402964029540296402964029440295402964029640295402964032240294402964029440295402964029640294402954029640296402954029640296402954029640295402964029640296402944029540296402964029540296402964029540296402964029540296402964029440295402964029440296402944029540296402964029540296402964029540296402964029540296402964029540296402964029540296402964029440295402964029640295402964029640295402964029640295402964029640295402964029640295402964029640295402964029640295402964029640295402964029640295402964029640295402964029640295402964029640295402964029240294402954029640297403044031040311403124031340318403694039040398402924029440295402964029740304403104031140312403134031840335403384034640348403524035540356403694037240373403774038040383403864038940395404334029640294402954029640296402944029540296402964029540296402964029540296402964029540296402954029640374403234032340303403084039540403404254034340361403674037440389403994040340404404054038840388403884038840246402824023440246402824029540296402464023440246402824029440295402964024640234402464028240294402954029640246402344024640282402954029640246402344024640282402954029640246402344024640282402954029640246402344024640282402944029540296402464028240234402464028240295402964024640234402464028240295402964024640234402464028240294402954029640282402944029540296402824024940252402534028240295402964024940253402544025640252402644026840273402744027540280403024031340342403634038340414402524026440268402734027440275402804028240295402964030240313403354034240343403634038040382403834041440417404184042940282402944029540296402824029440295402964028240294402954029640282402824029440295402964028240282402954029640282402824029540296402824028240294402954029640347403614036740397404014028240282402954029640282402824029540296402824028240295402964028240282402954029640282402824029540296402824028240295402964028240282402944029540296402824028240295402964028240282402954029640282402824029540296402824029540282402954029640282402954028240294402954029640282402824029540296402824028240294402954029640282402964028240295402964028240282402944029540296402824028240295402964028240282402944029540296402824028240295402964028240282402954029640296402944029540296402964029540296402964029540296402964029440295402964029640295402964029640295402964029640294402954029640296402954029640296402954029640296402944029540296402964029440295402964029640295402964029640294402954029640296402954029640296402954029640296402954029640296402944029540296402964029540296402964029440295402964031240331403344036040390404254042640430403964031840361403194032040323403244032640327403324036140364403654036940370403764035040358403934041340363403884040940388404094034340343402464028240246402824024640282402464028240257403044032040344404054042440146402064007340227403384007340227403724007340073403384033840074403384022740074402274022740227404244023440275402144021440214402144021440214402144021440214402144021440253402144040640076402124026440080401764029740291403154035740422403134013740305403084027640227402144021440214402144021440214402144021440214402144021440214402144021440204403494029540224402624026240262403114026240311403114026240311402624031140311402104031140227402274030940295403084031940268402204021440263402634022740227400744007440074400744013040074400864008340132400924011340072401394014340297403094029740300402974029740309402974029740300402974030040297403004042140416404214042140416404174041840421404234042840430404324043540420404214041740417404174042040421404224042040422404214042140421404214042140406404064040640406403084030840284402844027440300403014015940387402624037440377403784037940381403824038340390403914021440232402764027740278402804030240303403044031040311403124040340259402594025940259402594025940259402594025940259402594025940206402804026840220402804026840220402814026840220402814028140281402204028240268402204028240282402684022040277402824028240268402204028240268402744022040268402204027440268402204026840234402344023440234402344023440234402344027540275402754027540275402754027540275402534025340253402534025340253402534025340070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070404034027340093400764007640076400764007640076400764007640273402734027340273402734027340273402734027340273402734027340273402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402734026340263402734026340263402634026340263402734026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402734026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340212402634021240263402124026340212402634021240263402124026340212402634021240263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402734026340263402734026340263402634026340263402634026340263402634026340263402634026340295403094026340295403094029540309402954030940308402954030840295403084029540308402954030940295403094029540309402954030940295403084029540308402954030840295403084029540295403094029540309402954030940295403084029540308402954030840295403084029540309402954030940295403094030940295403084029540308402954030840295403084029540309402954030940295403094029540309402954030840295403084027340295403084029540308402954030940295403094029540309402954030940295402954030840295403084029540308402954030940295403094029540309403094029540308402954030840295403084029540308402954030940295403094029540309403094029540308402954030840295403084025740295403084029540309402954030940295403094029540309402954030840308402954030840295403084029540309402954030940295403094029540309402954030840295403084029540308402954030840295403094029540309402954030940295403094029540308402954030840295403084029540308402954030940309403094029540309402954030840308402954030840295403084029540309402954030940295403094029540309402954030840295403084029540308403084029540309402954030940295403094029540309402954030840295403084029540308402954030840309402954030940295403094029540309403084029540308402954030840295403084029540309402954029540309402954027340295403084029540308402954030840295403084030940309402954030940295403084030840295403084029540308403094029540309402954029540308402954030840295403084029540308402954030940295403094029540295403084030840295403084030840295402954030940309402954030840295403084029540308402954030840295402954030940295402954030940295403084029540308402954030840295403084029540309402954029540309402954029540308402954030840295403084029540308402954029540295402954030940295403084029540308402954030840295403084026440295403094026440295403094026440295402644026440295403084026440295403084026440295403084026440295403084029540295403094029540309402954030940295403084029540308402954030840308402954030940295403094029540309402954029540308403084030840308402954030940295403094029540295402954030840295403084029540308402954030840309403094030840295403084029540308402954030840295402954030840241402774029540308403084029540308402954029540309402954030940295402954030840295403084029540308402954030840295402954029540295403094029540308402954030840295403084030840295403094030940295403094029540309402954030840295403084029540308402954030840316403164031640316404184041840418404184031640316403164031640316403164031740273403164031640316403164031640316403164031640316403164031640316404184041840418404184031640316403164031640316403164031640418404184041840418403164031640316403954031640331403314033140082400874008940090400914012740275401904019040190401904019040190401904019040225401854021040211402134021840225402264022840248402494025940262402854028740288402914031640415404164042640427404334043440072400734007440075400764007640080400804008040080402594015340155401564015740158401594016040161401434014440145401514006840319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940176401764017640176401764031940176403194017640176403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940297402974029740297402974031940297403194029740319402974031940319403194031940319403194031940319401494029140315403574031640316403164031640316403184032140322403234032440326403464034740358403594031640316403164027440214402694029040246402664028240241403134031340121401224012640145401464014740166402764028740432402624027540276402824028740274403584035840070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040070400704007040240404034040040403401634031640316403164041840418403164031640316403164031640316403164041840418403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164020440204402044020440273404054042740273402734027340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402734026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402954030940295403094029540308402954030840295403094029540309402954030840295403084029540309402954030940295403084029540308402954030940295403094029540308402954030840295403094029540309402954030840295403084029540309402954030940295403084029540308402954030940295403094027340308402954030840295403094029540309402954030840295403084029540309402954030940295403084029540308402954030940421402954030940273402954030840295403084030940295403094029540308402954030840295403094029540309402954030840295403084029540309403084029540308402954030940295402954030840295403084029540309402954030940295403084029540308402954030940295403084030840295403094029540309402954030840295403084029540309402954030940295403084029540308402954030940295403094030840295403084029540309402954030940295403084029540308403094029540295403084029540308402954030940308402954030840295403094029540295403084029540308402954030940295403084029540308403164041840418403164031640316403164031640418404184031640316403164031640316403164041840418402954029540295402954038240382403824038240259403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940319403194031940268402744022040274402684026840220402204026840268402204022040268402744022040274402684026840220402204026840268402204022040268402744022040274402684026840220402204026840268402204022040268402744022040274402684026840220402204026840268402204022040268402744022040274402684027440220402744026840274402204027440268402744022040274402124026840274402204027440212402684027440220402234027440268402744022040274402684027440220402744026840274402204027440268402744022040274402684027440220402744026840274402204027440268402744027440220402744026840274402204027440268402684022040220402684026840220402204041340413404134041340086400864026240224402244023440094402344014240209402274022840253402544026040263402694027540276402804029740321403254031840304403044030440304401444031840304403044030440318401144013640303403034011440136403034011440136403034011440136402084026140262402634028240310401154007340115402084026140262402634028240310401154007340115402084026140262402634028240310401154007340115402084026140262402634028240310401154007340115401234012340304403044030440304401234012340319403194031940319403184013640136402424024240136401364024240136401364024240136401364011540073401154023240262402694028240310402324026240269402824031040115400734011540232402624026940282403104011540073401154023240262402694028240310401154007340115401234012340406404064040640406403044030440304403044007340123401234012340168401204027440120402744012040274401204027440120402744012040274401204027440120402744012040274401204027440354401204012040120401204012040120401204012040120403544012040368403684036840318402954030840309402954029540295402954029540295402954029540295402954029540295403084030940295402954029540295402954029540295402954029540381403814038140381403814029540381403814038140295402954026240295402954029540295402954029540308403094029540295402954029540295402954029540295403084030940309403094037640295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954038140381403814038140381402954038140381403814029540295402624029540295402954029540295402954029540295402954029540295402954030840308402624012140262401214012140316403164026240121402624031640121403164031640316401214031640316402624031740348403504035140355403564036140362403634036440366403674026240262402624026240262402624026240360403614026240362402624026240268401954028340262402624026240262402624022040262402624026240319403194022040268402834022040268402844040440406404154041640417404184026240263402654026840284402844040440406404154041640417404184011340262402634022040268404064022040268402684026840284404044041840220402624026340220402844028440404404184011340220402624026340276402764026240335402624026240262403544026240262402694026240262402624026240390402624026240262402624017340403402624034940321403254026240297402624026240228402624026240262402624026240262402634026340262402634026340263402344026340262402634006840070400764007740078400804008140082400884009440121401284013240133401344013540137401394014540147401484015340156401594016140162401634016440173401764017740178401644033840164403384033840143401644021440338404104034440369403704037240378403794038140382403854038740388403894039040407403644041740072400724007240072400784007840078400784007840318403434020840210402124021440263403944040540406404224021440227402274022740227402274022740304402764027640277402274030440225403654040640226402484026540265402654027940262403104031040386402974040440416403924028140383403254020540206402344036140376402124026540294402944039940296402964027740324402084034440213403544026940269403714037140224402244026540248401784018540279402654026540430403564035640356403544035640367403924039440367403924039440367403674036740367404274042940417404174041740417402324007440206402064020640338402604026340338403384033840319402074031940319403194031940319403194031940319403194033140331403314033140331403314033140331400694026140434400864039240393403424016040430403054043440202402034011340114401134011440200401894018540185401854018540185401854018540185401154018540074400814016940081402414043340240401914019140191401914019140191400744019140191401914035740074403574016940241401174024740247401174024740074401594037940379403664037940241402434016940142403504033240409404094031940319403194031940319403194031940319403194031940319403194031940319401894018940189401894018940189401894018940407402634033740337403374033740193401934019340193401934019340193401934019440207402124021340215402234022540223402564025740319403194018240182401824018240182401824018240182401824018240182401824018240182401824018240182401824018240182401824018240182401824035540355403554035540355403554035540355401644041440081400814008140241400814008140081400934024140081400814009340241400814016940081400934016940241400814008140241400814008140081402414008140081402414008140241400814024140081401694009340241401694008140093402414008140081400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744009340169400814009340169400814008140241400814024140081400934024140081402414009340169400814008140093401694008140081401574039340074400744007440074400744007440207402074020740207402074020740207402074031940319403194031940319403194031940319403194031940331404084033140408403314040840331404084033140408403314040840331404084033140408403314033140331403314033140331403314033140331403314033140331403314033140331403314033140331403314033140331403314033140331403314033140331403314033140331403314033140331403314033140331403314033140134401514033140331403314033140331403314033140331403314033140331403314033140331403314033140331403314011140111401114011140111401114011140111401114011140111401114011140111401114011140111401114011140111401114011140111401114011140111400864008640086400864039540395400744007440081401694024140169401834016940183401234016940183401694018340241402414024140241401694012140123401694033240169401694024140241401694024140241400814008140081400814008140081400814008140081400814008140081400814008140081400814008140081400814008140081400814008140081400814008140081400814008140081400814008140081400814008140081400814008140072400734026140325400814008140169402414032440324400744007440074400744007440074400744007440074400744007440074400744007440074400744007440266400744007440074400744007440074400744007440074400744007440074400744007440074400744017640074400744007440074400744007440074400744007440074400744043440074404344007440434400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440079400744007940074400744007440074400744007440074400744024640247400814016940081400814016940081402414024140169400814008140081401694008140081402414024140169400814016940081402414024140169400814016940241402414008140169400814008140169400814024140081402414008140241402414016940081401694008140241402414016940081401694024140241401694008140169400814024140241400814016940081402414008140081402414008140169400814016940081401694008140081401694008140241400814024140081402414008140241401694008140169400814024140241401694008140169400814024140241401694008140169400814016940081401694008140241402414024140241403904039240393403904039240393402544025640257402644007440074400744007440074400744007440074400814016940430400814016940430404304024140430402414008140169400814016940081402414008140241400814008140169400814008140169402414024140081401694008140169402424024240241402414008140081401694008140081401694024140241400814016940081401694024140241400814008140169400814008140169402414024140081401694008140169402414024140305403054043340433404334043340124404334043340433404334043340433403094043340433402394043440433404334008140187402054024240245402884033240381403824043440434404344043440434404344043440434400744007440074400744016140203402034011440114401134011440113401144026140200402004007440074400744007440077400794008140074400744007740079400814007440077400794008140074400774007940081400744007440074400744007440074400744007440074400744007440074400744019140074400744007440074400744007440081400744007440081400744008140074400814007440074400744007440197400744029040074401974007440074400744007440074400744007440129401314007440074400744007440234402734027340273402734019140324403094032440324403244009440434403094032440324400724007340325400814008140169400814016940081401694008140169400814016940081401694008140169402834028340081401694028340081401694028340081401694008140169400814016940081401694008140169401694008140169400814016940081401694008140169400814008140081401694008140081401234016940081400814008140081400814008140081400814016940081400814008140081400814008140081401694008140081400814012340169402424008140081400814008140081400814008140081400814016940081400814017040170401694017040170401694016940169400814016940170400814016940170400814016940170400814016940170400814012340169400814012340169400814012340169400814012340169401694008140081401694016940081401694008140169402414024140281402814024140281402814024140081402414024140241402414008140241400814024140081402414008140241400814012340241400814024140081402414012340241400814024140241400814024140241400814016940241402414008140169402414008140169402414024140081401694008140081402414024140241402414024140241401234017040241401234017040241401234017040241401234017040241402414024140241402414024140241402414024140241402414024140242403094031240309403124030940309404294042940429404294006640066400664006640066400664006640066400664011840066401184006640118400664011840066401184006640118400664011840066401184039340393403934039340066401184038440393403844039340384403934038440393401624016440162401644016240164401624016440191401944012940129401294012940191404334043340189401904019240189401904019040192401894019040192401924018940189401904019040189401904018940190400824013740140401414014240143401444014540146401474014740145401464040140084401864035240084401864035240084401864035240084401864035240084401864035240084401864035240084401864035240421404214042140421404214042140421400844018640352404204042040420404204042040420404204042040270402744028240292402934029440295402964029740270402744028240292402934029440295402964029740270402744028240292402934029440295402964029740270402744028240292402934029440295402964029740274402744027440274400684026640266402664026640258402584025840258401464014840146401484014640148401464014840214401824038740383401914019140191401914019140191401914019140191401914019140191401914019140191403664025840296401914006640178401994020940210401914027540276402964029740298403014030240303403054030940310403114031440315403164027540276402964029740298403014030240303403054030940310403114031440315403164027540276402964029740298403014030240303403054030940310403114031440315403164027540276402964029740298403014030240303403054030940310403114031440315403164006640178401994020940210400664017840199402094021040415404154041540415400664016240178401994020440209402964031740296403174029640317402964031740066401624017840199402094021040066401624017840199402094021040204402134024740415402044021340247404154020440213402474041540204402134024740415403044008640086400864008640086400864008640086403534035740360404284039040428403724037340372403734039340393403934043040430404304043040434404134041340414403904039440404404074040840407404254042940401404044042040430404304042840434404284043440434404344033140332403334033440331403324033140332403334032440332403324033240332403324033240332403594022040234402624026340308402544025440254402544022640254401874021640072401414007240407402784021340214402154021740270402704015540157401604016140162401664017040172401784018440332403684040140270402804030440303402754008340241403124031040185401854018540185401854018540185402964012340123401624027040270404034040340238403684025240253402694011240276402064027440291403754027440375403244032440260401774017740270403684039640399403954040640204404034040340403401234012640137401384014140151401524021740231402954038940388403874040340403400734009240068400854007840092400954030440218403884042340424404234042440423404244042340424404234042440423404244042340424404234042440280402764027740280400784028040281402384023840281402384023840280402384031640322403244032540316403224032440325403164032240324403254031640322403244032540316403224032440325403044030440186402344023840239403324023840239402394023440238402394033240332401854033240238403304033240332402954018540252402524025340253402534025340185402534025340253402534033440253403334025340253402624026240253402534025340253402534025340332402534025340253402824029540296401854025340253402824023440253402534025340282402534028240282401864023440161401614026840161402694016140268402684026840269402834016140162402764016240198401984019840270401984026840268402694030140269402744033340274402894026940289403014026940274403014029140240402744029140274402894027440240402904029140270402744028140290402904024040269402704024040274402404024040240402404027440240402694028940240402704027440239402404027040274402704027440240402704027440240402564025740240402694024040242402404024040270402694027040274402394023940256402574024040242402404016140242402404024240240402404024040245402404024040246402684024640245402464024240246402424024040240402404024540245402464024040240402434024640240402434024440245402404024040254402354025340254403904023540253402544039040235402534025440390402354025340254403904023540253402544039040269402694026940269402694026940269402694026940112401124011240112401124011240112401124011240112401124011240112401124011240112401124011240112401124011240112401124011240112401124011240112401124011240112401124027040112401124011240112401124033240121401214012140121400704025640256400784007840400404004040040400404004040040400404004040040400404004040040400404004040040400403404034040340403404034040400403404040040340404004034040400403394034040339403404033940340403394034040339403404040040339403404040040339403404040040339403404040040400404004040040400403394033940340403394034040339403154031540162402904020640206402624026340309402604040140260403484025440254402544025440083401764017640260401714017140171401714032440325401624016240343404184041940420404214023640332402364033240161402974019440194401944019440281402824016240162401624016240162401624016240171403244036740379403374033740162401624016240078400784007840078400784007840078400784007840078400784007840078400784007840078400784007840078400784007840078400784007840072400784007840192404004016240198404074040740281401784027040178401784042240215401264012640270403304041140122401934021840220402684030940343403024026040325403274026540265402654026540323404074040740407404074040740407404074040740417404174041740417404014040140401404014031040350403504035040350400834027040270402704027040282403304013840206402334028240207402334028240289403184028240233402824028040280402804028040206402064033940282402064039840398403984039840434404344017140434401714043440171401714017140083402424017140171402544008240082400824008240333401404021840312400934027340365402754027540276402534031140420404274042940420404274042940420404274042940420404274042940068403834038440429404294042940123403984040140424403984040140424403984040140424403984040140424402744027440276402764012340077404084007740408400774040840077404084027640291402764029140113402744027440113403594041440201402624028240310403994039940399403994013640136401364013640291403154029140315402914031540291403154019240327401844030440294400784037940381403824038440387403894039140392403934039440395403794038140382403844038740389403914039240393403944039540078403794038140382403844038740389403914039240393403944039540078403794038140382403844038740389403914039240393403944039540078401234012440125401264013440123401244012540126401344012340124401254012640134401234012440125401264013440134401344009240193400924019340092401934032740092401934019940359404144036340363403634028340086402834008640283400864028340086403274028140117401394016840184402814011740139401684018440199402814011740139401684018440199402814011740139401684018440327403274040040327404004034640347403464034740347403944039440394403944034640346403464027440347403474032740347403464034640346403474034640347403474039440394403944039440434403474034740347403274034740346403464027340253402534025340253402304023040230402304029540331400784013440415404164042140415404164042140078401344041540416404214007840134404154041640421400784013440078401344041540416404214007840134404154041640421400784013440415404164042140078401344041540416404214008740092400954008740092400954007240092400954009240095400924009540092400954029540078404214042140078404214007840421400784007840421400784042140078404214007840421400874009240095400784013440421400784013440421400784013440421400784013440421404244020640207402344020640207402344020640234402064020740234402064020740234402064020740234402064020740234402354042240423402064020740234402914016240162401924012340162402394028040276402964030340304403084033040395402744027740277402744027440277402744026140427402704031040270403104027040310402704031040270403104027040310402704031040270403104027040270402704027040274402914027440291402744029140274402914027440291402744029140274402914027440291401754030240314403154036740302402344023340233402354023540295402404027640184402404027640282402344025740238402384026640332403324016140161402684026940268402694016140283402684026940268402694028440268402844026940269402434024240243402744029740268402754033240269401614033240112401124011240112401124011240112401124011240112402454011240112401124011240112401124024540256402454024540204402404020440240402404020440204402614032040333403574026140320403334035740333403574033340357402044030140204401914019740204402124022040191401974020440212402204020440204402044020540205402054020540205401994035040351403594036040235402744035040351403604027740235402354023540235402354023540235402354036740421404224035340422403864033040395403964039740398403994039540396403974039840399402354027540235402754016940170402354027540235402754027540275403114031140294400734007440075400724035740354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544032540315403154031540315403094030940405402044025840248402484026340315403154031540315403154031540315403154031540315403154031540315403154031540315403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031640316403164031540315403154031540315403154031540315403154031540315403154031540315403764008240235402884023540288402894028940235402814023540281402814028140386404354038640288402894023540281402354028140418403864038640093400944022740233402394022740233402274023340227402334023940227402334023940227402334022740233402274023340183401654041840418404184041840418404184033740276402764034840376403764037840211402354025440281402114023540254402814031140072403094040340404404064040340413404264021440235402544028140133402144023540254402814007240143401554016940309404034041640403402874024640287402874028740287402874028740287402874028740287402874028940406402764009340141402754016540281401844018540309404034040440210402464030940403402884028940357403694037040415402764009340275401654021140246402814018440214402884028740262402584025940262402904028340284402904028340283403514033240262403234025840259402624025840259402624025840259402624028340290402584025940262403144025840262403144032340258402624031440323402584026240314403234029040416404164041640416404164041640416404164041640416404164041640416404164041640416402834021940241402414024140241402414024140241402614024140242402424024240242402424026140242402424024240242402424024240242402424024240242402424024240242402424024240242402424024240275402754027540275404234014240142403504035040350403504007340074400774007340074400774008040075400724007240143403574035040354403574035140432402814028340291402934030340304402814028340303403044029140293402834033640336403364033640354403544035440295402834035440354402984035440354402834035440336403544035440354403364035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403574035440354404074035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544035440354403544030540305403054030540305403054030540305403054030540305403254032540325403254032740283402904032540290403264032740283402904032540290403264028340283402834028340283402834028340283402654028340283402834028340366402834028340283402834028340283402834031540315402834031540311403154028340315403154028340315403154028340283402044028340283402044028340283402044028340283402044020440204402834028340204402044028340283402044020440204402834028340204402834028340204402044028340283402044028340283402044028340283402044028340283402044020940283402834020440204402834028340204402044028340283402044028340362402834036240204402044020440283402834020440283402044028340204402834020440283402834020440204402834028340204402044028340283402044020440283402044020440283402044028340283402044028340204402834020440283402044020440283402044028340204402834020440204402834028340204402834020440283402834020440204402834028340283402834028340309402204030940283403094030940283402834028340283404054040540283402834028340204402834020440258402834028340204402834028340283402834024840283402484024840263402484026340283402834028340283403154028340315403154028340315403154031540315402834031540315403154031540283403154031540315403154028340315403154031540315402834031540315403154031540283403154031540315403154028340315402144021840315402834028340283402834028340283402834028340316403164028340316403164031640316402834031640316403164031640283403164031640316403164028340316403164031640316402834031640316403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164031640283403164023440316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031640316402834031540315402834031540315402834031540315402834031540315402834031540315402834031540315402834031540315402834031540315402834031540315402834031540315402834031540315402834031540315402834031540315402834031540315402834029040290402834029040290402294023440242402834029040311403184029040283402904029040283402904029040283402904029040283402904029040283402904029040283402904029040283402904029040283402904029040290402834029040283402904029040283402904029040283402904029040283402904029040205402054020540205402874028740287400764007840081400824008340084400854008640087400934018440085400864009240094401834019840287402054020540369403694036940268402684026840268401674016740262404164041640416404164028740287402874028740369403514030940337403084036740368403194030940309403094028340348403764034840376402904034840376402814028340376402814033640376403764030540309403054027640276402764027640276404254042740428404294043340423404254042740428404294043140433404234042440425404264042840429404304043340434404234042440425404264042840429404304043340434403054031140315403184032440330403314034140342403514036140373403824038340387403944040040407404154042040427404294030540311403154031840324403304033140341403424035140361403734037740383403874039440407404124041540429402804028740280403034029740303403534035840353403584029740297403534035640358403564035840358403584043040430403584035840430403724043040309402944030940310402944029740308403094031140336403374034940350403084030940337403094028440309402944030940327403674036840309403094029040291402934029440309403134031440315403194030940338403424030940334403504035740365403834039140397403994040140406404154033440350403574036540383403914039740399404014041540310403104033440385404064041640421404164042340310403104012340123401234012340123402174021740325403404032540340403254034040325403404028340284402834028440290402834028440290404304043040283402844029040283402844029040283402844029040283402844029040308403324033240422404224042240422404224042240422403534035940360403614036040361403604036140339403404035740311403114036640366403664036640366403664036640366403674030540305403054030540332404064040640406404064028340290402834029040283402904029040311402764027640283402834019740198401994020040201402024020340204402054020440185401434032740386402704028240339401984026940295402254012040290402904020640206403324029140425404334033240241402414024140241402064020640241402414024140241400684033540430402454025240393402584026440322403154041540245403504035140094400944026040310403104033340332404004040040400404004023440234402344023440261402614026140261402614026140261402614021840218402184021840319403194031940324403194032440324403244022540225402254022540302403034028340283403314028340331402834033140283403314033140424403314042440283402834028340331402834033140283403314028340331402834033140283403314028340331402834033140283403314028340331402834033140283403314028340331402834033140283403314028340331402834033140283403314028340331402834033140283402844033140283403314028340331402834033140283403314028340331402834033140283403314028340331402834033140283403314028340331402834033140283403314028340331402834033140283402834028340304402974025440429404294042940429403944039440394403944024040240401774017740177401774017740177401774017740160401984035740357403574035740246402464033840359403854025340276402854027640276402854027640120401204012640126404174036740412403944039440417403724038040333403334033340254402544025440254403804018040181401844032240333401804018140184403224033340180401814018440322403334018040181401844032240333402904029040308403094031040295402954029540295403914029040290401234029540295402954029540154401634015440163404134041440421404134041440421404144042140154401634015440163403514028140088401234008840422404224042240088400884012340351400714007140071400714012340123401234012340114401144011440114401234012340123401234012340123401234012340123401234012340123401234012340123400944013140185401234012340071400714007140071401234012340123401234011440114401144011440123401234012340123401234012340123400724012340123401234012340123401234012340123400944012340269403044032640283402784028340283402834028340283402834028340283402834040840420403044032240323403494030440322403234034940304403224032340349403044032240323403494042040068400684006840414400684006840068400684006840068400684006840068403354033540335403354031840318403184043040430404304033240332403324033240430404304043040430404304043040430404304043040430404304043040430401144011540122401744019540202402114021940078400784007840078400784007840318403314031840318403184033140318403184031840318403184033140318403314031840331403184033140275403534030240353402754035340275403024035340275403534043140275403534027540353402754030240353402754030240353402754035340275403534027540302403534030240302400874008940091400934009440245402464024940258402614026240263402644026540269402814039340087400914009340094402454024640249402584026140262402634026540269402734027640280402814039340087400894009140093400944024540246402494025440258402624026340264402694027640281403934008740093400944024540246402494025440258402614026240263402644026540269402734027640280402814039340087400894009340094402454024640249402584026140262402634026440265402694027340276402804028140393400934009440245402464024940262402694027640281403934008740089400934009440245402464024940254402614026240263402644026940273402804028140393400874008940093400944024540246402494025840261402624026340264402654026940281403934008740093400944024540246402494025840261402624026340264402654026940273402764028040281403934009340094402454024640261402624026340264402654026940273402764028040281403934025240393400874009340094402454024640261402624026340264402654026940273402764028040281403934025240393402524039340087400934009440245402464024940254402584026140262402634026440265402694027340276402804028140393400894025440256402574025840264402784038040381404084043240252402544025640257402584026440278403054032240380403814040940432402524025440256402574025840264402784030540322403804038140409404324025240254402564025740258402644027840305403224038040381404094043240254402564025740258402644027840380403814040840432402584026440380404084043240258402644027840380404084043240252402544025640257402584026440276402784032240380403814040940432402524025440256402574025840264402784032240380403814040840432402114021240252402544025640257402584027640278403224038040381404084043240252402544025640258402784032240380403814043240252402544025640257402584026440278403054032240380403814040840432402524027640322402524027640322404094032240252403224008140085403154042740081400854015340315404274008140085403154034940427400814008540315404274008140085403154042740081403154042740081403154042740081400854031540427400814008540315404274008140085403154042740081400854031540427400814008540315404274015540155401554015540285402764027640421402834028340420402854027640317402764028540276402764028540086400864011340276402854008740113401234027640285401234027640187402764028540187401234027640285401234012340276402854027640285401234027640285401234027640285402764028540123402764028540123402764028540123402764028540123402764028540123402764028540123401234020640211402154021740219402314023440259402624026340265402894029440295402964030540312403184033140124402764028540124402764028540123402764028540123403524036040357403594036540248402594027640285402484027640285402764028540276402854027640285402764028540276402854027640285402764028540276402854027640285402764028540285402854027640285402764028540283402834028340283402654026540263400744007440074400744007440074400744007440074400744007440074400744007440074400744040940211401294023340085400854008540085400854008540172400894009040092401174008840232403494034940256403584026340190402344023440234402344023440234400744007440234402344023440234400744007440234402344023440234402344023440234402344007440079400714014240424404244042440424403674036440364403644036440364403644036440364401404014140142401644016840169401754017640178401814018940202403324034240343403154026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634026340263402634025640256402564025640256402564025640256402564025640256402564025640257402564025740256402574025640257402564025640256402564025640257402574025740256402574025640256402564025640256402574025640257402564025740256402574025640257402564025740256402574025640257402564025740256402574025640257402564025740256402564025640256402574025740256402574025740256402564025640256402564025740257402564025740257402564025640256402564025640257402564025740256402574025640257402564025640256402564025640256402564025640256402564025640257402564025740256402574025740256402564025640256402564025640256402564025640256402564025640256402574025640257402564025740256402574043440132401694013240135401374013840139401464032640332403334033540339403434035040352403534008540085400854008540190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040308403094019040309401904019040190401904019040190401904019040190402634015340154402634026340263402634026340263402634026340263402634026340263402634025640257402564025640256402574025640256402574025640257402564025740256402574026440256402564025640256402564025740256402574025640257402564025740256402564025640257402564025740256402574025640257402564025740256402574019340196402614026340264402754025640256402564025640256402574025640257402564025740256402574042040256402574042040256402574042040256402574042040256402574042040420404204042040420402564025640256402564025640256402564025640256402574025640257402564025740256402574026640385401294012940129401294012940129401294012940129401294012940129401294012940129401294012940129401294012940129403584035840358403584035840358403584035840358403584035840358403584035840358403584035840358403584035840358403584035840358403584035840315403154031540315403224031540315403154031540190401904033140331403314033140190401904030140322403314041440414404144041440414404144024840314403504035040350403504035040350403504035040074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400744007440074400884008940090400924009340117400904008840089400904009240117400924011740088400894009040092400934011740089400894009040092401174009040092401174008940090400924009340117400884009040093400894009040092400934011740088400924009340089400904009240117400904008940090400924009340117400934008940090400924011740088400894009040092400934011740089400904009240093401174008940090400924009340117400904008940092400934011740093401174008940090400924011740231402334009240089400924009340117400904008840089400924009340117400884008940090400924009340117400884008940090400924009340117400884009040089400904009240093401174009340088400894009240093401174008940090400924011740089400904009240117400894009040092401174008940090400924011740092401174009240117401174011740093401174023240232402324023240232402324023240232402324021540232402914023240232402324023240232402324030140232402324023240232400724008740312401284012840128401294012840129402374023940282403274034940349403494024240284403494034940349403494034940349403494034940349403494034940349403494034940349403494034940358403584035840358403584035840358403584035840358403584035840358403584035840358403584035840358403584035840358403584035840358403584035840358403584035840358401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190403094018940189401894018940418401894018940189401894039140113401134011340113400884008940090400924009340117400894009040092400934011740089400904009240117402944030240414400894009040092401174037940414400894009040092401174008940090400924011740093404144037940414402854028540285404144028540435402324041440414404144041440414404144041440414404144041440414404144041440349403494034940274403494025640256402564025640257402564025740294403224024840254401294035840358402894031640358403584025740358402574035840279402884028940304403154031640358403584018840204402574025740166401684018440121401214012140121403574035840121401214012140121401624016340163401624016340162401634016240163401214012140121401214012140121401214012140121401214012140121401214012140121401214012140121401214012140162401634016240163401624016340162401634012140121401214012140417404174041740417401214012140380401214012140121401214012140121404174043440417404344041740434404174043440121401214012140121401214012140121401214012140121401214012140121401214012140121404174043440417404344043440417404344012140121401214012140121401214012140121400834008340083400834012140121401214012140121401214012140121401214012140121401214012140121401214012140121401214012140121402574008240121400824012140082401214008240121400884008840088400884012140121401214012140121401214012140121401214012140121401214012140121401214012140121401214012140121401134011340113401134012140121401214012140121401214012140121401214012140121401214012140121401214012140091401214009140121400914012140091401214025740121401214012140121401214012140121401214012140121401214012140121400914012140121401214038240172401904012340190403314012340123402694026940269402694019040190401904012340190401904033140123401904012340190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904019040190401904039540414403794031540086402334024540140401404023040338403384028340238401274042240361403644019840206400714013740164401374013740137401374013740137401374013740137401374013740137401374013740137401374023040236402304038040397401294031540315403154031540315403154031540315400684021940219402204021940220403174021940220402744027440274402334023340233402334023840229402334023340233402334030940309403094035940312403474029640302403474039440402404164029640347403504035840359401974019740233402454023340245402334024540429404294042940429404294042140421404294042140429402834028940283402894028340289402894030240289403024028940302402894030240289402904030240289402904030240283402894028340289402834028940289403024028940302402894030240283402894028340289402834028940289403024028940302402894030240283402894028340289402834028940283402894011340120401304013140133401344013740146401624016440165401714017540176402034020640207402084020940210402114021340214402154021640217402194022040223402254022640227402304023140232402334023440237402384024040241402444024640247402484024940253402544025540256402574025840259402604026240263402644026540266402734027440275402774027840280402834028540288402894029040291402924029340294402964030240303403044030540308403094031040311403124031340314403154031640323403264032740331403324037340283402894030540289403024028940302402894030240283402894028340289402834028940289403024028940302402894030240289403024028940302402894030240283402894028340289402834028940283402894028340289402834028940289403024028940302402894030240429404294042940429404294042140429404214042140429404214042940421404294042940429404294042140429404214042940421404294042940429404294042940429402834042940429404294042940421404294042140429404214042940206402334042940429404294042940429404294042940429404294042140429404214042940421404294042140421404294042140429404294042940429404214042140421404294042940429404294042940429404294042140429404214042940429404294042940421404294042140429404214042940429402044021740218402304042940429402324023940244402324023940242402444023240239402424024440429404294042940421404214042940231404294042940429404294042940429404294042940421404294042140421404214042940421404294042140429404294042940429402044042940429404294042140421404214042940429404294028340338402564033840269402694026940429404294042940421404294042140429404214042940429404294042940429404154041640400404004040040411404004040040400404004042240400404004040040400404324040740411402834028340276402964031440317403574030240165403104036640366401274012740366401784017840230402694026940269402694027740277402824024640123402304026940269402694026940277402774028240246401234031540316403164031640130402054020540338401414020540377402284031540414401114011140111401114020640206402064020640377402064037740365402284022840115401174011840380403814038240383403844038540386403094035940360403614037840380404034040540416403094031040311403124031740318403194033340359403604037840380404034040540416403614036140309403584035940360403614030940359403604036140361403614040040262402624026240414404144041440215403104039140391403914039140391403914039140391403914039140391403914020740212402174022640231402384025740274402774029140294403174031940336402154021540228402284022840228402284022840228402284041440414401114011140112401124011140111401114011240111401114011140158401584015840158402064012940403404034040340403403914014840155403914014840155403914014840155403914014840155402064012940391403914039140391402064020640206402064040340356403594037740377402464028440371403104031040309403094042240091400704007140072402044030440379403804038140247401194027540317401844017940179402914029140291402914032440325402844028740391400934025440281403014023240301403014014940301403084025440281403134023240232402814028140281402644026440264403184032540325401144021940114402194021940231402334043140249400714043140071402764027640120400774007340093400934009340093400934009340093400934009340093400934009340093400934009340093400934009340093400934009340093400934009340093400934009340093400934009340093400934009340093400934009340093400934009340093400934009340093400934009340093401544040940414401824041440417402324025440281404234023240254402814042340303403044031740319403684042140303403584036840421404084028840129402884027740277402774027740288402774027740277402774012940232402334031040281402824031040281402824023240233401164011740118402884012940130402374021340288401294013040310403104030940309403094031940303403094028840288402884028840129404224042240091403334033340333403334016240162401624016240162404134016240413401624016240161401624016240162401624016240162401624016240162401624016840413401624016840413401624016840413401624016840413400734008740284402874024340247402534025740258402604026240268402704027540276402824028340261402684030840310403114024340247402534025740258402604026240268402704027540276402824028340232402844028740261402684030840310403114024340247402534025740258402604026240268402704027540276402824028340284402874026140268403084031040311402434024740253402574025840260402624026840270402754027640282402834028440287402614026840308403104031140275402834028440287402754028340284402874027540283402844028440287402904030940336403564038940390403914027540283402844028740275402834028440287402754028340284402874027540283402844028740275402834028440287402754028340284402874027540283402844028740275402834028440287402754028340284402874023540236402374023840239402414024340246402484027540283402844028740290403094038940391402754023540236402374023840239402414024340246402484027540283402844028740290403094035740391402754023240284402874023540236402374023840239402414024340246402484027540283402844023240275402354023640237402384023940241402434024640248402754028340284402874029040309403364038940390403914023240391402824028240391402824039140280402824039140391402324039140391403914039140326403274033040331403324033340334403354033640337403384033940340403414034240343403444034640347403264032740330403314033240333403344033540336403374033840339403404034140342403434034440346403474034740303403264032740330403314033240333403344033540336403354033640337403364033740338403404034140342403434034440346403474032640327403304033140332403334033440336403374033840339403404034140342403434034440346403474034740374403744037940380403814031440288404154024840248402484026340264402684027440288403864040640434402484028840129402884028840129402884028840129402884028840129402884028840129402884028840129402884012940288402884012940288401294012940129401294012940129401294012940178401844012940178401844012940129401294012940179401294017940129401294029140291402704027440270402914028840291402914041440414404144041440379404144037940414403794041440379404144037940414403794041440379404144037940414401624016240413404144035340414401624016240413404144014040353404134041440419404144041440414404144041440414404144041440226402324027540283402844028740226402324027540283402844028740275402834028440287402754028340284402874027540283402844028740275402834028440287402754028340284402874027540283402844028740275402834028440287402754028340284402874027540283402844028740275402834028440287402754028340284402874027540283402844028740232402324039140391402194021940219402194021940219402194033240371403584035840419404294043040358403584042740427404304043440414403664041440198402054021340288403164035540337403244032640332403334033740346403504035740363403714036140367402374028840385403574039240274402754027640277402784028140284402874028840289403104038140288402884028840129402884012940123401294028840129402884026940288401294026940288402884028840288402884028840288402884028840347403864039640403404044041140424404334043440120402884012040129401294012940372403734037640377403784038040381403824038340384403854038640387403884038940390403914039240393403944039940288402884028840288402884028840142401434014440146402884028840288402884028840288402884028840288402884028840288402614028840261402884028840288402884028840288402884020440212402144028840393404034042140422402884028840288402884028840288402884033840434403384040340405404174041940421404224043440385404294043440434404014040340404404264042740431404344043440393404034041340434403934040340404404264043440434402954042340288402884028840288404344012940423401144038540393404124041340129404344012940114401154039340413401294043440129401144011540423401294043440129401144011540420404324043440129404344012940434401364013740138401394014040141401424014440151401524015540157401584015940162401634040440421404224042540166401694017040171401724017340174401764017740129401684028840131401334022440288403104043440129402884031140312403404038240386404114042840129403514038340351402884025540288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288402884028840288401254012740130401344013540232402814028840129402884023240281403114012940405404064012940232402544028140288401294023240311403534035340427404274042740256404004018740186401874018740186401874018740188401864018740186401874018640187401864012940129401294012940129401294012940129401294021140211401294021140129402114012940129402114012940211401294021140129402114012940129401294021040212401294021040210401294021040212401294021040212401294012940210402124012940210402124012940210402124012940210402124012940129401294012940129402114012940211401294021140129402114012940210402124025640304404224027640334403354042240423402764033440246402764024640334404224033440335403344027640334404224034140341402974029740309402564025640256402564025640256402564025640256402564025640256402974035740297402974030940357402974022440207402244020740224402074022440207402244012740128401674016740164402004042840428402284022840428404284026340263402974029740297402974026340297402974029740297400794008040085400894009140092400954011040120401214012240168401694017040173401744017840186404014040940409404094040940393403944039540396403974039840399404004040140406404074040840409404204039340394403954039640397403984039940400404014040640407404084040940420403934039440395403964039740398403994040040401404064040740408404094042040393403944039540396403974039840399404004040140406404074040840409404204016440164401644016440164401644016440164401674016440167401644017840164401784016440178402274022840164401644016440167401644016740164401644016440234402394028940303401644016440333403334033340333401874018840190402924029240292402924028440284402844028440284402844028440284402844028440284402844028440284402844028440284402844028440284402844028440284402844028440164401644019740280404154019740197401644016440164401644019740197404154040040415404154041540401404094043340428404284013540093400944009540137402794029340295403204029240093400944009540204401674020440204401674020440167402044016740167402044020440204400934009440095402044020440204402044020440204402044020440204402044020440204402044020440204402044020440204402044020440204400934009440095402124021240093400944009440093400944009540094400934009440095400934009440094400934009440095400934009440095400944009440093400944009540093400944009540094400934009440094400934009440095400944009340094400954009340094400954009340094400944009340094400954009340094400934009440095400934009440093400944009540093400944009340094400954009440093400944009340094400954009340094400954009440093400944009540094400954009340094400954009340094400954009340094400934009440095400934009440095400934009440093400944009540093400944009540093400944009340094400954009340094400944009340094400934009440095400804013540135401354011340135401354009440168402044016840204401684020440168402044016840204401684020440168402044016840204402044020440204402044016840204401684020440168402044016840204401684020440168402044016840204402044016840204401684020440168402044016840204401684020440204402044020440168402044020440204402044020440204401684020440093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540093400944009540133403404034140342403434034040342400804008040080401924019240192403124019240127401134011340113401134018340152401834018340183401834018340182401524015240153401534015340119401404012240122403314011940140401484018940189402464014840148401894018940189402464024140254402564025940260403104024140254402594026040310401544015440398402664038640154401544038640386402664038640266402664026640266402664015240241402434024440246402464031740246402464024740414402664020740331401414014140305401804018240180401824018240182401824018240182401824018240182401824018240182401824018240182401824018240182401824018240182401824018240182403534035340353403534038840148403174014840317401484031740148403174015240131401314034440352403444035240344403524034440352401314013140131401184013440148401314011840134401484011840134401484011840134401484018240152401824015240182401824018240182401824018240297402974018240182401824018240073401144018240262402824031040073401144018240262402824031040073401144018240262402824031040073401144018240262402824031040182402974029740414404144041440414400734026240282403104007340282403104007340262402824031040073402824031040331403314014840134401894018940148401894018940256401484025640428404244035940175402414026340379403794036440121402534011340345403474041640236402534030840308400934009340240403394025840207402144021740311402384028140295402974029740297402974030340297402974028140282402974028140282402974028140295402974028140295402974032240400404334028140295402814029540297403224040040433402814028240297402974029740281402824029740297402974029740416402974029740303402974029740311402974031140297403114031140297402974029740297402434024340262403104026240310401584024340158401584015840158401584015840158400784026240282403104007840262402824031040078402624028240310400784015840078402624028240262402824007840262402824007840262402824007840158404154041640241402414024140241402414038540177401904017740190401204012740128401294017740190401304013140130401274037340177403844038840421404234042840241400834018940083402414024140241402884008440263403834038340383403834008440084401504015040155401644016540183401774015740217402204022340226402294023040231402324023540236402384024040245402474024840249402614026540273402744027640281402874028940291402924029440295402964029740305403874041640070402034021140212402134021640217402394024140252402544026640269401294021240218402204023240235402384023940240402414025440263402894029740280404264042740290402964029040296402904029640290402964016540296402894028240282402824028240309403404035940387402834028240282402824028240282403254032540309403594038740283401924019240246403684037240252402254009440213400944017040289401444022540225402254022540225401834018340183401834018340183401834018340303402954022340238402624030940309402434022740233402384027440228404134041640417404234043040280402744022740233402384024340289402284021440239402394023940239402394023940239402394023940239402394023940239402394024040240402404024040240402404030440304403044030440304403044030440304403044030440304403044030440214402184026540368404054043440435403104032440325403244023440343403434034340343403434034340343403434034340343403444034440344403444034440344403444034440343403434034340344403444034340343403434034440343403444034440344403434034440343403444040940393403934021740302402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402524029540252402954025240295402524029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954029540295402954009340192401974021640228402324024140242402464029540358403684037340374403854038640392403934039440395403974040440406404134043040295403034030340223402234022340223402234022340223401904020740220402244024340223402234022340223402234022340223402234022340223402234022340223402234022340223403164029540295402954029540295402954029540295402954029540295402954029540295402954029540094400814009440094402134021340094400944024640237402764030340237402764028940289402894028940310403104031040310403034019040303402384030340238403034030340190402384030340303403034030340303402814030340190400804012340303401234030340123403034012340303401234030340123403034030340072403034007240303400724030340072403034030340303403034030340303403034029540303403034029540303402954030340295403034029540303402954030340295402954030340303402954030340295403034012940303402954012940129401294007340114401154026240282403034026240282403034007340114402624028240303400734011440115402624028240303400734011440295403034030340295401414014140141403104031040310403104012340295401234029540123402954012340295402954029540295400724029540072402954007240295400724029540295402954029540295402954029540310402954029540295402954012940295402954012940129401294007340114402624028240262402824007340114402624028240073401144026240282400734011440295402954029540129402234022340291403024030340291403024030340291403024030340223402914030240303402234022340129402234022340303403034030340303404154006940070400724007340074400754008040415400694007040072400734007440075400804041540069400704007240073400744007540080402664041540266404154026640415400694007040072400734007440075400804041540287402984032240415402874029840322404154028740298403224041540287402984032240415404154041540415404154024740247404154041540247402474041540415400824013040131401384041540415404154041540301403184031640303403044030540316403174032040321403224033140332403004031640318403254041540301403674041540415403014030440315403164033840415402734027440241402414024140273402744024140241402414042240433404154043440422404344027540275402754026540256401574025640256402564035640256402564025640256403034025640256402564025640356402664026640266401674026640256402564025640256402564025640265402564015740256402754027540275402754027540275402754027540261402634026340184403234025340260402764031740317402744040740434403264031540288402914029740288402914029740288402914029740288402914029740288402974028840291402974028840291402974028840291402974028840291402974028840291402974029540295402954017340174401754017640181401824018440196401974019940228402284007040264401134034940357403724039640398402314020640215402204022540226402324029440246402834028440213402824032340292403384025540332403324033240134403724040140401404014026440392400724031140311403114031140311403114031140311403114027540130401304013040130401304013040130400724007340068400724023840073404214031740178404244031740317403654035940361403844039540365403594036140395403964041240365403654026440265402664036540275402794036540264403654036540394403944026440365403654008740091402644026440264401844031740240402404024040240403244032540331403234033140317403924039240324403244032440323404154041540415404154041540415404154041540415404154041540415404154041540415404154041540415404154041540415404154041540415402134021340213402134021340213402134021340382403824038040382403814038240382403824038240382402624030240148401304012440127401304013240133401344013540136401374013840070400704007140072400744007440074400744007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072401564015640156401564007240156400724015640072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240238402384023840238402384023840238402384023840238401404023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840245402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402384023840238402394023840238402384023840212402134021240213402124021340212402134021340213402134021340204402044020440204400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040080400734008040073400804007340080400804007340080400804007340080400804007340080400804041840420404264042740428404184042040426404274042840073400804008040073400804008040073400804008040072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240154400724007340072400734007340176400734007340073400734007340072400734007240073400734007340072400734007240073400724007340072400734007340073400724007340072400734007240073400724007340072400734007240073400724007340073400734007240073400724007340073400734007240073400724007340073400734007340073400734007340072400734007240073400734007340073400734007340073400724007340072400734007340073400734007340073400734007240073400724007340073400734007340073400734007340072400734007240073400734007340072400734007240073400734007340073400724007340072400734007340073400734007340073400734007240073400724007340073400734007340073400734007340072400734007240073400734007340072400734007240073400734007340072400734007240073400734007340072400734007240073400734007340072400734007240073400734007340073403814007340381400734038140073403814007240073403814007240073402814038140073402814038140073403814007240073400724007340073400734007340073400734007340420404214042040421404204042140420404214040540420404214042040421404204042140420404214042040421404204042140420404214042040421400824008240082400824008240084400844008440084400844008440084400844031740317403174031740317403174031740317403174031740317403174031740317403174031740317403174031740317403174031740317403174017840178401784017840178401784017840178401784017840178401784017840178401784017840178401784017840178401784017840178401784017840178401784017840178401784028440285402844028540284402854028440285401784028440285402844028540284402854028440285401784017840178401784017840178401784017840178401784017840178401784017840178401784017840178401784017840178401784017840178401784017840178401784017840178404294042940429404294042940429404294042940429404294042940429401864021040429404294042940429404294042940429404294042940429404294042940429404294042940429404294042940429404294042940429404294042940429404294042940429404294042940429404294042940429404294042940429404294036740367403674036740367403674036740367403674036740367403674036740367403674036740182401824018240182401824018240182401824018240182401824018240182401824018240182402624026940263402634026340263401634016340163401634016340163401634016340163401634016340163401634031140312403124041540415404154041540415404154041540415404154041540415404154021940227402604030140302403044030540305401384013740138401244012640127401284012940130401324013340134401354013640135401364013740136401374013840134401354013640138401384013840138401384013840138401734017340173401734007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240072400724007240269402694026940269402694026940269402694026940238402384023840238402394023840238