/*
.....'''''''''''''''''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,',,,,,,,,,,'''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,',,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
....''''''''''''''''''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,,,,,,,,,,,,,''''''''''','''',,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
...'''''''''''''''''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''','''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''''''''''''''''''''''
'''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,',,,,,''''''''''''''''''''''''''''''''''
''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,'..','.''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''''''''''''''''''''''''''''''
''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;,'''.....'........'''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'',,,,''''''''''''''''''''''
'''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,;:colc;,,''...'''........... ...',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''''''
'''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,;cdxdxdc;,,'...'''''',,;::::;,'. ...',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''''
''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;,,,;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,:okOxoxdccl;'.',;;:clloodxkkOOkxd:'. ..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'''''',,,,,
'''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,;;,,,,,,;lxkOxlldllol::clloodxxxxkkOO000KK00xc'. .'',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
'''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,lkdooodOkdllloodddxkkkkkOOOO000KKXXKKOo;.. .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
'',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,cdo:coxKXkdolodxkkkkkkkOOOOOOO000KKXXXKOo:,. .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,;col:cdkk0OdddodxxkkkkkkkkkkkOOO0000KKKKK0kol;'...',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,:ddccxOkkxxddddxxxkkkkkkkkkkkOOO0000KKKKKK0kdlc;,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;odclkkxxdddddxxxkkkkkkkkkkkOOOOOOOOO0KKKKK0Oxolc;',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,coclxxddoddxxxxxkkkkkkkkkxxdlccccclodkOKKXXKOxooc;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,:c:codddodxxxddddxxkkxxxdllc::::clodxkO0KKKXKOxdlc;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;:;;:oddkkxo:;,,:cloddddollc:clooddxkOOO0KKXX0Oxol:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;,';oxOko:,',,,,;;:clodddl:;;;;'.';cldxO0KKKKK0xo:;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;;,:xOkl::clooc:;,,,coxkdl::;;:,',cdxkO00KKKXKKOkxxxl;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;;,lkOdclll:,'',,',,:okOkdollllloxkkOO0KKKKXKKKK0KKOdc,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oOOoc:,'....;c:c:coxO0OkxdddddxxxkOO00KKKKKKKKK00Ol,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:x0Odlc::clllloolccoxO000OOkkxxxxxxkkkO00000000OddOo,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:lkK000Okdddddddolcloxk0000OkxxxxxxkkkOOOOO000000doko,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;,,;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:dO0OOOkxxxxxxxdolcloxkO000OxdxxxxkkkkOOOOOO0O000kkkl,,,,,,,,,,,,,,,,,,,,,,,,,,;;;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:dOkxdooooodxddoccldxxkOOOOkddddxxxxxkkkOOO000K0O0k:,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cdxolcllooddoolcccclool::lodddddddxxkOOOOO000KOkd:',,,,,,,,,,,,,'''''''''''''''',,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:ldocccclooooooc:,',;:cclooxkkxxxxkkkkOOO00000d,...'''''..............................'',,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:lxxlccccllooollc;;;:cldkkOOOOOkkkkOkkOOO0000Oc.............................................'',,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cxkdlccccclllllllllodddxxkkkkkkkkkOOOOO00000O;..................................... ........',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;clddlccccclllllcc::::::ccccllodxkkOOOOOOOO0x,.................................... ....'',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;coolcccccllc;,,;;:ccloddddxxxxkkkOOOOOOOOd.................................... ....'',,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::ccccccc;';llcllccllc:::cclllloodxxkkxxkkkOOOOOkkkc. ................................. ....',,,,,,,,,,,,,,,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,,,,,,,,,,,,,,,,,,,,,
,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::ccccclllllccccccll:''clccccclllcccclcclloodddxxxxkkkOOOkkko. ............................... ...................''',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;,,,,,,,,,,,,,,
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::cccccccccccccc:::::cloooc;,:cccccccccccllllooodddxxkkkOOOOkxxdl. ...................... .......... ... .....''',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::ccccc::::::;;;;;;;;:cldddoodoc;:::::cccllllooooodxxxxkkkkkkxxddc,. ......... ............ .... .......',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::ccc:::::;;;;;,,,''',;:ldxxxddddddoc::::cccllllodollodxxxxxxxddooo:. .... .......... ...''''....... ................,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::cc::;;;;;;,,,,'''..'';:loxxkxdddxxxdl;,;;::ccclllooolllloooolllllc,. .................... ..''''''...... ...............',;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::cc:;;;;;,,,''.........,:ldxkkxdddxxxxdl:'.,;;::cccccccccccccccc::;'. ..................... ...'............. ................,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::cc::;;,,,,'''...........';coxkkxdoodxxxxdl:'.'',,;;:::::::::;;,''.. ........................ ........... ...''............ ................',;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::ccc:;;,,'''......... ...,:ldxxxxdoooddddolc;;,,......'''...... ....'''''...................................... ................. ................',;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;;;;;:;::cc::;,''.................'',;:llollccccc:::;;,,'',;;'. .'''....'',;;;;;;,''.......................................... ......... ................',;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::cc:;,'''.......',,;;;:::::;;::;;;;,,'',,,,,''''''...'''..... ..':lc;',;:cc::;,,''................................................ ......... ................',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:clc:;'......';clooolllclllcccccc::::::;;;;;;;;,,,''''''''...........'..',::;,,;;;,'''............... ................................... ....... ................',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,,,,'''.'',;:ldxddooolcccccc:::c:cc::::::::;;;;::;;;,,;;,,,,''...........'',;;:::;,,'''.'''................ ................................ ...... .................',,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::;;::::::::::;,,''.........',;lddlcccc::::;;:;;:::::;,,,,;,,,,;:cccccccc::;;;,'''...... .';:::cc:::;;,,,,,,''............................................ .... .. ....... ........',,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::ccccccc:;,'''..... ...':llcccc::;;,,,,,'''.....''',;:cllloollllc:::;;,''....... ..,:lolcllc::::;;,,,,,,''........................................ .. .... ..............''',;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::ccllloollc:;;,,,'...... ..';::::;:;,,,'...........',;::clllooollllcc:;;,'''...... .;lodolll:;;,;,''''''''......................................... .....................''';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::clooooollcc:;;;;;,........ ..';::::;;,,''..........',,;;;::::::cclcc::;;;,,'....... .':llllcc:;,,;;,,'''''...........................''............. ......... ... ......''',;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::clooooollc::c::::;;'..........,::::;;;,''........',,,,,,',,,,,,,;;;;,,,,'''.......... ..;clooooolcllllcc::::;;;,,,,,,''''...''''''''''''............. .... ......... . .....',,,;ccc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::cloooodolccccllllc;,''.......',;;;;;;,,''......',,,,,,'''.....',,;,,'''''.............. ..:dxxxxxxdddoodoolllc:::::;;,,,,,''.'''.....'''............. ......... ........ ......'',:ll:;,,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::looooddolcclloollcc:,''......,;:;;;,,'''..'',;;;::;,,,''.........'''.............''........... .,lxxkkkkkkdodololcclc:::::;;;;;,,'',,'''''............... ........... ...... ...',;:cc:,'.'''',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::cloooodollccllollc::;;,''....',;;;;,,'.....';::::::;,'''................'',',,;;,,,,,'''....... .:dxxxxxdddddooolllc::;,,;;::;,,,,;;,,'''''.............. .......... ... ....',,;::,'.......''',,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::coooooddolllllollc:;;;,,'....,;;,',,''...';::::::;;,,''.............',,,;;;;;;::;,,;;,,'''..... .:ddxxddoddlllclllcc::;;::;,,;;;,''''''''............ ........'... .....''',,,'...........''',,;;::;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::loooooddddollllllc::;,,'....,;::;,,,,,'',;:lc:::;;,,,,''........'',,,;;;;;,,,,,,,,,,'''',''...... 'ldddddddollccccc::::;;;;,,,,'...''',,'......... ..........''.. ........''.................'''',,;;;;:;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::lodooooddddoloolcc:;,'.....,::;::;;,,,;;:ccllc:::;;;,,'''''''''',,,,;;;;,;,,,'''''''''''''.......... .:dddoooolc:cllc:;;;;;;,,'''.......'............. .........''''.. .............. ..............'',;;:::;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::loddooodddddolllc;,'......';::;;::;;;;:cllolcc::c::;;;,,;;;;;;,;;:;;:cc::;;;,,,'''''''','............ 'lddoooolccllc:;;,'',,'.''.................. ........',,'.. ........'.... ..............''',;;;::;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;:;;:::codddddddddooolc;,''''....,;;:::ccllcclllloolcccc:;;;::::::::;;::cc:::::;;;,,,,,,''''''''''........... .,ccccc:ccc::;,;:,''''................. .....',,,'. ............ ..................'',;;;:::;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;::;::::ldddddddddoolc:;,,;;,''..',,,;:loddddddddooolllc::::;;;:::cc::::::ccc:;,;;,;,,'''''....'............. .':cc:;clc;;:;;;;,'..'................ ...''',,'.. ........... ....................'',;;;::;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;:::::::coxxxddddddol:::::::;,''...''';codxxxdxxxxdoooolccccccc::ccccccccc:::::;,,,,;,,;,'''............. ..;c:;;cc:::;;;,.................. ...',,'... ........... ......................'',;;::::;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;:::::::coxxxddddddlcclllcc;,,,........;ldxkkxxkxxddddoollccccccllllllcclllc::;;;;,,'''''',,,............. ..,;;,,,;,'''.................. ...........'''... ...... .........................',,;::::;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;:::::::lddxxdddddocclllcc:;,,'. .... ..'cdxkxxkkkxxxxdoooooolllollllcc:::::::;;::;,'''....'''.......... ....',,,'........... . ............... .... ..........................'',;;:::;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;::::::::coxxxdooddocclllc:;,,,.. ... .,lddxkkkkkxxxxdddddollllllllc:::;;;:;,,;;,'''......'........... ....'......... ............. ..... ...............''''...',;;::::;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;:;::::::::coxxxollooolccclc:;;;,. ... .;codxxxxxxxxxdxdolc:::;,,;;;;:::::;;,,,,''''............. ....... ... .... .... .............'''''..'',;;:::;::::::::;;;;;;;
;;;;;;;;;;;;;;;;;;;::;::::::::::coxxxdolcloolc:clllol,. .... .,clodddddxdoollc:;'.....',;,;;;,,,'''''............. ..... ..',,''.... ... ....... .... .............''''''',;;:::::::::::::;;;;;;
;;;;;;;;;;;;;;;;;;;::::::::::::::cdxkkxdcclodoooxkko:...',,... ..;clllooooolccc:,. ...',,,''''............. ....'......''...... ..',,'..... .. ................ ......... ....... ............''''.'',;;::::::::::::::::::
;;;;;;;;;;;;;;;;;;:::::::::::::::cldkkkkdodxkkkkkko;..,;:;;,'... ..;:clllllc:;;,,.......'''''.............. ..';::::;,'....... ..,,'.... ....... ........... ................... ........''...',,;;:::::::::::::::::
;;;;;;;;;;;;;;;;;;:::::::::::::::ccoxkkkkkkkkkkkdl;'',;;;;,'... ..',;:ccc:::::;,''''''........... .. ...,;codolc:;,'.... .... ..','.... ...... .....''.... ................. ...........'',;;:::::::::::::::::
;;;;;;;;;;;;;;;;;::::::::::::::::ccldxxkkkOOkkxoc;,;;,,,,'.... .....'''',,;,'.'''........... ..';coxkkkxoc;,'.... ... ........ .. ........... ................ .......... ..........'',;;:::::::::::::::::
;;;;;;;;;;;;;;;::::::::::::::::::cldddxxkkOOOkoc:::;,''...... ............... ...........';loxkOOkxol;,'........ ..... ........ .............................. ..........',;;;;::::::::::::::::
;;;;;;;;;;;;::::::::::::::::::::coddoodxkkOkxl::ccc:;,'..... ..,;,,'..........',;;:::;;,,,,;:ldxkkkxoc:;'''''',,'..... ............ .......... ........ ................ ........',;::;;::::::::::::::::
;;;;;;;;;;;::::::::::::::::::::coddolloxkkkdc:cc::;,''...... ... ..,:clcc:;,,',;codddddool:;,'',:lddddlcc::::;:clc:,'.... ..'''....... .......... ... ....'','........... ......',;cc:::::::::::::::::::
;;;;;;;;::::::::::::::::::::::codxdllldkkkoccllc:;,'......... .... ..';::cllloooloooooollcc;,...;ldddooddol:;:cc:,'.... . .,,'...... ......... ..... ...',,,,'........... ......',:clc::;::::::::::::::::
;;;;;;;::::::::::::::::::::::cldxdolldxkko::lllc;,'..... ...... ..,cloolclllllllcccc:,,',;codddddddoc;',;;,'.... . .''..... ......... ..... ...... .',;;;,,'....................',:ccc:;;;;:::::::::::::::
;;;;;::::::::::::::::::::::::coddolldxkko::lllc:;''.... ...... .',,;:looooolllllcc:,,;codxkkkxxol:,........ ....... ...... ...... ...... .....',,;;'... .',;;;;,,'.......... .....',;cllc:;,,;;::::::::::::::
;;;;;::::::::::::::::::::::::coddoloxkkoccllc:;;,'.... ........ .....,coodddooollllc:;,,;lddxkkxdc;'...... ....... ... ..... ..''''................'',;;;:::::;;,.. ..;:::;;,,.......... .....',;:clc::::;;;;:::::::::::::
;;;;;;:::::::::::::::::::::::cloddddxxoccool:;;,'..... ........ ... ..:loooollccclccc:;'';cooooc;'......'..... ..... .. .,,,,,,'''',,,,,,;;;;;:::::::::::::::;,...,::::;;;,......... .....',;:cc:;;:;;,;;;::::::::::::
;;;;;::::::::::::::::::::::::cloxxxxkd::looc;,,'..... .......... ... ... .;lcccccc::::::;,,,,;:::;;,',;:cc:,'....... ......... .';;;;;,,,;;;:::::::::::::::::::::::::::;;'';cc::::;;'........ .....',:ccc;,;;:;;;;;::::::::::::
;;;;;::::::::::::::::::::::::cldddddxl,;clc;,,'...... ........... .,,.. .cllllcc:::::,'..';:llllllloddoc,'..... .',,,'... . ..;:;;::;;;:::::::::::::::::::::::::::::::::;;:cc:::c;'......... .....,;:c;,',:::;;;;::::::::::::
;;;;;:::::::::::::::::::::::clododdxxc,;::;,''....... ............. .,:::;'.. 'coooolc:::::;,''';codxddolool:,.... .',,'.... .',::::::::::::::::::ccc::::::::::::::::::::::;,;ccccc;'............ ....'',,,''',:cc;,;;::::::::::::
;;;;:::::::::::::::::::::::ccodooooddc',;:,'........ .............. .,:ccccc:;,... .,cccllccccc:::;'..,ldddoc;;;;;'.... ..''.. . ..';::::::::::::::::::ccccc::::::::::::::::::::::;,;:cc:,'.''.......'..........''''...',:cc:;;;;:::::::::::
;;;;::::::::::::::::::::::ccldololccoc'.,,,''....... ................;:ccccccccc::;,'..... ..,ccccccccc:;,'...;cccc:,'..''..... ..... .... ..,;;;::::::::::::::::ccccccc:::::::::::::::::::::;,,,;::,'','..................',,,.....,;ccc;;;;:::::::::::
;;;::::::::::::::::::::::ccooolcclc::;...''''........ ................,:cccccccccccccccc::;;,,''..........,cllc:ccc:;'....';;;;;,'....''.... .. .... .',;;:::::::::::::::::ccccccccc::::::::::::::::::::::;,;;;;,,;,'............ ...','....';:cc:;;;:::::::::::
;:::::::::::::::::::::::cloollccc:;'... ..'........ ..............'::ccccccccccccccccccccccccc::::::::::cllllc:cc:;,'.....',;;,,;:ccc;,'...... .... ..,;::::::::::::::::::ccccccccccc::::::::::::::::::::::;,;::;;'..............................',:cl:;;;:::::::::::
;:::::::::::::::::::::ccloolccc;'.. ............ .............,:cccccccccccccccccccccccccccccccccccccclllll::c:;,''......';cloddoc:,,'..... ..... .';::::::::::::::::::::ccccccccccc::::::::::::::::::::::;,;cc:;,.....''........ .... .',,,:clc:;;:::::::::::
:::::::::::::::::::::cloolllc:'. ........................;:ccccccccccccccccccccccccccccccccccccccclooool:::;,'........,clooolc;,''... .','... .,::::::::::::::::::::cccccccccccc::::::::::::::::::::::;,:ccc:,...',,........ . .,;;:cc::::;::::::::::
::::::::::::::::::::clolccc:'....... ..............;:cccccccccccccccccccccccccccccccccccccccclooooll::::;'........:llccc:,'''.. .''.. ..;::::::::::::::::::::cccccccccccc::::::::::::::::::::::;;:ccc;'..',,'....... .......:ccllc::::::::::::::
::::::::::::::::::clodollc;'........ ...........';:ccccccccccccccccccccccccccccccccccccccccclloooool:;;,'.... ..:llc:;,'.... ..... . .';::::::::::::::::::::ccccccccccccc:::::::::::::::::::::::cc::,'''''.... ..........;cllc:::::::::::::::
::::::::::::::::ccodxdool;...''..... ........':ccccccccccccccccccccccccccccccccccccccccccccloooooolc;'..... ..,clc:;;,.... .... . .';:::::::::::::::::cccccccccccccccc::::::::::::::::::::::::::,'.''...... ...........;clc::::::::::::::::
:::::::::::::::ccoxkxddd:...''..... .....,:ccccccccccccccccccccccccccccccccccccccccccccclooooooolc;,'........,cc:;;,... .. ..,;:::::::::::::::::cccccccccccccccccccc:::::::::::::::::::::;'..'........ .........','';cc:::::::::::::::::
::::::::::::::cldkkdooxo,........... ...,:ccccccccccccccccccccccccccccccccccccccccccccccccloddoolc::;;,........';;,'... ..;::::::::::::::ccccccccccccccccccccccccc:::::::::::::::::::;'............... ..........',;;,,:c::::::::::::::::::
:::::::::::::ccokkdodxxo'........... ..':cccccccccccccccccccccccccccccccccccccccccccccccccccccllc:;,,,,;:;'.'....,;:;..... ..,:::::::::::::::ccccccccccccccccccccccccc::::::::::::::::::;'...........................'',;;;:::::;:::::::::::::::
::::::::::::ccoxkddxxkxc. .......... .':cccccccccccccccccccccccccccccccccccccccccccccccccccccc::::::,..,;;,;,. ..;c;...... ... . ...,;::::::::::::::cccccccccccccccccccccccccccc::::::::::::::::;'...... ..................',,'',;;;;;;::::::::::::::::
::::::::::::cldkkxxkkko,. .............. .. .;ccccccccccccccccccccccccccccccccccccccccccccccccccccccccc::c:'..',,;:. ...;,..... ... .....',:::::::::::::::ccccccccccccccccccccccccccccc::::::::::::::::;'...... ...................'''',,;;;;;:::::::::::::::::
:::::::::::cclxOkxxkkxc.....''.......... .. ....,cccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:::,'...';:'.....,..... ... ......'',;::ccc::cc:::::::ccccccccccccccccccccccccccccc::::::::::::::;;,.............................';::;,;;::::::::::::::::::
:::::::::::cclxOOxxxdl:'...'''',,,,'.. ..... . ...':cccccccccccccccccccccccccccccccccccccccccccccccccccccccc:;,,;;.. .,,.''....'..... .. ....'',;;::ccccccccc:::::::ccccccccccccccccccccccccccccc::::::::::::::;,... .....','.................,;:;,;;;:::::::::::::::::::
::::::::::ccclxOOkxo:cc;...,,;:cc;'. ..............;cccccccccccccccccccccccccccccccccccccccccccccccccccc::::;,,;;;'. .'.','. ...... ... .....',;::ccccccccccccc::::ccccccccccccccccccccccccccccc::::::::::::::;'.... ...,;;,..........''',,;;;,,;;::::::::::::::::::::
::::::::::cccldkOko;';cc::::cc:,... .................,cccccccccccccccccccccccccccccccccccccccccccccccccc:;:::;;;::;,. ....,,.. .... . ......',;:ccccccccccccccccccccccccccccccccccccccccccccccc:::::::::::::;'......... .'::,......'...',,,,,,;;;:::::::::::::::::::::
::::::::::cccldxkd,.,clllodxxl'. . .................,cccccccccccccccccccccccccccccccccccccccccccccccc:;;::;;,;cc;'.. . ...;,.. ... . ......,;::cccccccccccccccccccccccccccccccccccccccccccccc:::::::::::::;'............ .';;,.........';,'',;;;::::::::::::::::::::::
::::::::::ccccoxxc';looodxxd:'....... .................;ccccccccccccccccccccccccccccccccccccccccccccccc:;;::;;,;:c:,.. . ...,... ..... . .. .....';;::ccccccccccccccccccccccccccccccccccccccccccccc:::::::::::::;,'............ ..;;'... ..''','.',;;;::::::::::::::::::::::
:::::::::cccccldxocdddoldkd;......... .................':cccccccccccccccccccccccccccccccccccccccccccccc:;;::;,,;:::;'.. ...... ... . .. . ......';;::ccccccccccccccccccccccccccccccccccccccccccccc:::::::::::::,'''........... ..','... ..''''.',;;;:::::::::::::::::::::::
:::::::::ccccccoxdodxdoloxd:......... ...............;cccccccccccccccccccccccccccccccccccccccccccccc:;:::;,,;:::;,... .. ... . .........',;;:ccccccccccccccccccccccccccccccccccccccccccccc:::::::::::;;,'''........... ..','.. .......',;;;::::::::::::::::::::::::
:::::::::cccccclddoodxdooxd:......... ...............;ccccccccccccccccccccccccccccccccccccccccccccccc::c::;,,::;;,'... .. .. . . .. ......'',;:::ccccccccccccccccccccccccccccccc::ccccccccccc::::::::;;,''''''... .... ..',,.........',;;;:::::::::::::::::::::::::
:::::::::cc:ccccoddooddddxo;. ...... ...............;ccclccccccccccccccccccccccccccccccccccccccccccc:;::;;;;;;,',::,.. . .. ......',,,,;::ccccccccccccccccccccccccccccccc:cccccccccccc::::::;,'...'''............ ..''...,...',,;;::::::::::::::::::::::::::
:::::::::cccccccodddoooodo:'. ...... .............':cclcllccccccccccccccccccccccccccccccccccccccccc:;;;,'''';'. ..',,''. .. ...';:;,;::::ccccccccccccccccccccccccccccccccccccccccc::::::::,...'''......................,,,;'..',;;:::::::::::::::::::::::::::
:::::::::cccccccldddollll:'. . ....... ...........';cccllcccccccccccccccccccccccccccccccccccccccccc:;'........'. ...'''... ....,:;,,;;;;;;;:ccccccccccccccccccccccccccccccccccc:::::;;;;::'..... ...............,,,;'...,;;:::::::::::::::::::::::::::
:::::::::ccccccclooooc::cc,.. ...... ..........;ccccllcllclcccccccccccccccccccccccccccccccccccc:,'''.......;;. .........'.... .....',,,,,,,,,,;:cccccccccccccccccccccccccccccccc:::::;,,,,;;,...... ...''........''',,''',;::::::::::::::::::::::::::::
:::::::ccccccccclooolc:cll;..... ... ........,:ccccccllcllllcccccccccccccccccccccccccccccccccc;'''''.......:c,. ..''....... ...''.. ','','.'''''';:ccccccccccccccccccccccccccccccc:::;,,,,,'.''....... ....''.....'...''',,,,;::::::::::::::::::::::::::::::
:::::::cccccccccloolllllc,............ ......';ccccclccccclllllccccccccllcccccccccccccccccccccc;'.'.....''...;:,. ....''..'.. ....... .'...''....'',,::ccccccccccccccccccccccccccc:::;;;;,,,'...''.. ...... ..,,.....'....,,,;,,;:::::::::::::::::::::::::::::::
::::::::cccccccccllllcclc:'.. ....... ......,:ccllccccccccclllllllllllllllcccccccccccccccccccc:;,,'........ .',.. ................ .... .'.. .........';:::ccccccccccccccccccccccccc:;,,;;;;;,...''... ...... ..''......'...';,,;,,;:::::::::::::::::::::::::::::::
:::::::::ccccccccllllccclc;.. .... .....,:cclllcccccccccccclllllllllllllcccccccccccccccccc::,... .. .. .... .... .. ... .. .... .. .. ....';::cccccccccccccccccccccc::;,,,,;;;;;'...... ..... .........'''. .,;,,,,,;:::::::::::::::::::::::::::::::
::::::::cccccccccclllccll:,.. ...... .....;cccllllllccccccccccllllllllccclcccccccccccccccccc;'.... .. .. .. ... .. .. ...',;::ccccccccccccccccccc::;;;,'',;;;,'.... .... .....''..'''. .;;,,,,,;:::::::::::::::::::::::::::::::
::::::::cccccccccccccccll:'.......... ....':cccllcllccccccccccclllllllllcclccccccccccccccc:;,'... . .... ...... .. ...',;:ccccccccccccccccccc:;::;'',',:,'''.. .............'''.''. .;;,,,,,,;:::::::::::::::::::::::::::::::
::::::::cccccccccllc:::cc;'..'''.... ....,ccclllllcccccccccclllllllllllllcccccccccccccccc;,,'.. ... . .... .'...... .... ..':llcccccccccccccccc:c::cc;','.'c:;,,.. .........''..''.''. .,,,,,,',,;:::::::::::::::::::::::::::::::
:::::::cccccccccclllc:::::;,'',,,'.... ...':ccclcclllcccccccclllllllllllllcccccccccccccccclc:'.. .... ..... .,. ..,'... .'loccccccccccccccccc:;:c:'',. 'llc;,.... ...................',,'','',;::::::::::::::::::::::::::::::::
:::::::ccccccccclllllcc:;;,,'..'''','... ...,cccllccllllllcccccccclllllllllcccccccccccccccccoo,. .,,''.. .. .... ..... .. ....',,. .,llccccccccccccccc:;;:;'... .cdlc;. .. .. ..............''',,'.''',;:::::::::::::::::::::::::::::::::
::::::ccccccccclllc::cc:,'',,,,,;,,'..... ..,:cclllllllllllllcccccclllllllllcccccccccccccccloc. .''.... ... . .. ... .. ..... ...................':lolccccccccccccc:;:;'.... .col:;. .... .............''''..','',;;:::::::::::::::::::::::::::::::::
::::::ccccccccloool;,;:::::,'',:::;'... ..;ccclllllllllllllccllllllllllllccccccccccccccool,........................... . ....... ...........................',:clcc:ccccccccc:;;:,'... .,ooc,,. .... ...'...'''....',',;:::::::::::::::::::::::::::::::::::
::::::cccccccloddooc;,,;;:;'...',:cc,... .':ccllllllllllllccllllllllllcclccccccccccccclll:,'....................... .. .... ..................'.....',;:clc:ccccccccc:,,:,... .col:'.. .... ...'....'''.''.',;::::::::::::::::::::::::::::::::::::
:::::::ccccccodxdlcc:,'..'....',,;:cc.. .':ccllllllccclllcclllcllllllllllccccccccccccll:;,'....''................. ... ...................'''''',,;llcccccccc:c:'','.. .col;'.. ... ..........''''..';:::::::::::::::::::::::::::::::::::::
::::::ccccccldxxolcc;'.......',,'''''. .':cccccclccccccccclllclllllllllllccccccccccllc;;,'''''................ .. .........................'';cc:ccccccc::'.''... .cl:'...... ....''.. .....'...',::::::::::::::::::::::::::::::::::::::
::::::ccccccldxdocc:,.. ...','....... .':ccccccccccccccccllllcllllllllllccccccccccll;''.................... .. ......................',;:ccccccc::. ..... ;oc;.. ..... ...''.............,:::::::::::::::::::::::::::::::::::::::
:::::::ccccccoxolc;,'. ...,,........ ...'ccccccccccccccccclllllllllllllllcccccccccc:,'................... . ....................',;::ccccc::' .... 'll;'. ..... ....... .... ...,::::::::::::::::::::::::::::::::::::::::
::::::::ccccldxoc:,.... ..;:;,''.... ...;ccccccccccccccccclccllllllllllllccccccccc:;''...................... ...............................',;:ccccc:c:. .. .co:'. ..... ..... ... .',;::::::::::::::::::::::::::::::::::::::::
:::::::ccccloxxoc;,'.. .:cc:,'... ..':cccccccccccccccccllccllllllllllllcccccccc;,........................... ..............'''''''...''''..',;::cccccc:;. .;l:'. .... ...... .'. ..',:::::::::::::::::::::::::::::::::::::::::
::::::cccccoxxdl:;'.. .cl:,'... ..;ccccccccccccccccccllccllllllllllllcclcccc:,'..........'''''''......... .............'..''''''''''..',;::cc::cc:;'...,:;,. ... .''. .... ..';:::::::::::::::::::::::::::::::::::::::::
::::::cccccoxxlc:,... .;l:,,'.. ..:ccccclcccccccccccclllllllllllllllllllcccc;,''.''''''''''.'........ .........''....''.''....'';::cccc:c:::,''''... ... ..'. .... ..';::::::::::::::::::::::::::::::::::::::::::
::::::cccccoxoclc,.. 'c:'... .,cccclllccccccccccllcllccllllllllllllcccc:,,....'''''...''......... . ..........''..............':::cccccc:'....... .. ..'. ..... ..';:::::::::::::::::::::::::::::::::::::::::::
::::::cccccoolloc;.. . 'c;.... .':cccllllllllcccclcccllcclllllllllllclccc;'.............''......... . . ..........''................,::::cc::'. ...... ....'. ..... ..';::::::::::::::::::::::::::::::::::::::::::::
::::::ccccclooooc,... .. .::'... .':cccllllllllcccclllllllllllllllllllllccc,............'...''....... .......''''''..............,::::cc;. .... ..... ........';::::::::::::::::::::::::::::::::::::::::::::::
::::::ccccccloooc;,.. . .:l;'... .,cccccllllcclcccclllllllllccllllllllllcc:.............''''''...... ......'''.'''''...........':::::::,. .... ....... ........';::::::::::::::::::::::::::::::::::::::::::::::::
::::::cccccccloolc;'. .. ,oc,.... ..;ccccccccllllcccclllllllllllllllllccllcc,...........'''''..'...... ......''''.'''''.......... .;:::::::;.... ...... ........';::::::::::::::::::::::::::::::::::::::::::::::::::
:::::ccccccccclool:,.. .. .cl,:l,......;ccccccccccclcccccllllllllllllllllllllcc'...........'''''.'''..... ...''''..'''''.......... .;:::::::::;;,'......... ....',,,,,;;::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::ccccccccclllc:,.. .clxOl;'...':ccccccccccccccclccllllllllllllllllllccc' ..........'''''........ ...''.....''..............;::::::::::::::;;;,,;;,''',,;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::cccccccccccc:;'.. ..,:cc:;'...';cccclcccccccccllllccllllllllllllllllllcc,. ............'........... ... ..........................';:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::cccccccccc::;,'. .';::;;;;;:ccccccc::cccccccllllcllllllllcllcccllllccc:............................. ..... .. ..........................;cc::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::cccccccccc:;,'.......... .;:ccccc::,'.......';cccccllccllllllllllllclllclcccc,.. ..................... .. .. ......................,cc::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::cccccccccc:;'........... ....'''','.. .;cccccccccccccccccccccccccccccc;. ................. ... ... ..................',:cc:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::ccccccccccc:,..............'.......... .......':ccccccccccccccccccccccccccccc:'. ................. .. .. . ................',;:ccc::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::ccccccccccccc:;,...................... ....',;::cccccccccccccccccccccccclccccc:...................... ... ... ...............',,;clc::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::cccccccccccccc:,.........................,;:ccccccccccccccccccccccccccccccccccc;. ............................. ..... .......'',;:ccc:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::ccccccccccccccc:;,'.................',,;:cccccccccccccccccccccccccccccccccccccc;. ............................. . .......',;:::c:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::cccccccccccccccccccc::;;,''......'',;:cccccccccccccccccccccccccccccccccccccccccc,. . ........................... ... .......'',,;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::cccccccccccccccccccccccccc::;;::::cccccccccccccccccccccccccccccccccccccccccccccc;. ....................... ... ........'',;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc;. ..................... .'.. ... ... .. .......',;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:. .................. .;:;,.. .... ...... ... .....',;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:. ............... ':;:::;'.. .... ........ ...'',;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc' . ... ....... .,::::::::;'..... .......... .... .',;;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc;. .. . ..... .;::::::::::;'... ........... .... .';;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:'. .............. '::::::::::::;.... ........... ..... .';:c:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc;............... .,:::::::::::::'... ........... ....... .';::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:,.............. .;:::::::::::::;.... ......... ..'.... ..,;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:'..........,. .... .;::::::::::::::,... ........ ........ ..,:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc,... ..';;. .......... .:::::::::::::::;'.... ........ ............':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:'. .,:;. ........... .::::::::::::::::,..... . .... ............;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc;.. .::.. ... ........... .:::::::::::::::::'.... .. .. .. ...........,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc;.. .'c,. ........ .... .::::::cccc:::::::;.......... .. ..........,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc;...cc,................. ':::::ccccccc::::::,..... .... .........,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:,;c:,'........ ........ ,c::::ccccccc::::::;..... .... ........,::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::ccccccc::ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:;'..... ....','. .,:::::ccccccccc:::::,.... . ....''';::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
void fopn(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
#define Xiao ios_base::sync_with_stdio(0) ; cin.tie(0) ; cout.tie(0);
#define int long long
#define endl "\n"
const int N = 2e5 + 5 ;
const int mod = 1e9 + 7 ;
int n , m ;
int g[4*N] , a[N] ;
void build ( int v , int l , int r , int x , int y ){
if ( l > y || r < x ) return ;
if ( ( x >= l && y <= r ) || l == r ){
g[v] ++ ;
return ;
}
int mid = ( l + r ) / 2 ;
build( v + v , l , mid , x , y ) ;
build ( v + v + 1 , mid + 1 , r , x , y ) ;
}
void del ( int v , int l , int r , int x , int y ){
if ( l > y || r < x ) return ;
if ( (x >= l && y <= r ) || l == r ){
g[v] -- ;
return ;
}
int mid = ( l + r ) / 2 ;
del( v + v , l , mid , x , y ) ;
del ( v + v + 1 , mid + 1 , r , x , y ) ;
}
int get ( int v , int l , int r , int x ){
if ( x < l || x > r ) return 0 ;
if ( l == r ) return g[v] ;
int sum = g[v] ;
int mid = ( l + r ) / 2 ;
sum += get( v + v , l , mid , x ) ;
sum += get( v + v + 1 , mid + 1 , r , x ) ;
return sum ;
}
void solve(){
cin >> n >> m ;
for ( int i = 1 ; i <= n ; i ++ ) cin >> a[i] ;
for ( int i = 1 ; i < n ; i ++ ) build( 1 , 1 , n , min(a[i],a[i+1]) , max(a[i],a[i+1]) ) ;
while ( m -- ){
int tt ;
cin >> tt ;
if ( tt == 1 ){
int pos , val ;
cin >> pos >> val ;
if ( pos > 1 ) del( 1 , 1 , n , min(a[pos-1],a[pos]) , max(a[pos-1],a[pos]) ) ;
if ( pos < n ) del( 1 , 1 , n , min(a[pos],a[pos+1]) , max(a[pos],a[pos+1]) ) ;
a[pos] = val ;
if ( pos > 1 ) build( 1 , 1 , n , min(a[pos-1],a[pos]) , max(a[pos-1],a[pos]) ) ;
if ( pos < n ) build( 1 , 1 , n , min(a[pos],a[pos+1]) , max(a[pos],a[pos+1]) ) ;
}
else{
int x ;
cin >> x ;
cout << get( 1 , 1 , n , x ) << endl ;
}
}
}
signed main(){
Xiao ;
int t = 1 ;
// cin >> t ;
while ( t -- )
solve() ;
}
Compilation message
game.cpp: In function 'void fopn(std::string)':
game.cpp:178:31: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
178 | void fopn(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
game.cpp:178:72: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
178 | void fopn(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
212 KB |
Output is correct |
2 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |