How to log / debug: SOLR DataimportHandler script transform

function transformer(row){ var log = java.util.logging.Logger.getLogger(“expand_multi_string_entities”); var LEVEL = java.util.logging.Level.INFO; // set info level via http://localhost:8983/solr/#/~logging/level // to log to solr01.log //log.log(LEVEL, “hello world”) } You’re welcome.

Basic Development Infrastructure is a Silver Bullet

Below is a typical complaint from a new developer, as well as the typical response: I’ve inherited 200K lines of spaghetti code — what now? The typical problem is that a developer has inherited a complicated, undocumented application. The typical response is the rigid imposition…

The Three Little Pigs

Documentation of my recent installation at Associated at Open Source Gallery From the release: “Associated” is a site specific show in a severely damaged brownstone on 17th Street in South Slope, Brooklyn. Just after noon on 12 November 2010, a boiler exploded at the Associated…

MongoDB Content Taxonomy Schema

The greatest thing about MongoDB are the replica sets. It is a nice feeling to have failover and distributed queries across 3 database machines. It’s also nice to replace all 3 in one evening with constant application availability. But the next great thing doing CMS…

Daft Punk: Around the World Lyrics

Python Version

print “nn”.join([“n”.join([‘, ‘.join([‘around the world’ for i in range(2)]).capitalize() for i in range(4)]) for i in range(18)])

Original

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world 

Around the world, around the world 
Around the world, around the world 
Around the world, around the world 
Around the world, around the world. 

Cornfield

;      ;  ..        ` , ,   ,.`` ,.;.` ` ;` ,  .  .   ,  , `  ``.`     `                                                                                                    ...``  ``              , .':
'      :  ;`` `  `` . ::;`  :,`` :;;.,  `:` , `,  ;   :` , `  .` ``                                                                                               `         : ,..  .`            ,`;:''.
' `   ;;. ;,` .  .` . ..;,  ;.` `;';,:  ,:. , .,  :`  .  : `  .` `  `                                                                                             .         :`.... .  `          ,,+;+`,
' ``  ;:``;:  .  `. , ,`;' `:`` `;+;:, ,;,;.: ,. . `   ` , `  :: `  `                                                                                             .         `.,,.``, ` ` ` `.:```,:+ ','
+```  +:,;''` .   . . ``;'`,;`,.,;';::.:::'.,`:. ; `  `: '``  :, `  . `   `                                                                               `       ,       .  ,,.``.`.  ` . .,:;;;';'::;'
+: , ,;,,'''.   ` : .``';; :;,:,:''';::,;:' ,,:` ' `  ,:.'``  ;; `  . `                                                                                   ` `     ,       ,` :,..,.`. `, , .:;;'';;;'': 
+,.` ;':'''',  `` : .,.';;.,;:+`,'';':,;';+`:.;;:'``` :;`',.  ;. ` .`     `                                                                               `       ,      `:``;,.., `...,`..:;'''+;;;;+:;
#'`, '''';+':```. ;`:'.';;;::,+:;:'';,';;;+,:;','':,,.:;.''. `;.`` ;. .  ``                                                                    .          `       .    ```;...,.,.. .,:,,,';;;:;';;'++:.
#;:::;+;+'+';,  , ;`:;`,;+;;;;';+';':';';;';':':'':;:,'::;::``;,```;``.  ,            ``                                                       .`        ``       .    :,,;:.``,:`..` :,`:'+'+;;';;+++;;
#+,:;++'+;+':;.`, :`:;,.;+;:';;'+'++':'';'';;;';'';:::';;'+:.,;,.,:,```  `         `  .                                              `      ``::         ``  `    . ```;,;;;,.,.:`,,`.::.;'';'':;;'+'';'
#+:;+'''+'+;:';;:`:,;;':;+';';;'''++';++'+#;;'';'+:;;:';''':.;;', '::,. ;`        ,,``:                                          `   `   `...`,;,   ``   ..``:  ``. ..,;:;::,,:.:,,:,,:;;;''+''';;';;';:
#+''+''+#;';'';'::,;';::'+'''';'''+++';+++#;+;+:;:::;:';'+';,';',`':::..'        ,:;.:,                                   `     ,.`  `  ,.,...:::`  ``   .,`,;` .,``,::;:::;:,::,:,,,:::+;':;'''';;';;;:
##''++'+#'';''':;+,;';:;;''''';+;+++'';+'+''''':;::;::+:;'+::',';:';;',:;````   ,;';,:;.  ,.                            ` .   ``::,```` :,:.`:,,,,``,``  `:`:'` ..``,::::::;:;:;,:.;,;::';;;;;'';;';;:';
#;:'++'+#';;##+';+;;';;';':;'';+''#';;;+;;+;';':+:''::+;;;+:;',;;':::+,': ..``  `;:''',;, ;:,                         ` .::, ,:,:;,.,.``,:..,.,,,,.`:..``.:`;',`,...:,:::::;:;:'::.;:,;:;':;;;';'''''::;
##;'++'##';;#'+;'';:'';;;+;:;';'''#;:;'';#+;++';+;;;;:'':;+;'+;;:'+';+:':::;::``:;;:;':;::;;:.` ``                ```,``:::: .:::;,,::` ,,`,..,,`,,,;::``,:.;,,`,.,::,;::::'::'+;:.;::;,;;;';:';':;''::'
+#++'++++'''#'''+';;''';'++:;':;+++;;'''+#';+'';'+;';:'':'+;;+;':+':''',;,,;,.`.:::;:;;:';;;;,:`.:                .,:,,,;:::::::::.,:.``:,,;.:,,.::::;:`.::,':,`,,,,;:;::::;,::+::,;;,:,,;#;;;;'::;;;:,'
##++''+#';''#';;'':';;':'+'';:;''++;''''+#+'+'+''':':::;;;';'';;';+:';':;,::;..:::;;:::;';;;;;,:, .`.          ` .,,;:,:;:::::,;,;,,,,..,;::,:,:;,:::;:.:;::':'.::::::;:;::;,::+::,;';;::;#'';,::;;;::,'
##+#''+'';'+#';++;;+''+:'''+;''''+++;;+++##++''+;';;';:;;;':++;'++':'':;;:;:',.;,:;;:,;;;;;;'';,:` :` , :.   `..,,,:;:,:;:,,,;::,,,,:;.::;,,.;:,+,::;';,:':;':':::,,:;':'::'',:+:;;;;;;::;'#;;;;;;';::;;
##+++'+';;;##;;+#';;''''':;''';++++++'+++##'++''';''+;:;::;;+';;++'''';';;;:;:,.:::;,,;;';';;;`,.  `.,,;;'. .::,::::,:,,::.,::,:,;::::,:::,::;:,':::;;;::':'':+;::;::;':';,':,;+,:;'::;:;;:#+;;;';+';:';
+#+++++';''##;;++';+;';'':'+'+;'+'++'+++'##++';'+;''+;;';;:'++;'++;+'';;;';:;:':;;,:,::;';';';,  ;;.:.;;';:.`,,:,,::::,,;:,,:,,:,;;;;;,::;::;;,:;'::;'',:;:;::';:;;,:;';;;,';,:',::,;;;,;:';#;;''+#;;,+'
#+#++++';''#+''+++;+''+'';;'+;;'+'++'+++'#'++;;''';'';'':;:'++;'+';'+''+:;:;':;,,;:,.,;;;''''; `,,;;;.;''';,,;:;,,:::;:,;;,,:,:,:;;;:;:::;;::;;:'';,;''::.::;:'';:,,:;::,;:;',:',::,;;;:+:::#';;':#+,,+'
###++++;'+'#++'#+;'+'+++;'+;+':'+;+#''++;##+'',''';;;;+::;:'++;+''''+''+;:::';';:;,;,;::;'''+',.;;''';;'''';;';;::::;::,:;,,::;,;':;:';:'+;;;;;:;;::;,;:::.;::'';:;::::;:;;';,:+::;,;;;,;:,:'+';::#'::'+
##+'++'''+'#++'+#''''++'';+'++;'#;##+'++;+++;+,''+';';+:;',;+;;''++'+''+':,'''+';;:;,;:::;++'';;'''++''';;''';:;::,:;:;,::,;:;'.'::;;;::;';;::,:,:::;',':;,.;:;+;;;::;:,;;''::;::;;;;:;:':';;#+:';#+:,:'
###+++'''++#+'++++':++++''+''+''#;##''++'+#+;',++++;;;:;:;:;'::';;++,'''';:+,''';;';,;:,::'''';:;'++'';;;'+';;:::;::'::,::;:::;,;;:''';:;';;':::':::;::':'::,:;'':;::;;'';''::::::;';;'::;:::;#';;#':,:'
###+'+'+'++#++'+#+':#'++'++'+++'+'+++'++++#+;;'++;;::,;:;;:;++;';;++'':','':;+'''';;:;;:::'++';'''''+'''+'''';:::'::':,,;:;;:::;'';''';;:;';;;::;,::;::;::,;;:;';;::,;,,';'',:;;::,::;;:';:;:;##;'#',;;+
###+'+'+++##++#++++++;'+'++'+++;+'''++#+#++#'++++'';';:;;;:;++;,;++++';';;;:''':'';;;;;;;,'''''+'+'''++''''';;';:;,:;;,;;,;;::;;'':''';;;;';;;;:::::,:::+,:;':,';;':,:;:';'':,;';:;::;':;;:;;''#':#',,'+
####'+++'+#++':++'''+''+++''+'+'++:+++++#''#''+++#+;'+':;';;+'':;++++;'+;:';';',:';;;::;';;''''++'''+'+;++';::';;;;;;:;;;::::+;'';;;'':;;;;:;:;;:::::;:;+;:;+::+''';::;'';'';.;';,;:,;;;;;';';;#+;#',:'+
####'+++'+@#'+'#++;+++'++;'+++#+++:++++##;+#''+++#;'++;:'';'++'';++++;++;:.,''';',',;;'':':;;''+++''''+''+;;:;';,'';':;;;:;,:;;:':':;':;;:;,;:';::;:''::;;:'+;;+'';::,:'';';;.:';:;,;;;;:;';'::;#++',:'#
'###''+'++#+#+'@++'+'''++''+'##+'+:+''###'##';'+'#''++;:';''+++'+++'+'++:',;'++;;;;'+;''';:::;;+++'+'''';;':;;;;:';;;;;:;;::;;':',':;':;;;;,;:;;:;;,'';,:+:'';:+''';;;:'';';;.;;;;:,;+;;:;'+';;;#+';::'#
;###''';#+####+@#+;+'++++''++##++#:#'+###+#+':'++''++';;''''+++'+++++++'':;'+'+'++;'';+';+;::;''+''++;;;;;;:;;';;:,;;;;;;,''':;;';'';';;;;;:;:;;:;:,;'':;+:'';,'':'';':'';'':.;::',,'+;;:;''+'''+#+;::+#
'###'''++++':#+@#+'+'+++#'++#++++#;+;+####''':'++'+'';;;;'''++'',+++''';','++++';+';+;;;'';::;''';'''''+'';,;;;;:;::;';;;;:';;';;;'+:';';;;:',;;,:','+:.;+''';;'';:;;;;'';';:,'::'':':;;:;+:'''';##;,;+#
'###+'+#'##+#;#+#+'';++++'+'#''+'#;;;###++;'';'++++'';;:++''+++';'++++''':'+++':';';;+;'''::;;'';;;'';''''':;:;'+''::''';;;;,:;;;''+;;';;;;;':;;:,':'+.+':+';;''';;';,;'';'':.':;:::,';':;+;';'';##'+#+#
+@##'+##'+###+''##'';++++'+'#'++##;;;+#;;+;#''+;'+#+'';+++;;:++;++++++++;';+++;';''''+''++;;;:;;:;;;;;;;'':';''''':;;+'';;;;;':;:+;'::'';;;;;;;:::;+'+:+;;+;;;;'''+;;:;''''',,',:';:,';;:;';':'''+####+#
####'+##'+####'++#+'''++++++#'#'#+;;;+#''+'#''+'+#++''';'+;;'+++++'++'++'+++++;''+';+'+;+'':;:;:,:;;'::;+';:'';',''''+'+'';',;';:';',:'';'';;';:;::';;+;''+'';';''';;':'''''::'::';,;''':;''';'''+##'#'#
#@##+++#++#+#+'+'#+;+'++'++##++'++;:;+###+##''+++++,';';;'''++;##'+++++''++'+++'++;+''+''';;;;:;;;:;;::;;;';;;;';';''''+'':':'';;;:;:,'';';:;':,;:::+:+;;,'+';:;'+'';'.;''';;,;;;';:';'':';''''+'+#@##'#
@@@#+++#++####++'##'++++'+'++#+'#++;':++#+#+''+;'#++;'';;;':#++#''++++++'+;#+'';++;+''++'+':';:,';:,:;;:;''::;';;''+'+'+;;;':+';:',+;,'+';;:;::,;::,+;+:`:;+;+';'';'''';''''',::';,;','':;:';;'+'#@##+'+
@##++++#+'###+#;'#''+++++++###+'+++;';###'#;+'+#+++#;'+;:';;#'++,++#+++''++++';'++''++'''+;;''::;+;:;;';:'';:':'''+++''#;:;';+::'#,;+.';';;;;;::;:;,'+,.'';++;'''';''++;+'';';::';;'':'':;;+;;+'+#@'#+++
@@'+#+##''##+'+++'+'+#++++##'##'#++';;##+##;''+++#+##;+':';'++'':++#+++'+#+#++''#':;+':'+;;+'+;:''';;;'';';::;;''++'';'#;;:;;'';,;,'':'';:;;;:::;:;::+':';''+,'+''',';';;'':;;;:';;''''+:;,++'+:###:##++
++#+@+@##'#@+''#''+'+'+++'#+##+'#+#';'#+'#''+'####+'+;'';:'''+;';++#+'+'##+'++++#;+'+'+++::+'+;;'''''';';,:;;+'+++'+'';#;;:';,,;;;:';;;;,:;;;,:;;,;,;++';;''+;++''';:;';:'';:,:;';;':''+:;,+#+;+#'#:#@''
@+:+#+###'@@';+:''+':+++++#++++'#+#';;;;+::+''#:++'#'';';;;''+;';++#++'+#+++++++;++;''+'+;+'+';';+''+'''';':''''+'+;++++:++'':;;':;';:;'::;;;,::;:;,:++'+;''++++'''';'';,''':.;;;';';;'',;:+'+;##+#;+##'
###+++##+'@'';+;''':'#+#++#'#++'###;;:''+#++''#:+#;+;'+'''''++;';++#'#''++##+#++';+;:+''+;++'''++''''+'';::';'+++++:++';:'+'':;;::::':'';::;::;;;:;,'.'#';++++;#'''''+.'''''::;':';';:'':;:''+++##+;+##'
@@++#+@+#;+@;';'++,','+#'#+''##+###;;:'+#'#';'#:+';+:'+;';#;#+;';'+++#';++#+#+;++;+;'+++'++'+;+'++';'++'';+',;++'#+;'+'+;;+++::;+':;';'''::;.:;;;;;:;''+';++++'#'''';','''''::':+'';'''':;;'+'#'+#''+#@+
@@@##+@'';'+';''+,''':++'#+'+#@++#@;;''+###';'#:'+;+:'';';#+++';''#++#+''#++++;':;+;+++;:;+;+;:'+++'+++:;;'+:;'+'++;++;+';+++:;;+';,';';'::',:;';;';,+'+#;+++++'''+'';,`;''';:',+++;'''';;;'''#++#''+###
@@@+#+'';;#;;;:+,+'+''+'+##;##@#+##;;++'+#++#;#:++;#:''';;'+'+';'+#++++'#+++#++''':'++;''#+'''''++'++++;'';;'''+++'+#;'++;+''::,'';;';''+;;',:;';;';''+'#;+++++;''+''....:'';,'''+''';'+;;'';+#++##'+###
@@##+++';;#;':;:;#++''#'++';####+#++'+#;##'+';+:++;#;;'';''+'++'+#'+++''+#++#+#+#':+;#'';'+++;+'+++++++;+';:+++,+++++'+'''++::''+';'';'+';;'::;';;';+';+##'#+'+'+''';:.,'+';,:,+',';';'':;'':##;+;,:'###
@#''+''';;;',:+,####'+#''+#;##+#++##;+#'+#+#';+:#';';''';;+';++;+++:,+';+###+#++';;'+':'++':'''+'++'+++'+;'';::''++'++'+;'+++:+;''',;',,:';;'.:';;':+'''+#;#+;+';''',,:'+++;::;+;,';';'';:'''+'+'+:''###
@@''+'#';+;:,.''##+#'##'+'#;;#'#+###;+#'@;#++;#:+#;+;'';;'++'++';'++:+#'+#####+#;;+'+++'++++'''+'#+'+++;'+':::++'+'++''+;'+++;;;''+:;';:,':''::;;;;:++++'#+#,+++;'''',''+++:;:;',;';';'';:+'#'++'#+++'##
@@#;::#';';:.;'+@#+#'+;++;#;+#'++##@;'#+@##+#'#:'#;+''''''##+##'#++++;#'+####++#''';:''++#'++++''+'++;;;'+;+;+++++:'#+'+:++++;+;;'':'':':';+';:;;';:'.';+##,:'''';';''+;;++'':'',:+;'''':,+'#;;;#;@+'#+#
@@#::++';;:::;'+@#+''+'++;;;'+;'#'+#''#++#+##'':'+;+''+'''#+++#+##+#+;#+'###++##'++''+;++':;'+''++'++'+':+:+''#++#;++#'';'+++++';'+:'+:'';;+';:;'';;+:'';'#',;++';';:+'''+++:';':;';'+'+;:+++'+'+#@++'##
@@+:+#+;;;:;:;'++#++'+;+++';;+;+:''+';+'@++@#++:++;';'+''''++#++'++#''#''+###+;''+'#'+'++'++'''#+#+''++''+'++;++++'#++';;'+++;+'';+;';;'';;+;;';';::;:''+:#+:'++'':+++';+'++:';';'';;+'';:++++:#;@@+'#+#
@@''##+;;;';;''+#+++'+;+;#+;;';#:++#';#+##++@+':#';;;'#''';+'#+#+#+'++'#+++#+;+;:++''+'#+#++++';######++';:+;;;'+++#++''++''+'+;;+;;;:''+';+;;';';;::'''':#+',,+'':;++''+''++'+';'';;#'';:++''''+@@'+#'#
';'++#+;;;';;+++#'##'+'++##:;#;';@+'';;##+'+#+':''':+'++''+++##++#+++#+#++#+:'#;+;;#''++###+##+++##+##+'+';;'++++++#'+,;'''';+';''+';;'++';+';;'';;::;+'':'++::''''+++'':''++'+';+';'#'';;+'+;#:#@@'#;+#
';+#+##'''';;+++#'@++++'+##';#;####+':+##+'+@';;#;+:''+''++;++#+'#''+#+;##+;:';'+'++++'#+'++;+++++#++''++';''+++'+##+;'++++'''';'';';;'++''+'':'+;;::++'':;#+':+''+++++','''+++':+';+#'+;;';;''+'@@':;;'
'#+#++#''''';++++'@#+'+'###;:#;+'###':+##';+#+;;#;+:''#''++'++#++'+#'#'+##''++;#+#'#+++++++;+++##++###+';;'',;++'++'#;+'+++#'++;'''#;;;;''';'+:'+;;:;#;'':'#+'+++:''+++':''++++':+';'#'+;;',;#:#'@#':'+#
'+++#+#'+';''++#'+@#++#+###;;+'+';#+;;++#';'@+;'#;+;;'#';++'+'#+'+'#+;++#'#'++;+;+++'''+;;;';+########++'++;+#++#+#+;;+''+++''';+';#':'+'''''+;'';;;';;;';'+#++'+++'++#';''+++'+;+''+#'';;':''++'@':++++
';++@+#'++;+++'#++@++''+###;';'++'+'+;'+#'+;@#;'+;';;+@'''+:+#++++#+:#+++#+';:,:;++++++';+;'+'##+#####+',:'+;+++'++#+;+'+'++++';'''+'':.''';;+''':';;;''';'+++'+''''++#';'',+++''+''##''';';''#++#+:;#+'
:'+#@+#+'++'+++#+'##+#'+##@;;;+++#';+;;++'+'+#''':'';+#+;''+'#+'+'+:###+++'+#++,+'++''+';#'+++##+++##++;''';#;;+++++'+;'+'+#+;':''';;';,+;:''+';;:;;,;'+'''+#+++;+''++#+;'',+++''+'+##''';''';##'++''@#'
:'+#@+#+'++'+++++'##+#++##@;';::,#++;;:++'+#;+'':;;';;+'''++':;+'+;#+##+'++##+'#:''''++++#'''++####+##+++';',''+#;#'''+++'##+++:''#+'';;';:'+'';;:;':;;+'';+##++++''+:++''':+++;++'+##'+'''++++'+';;+##'
:;++@+#'++''++#++'#+'####@#;;'#;''#+;;:+#'#+';'';;:''''+''+''+''';#####+#+'##;:';+:+''#++#++++##++###++#++';'''++;'+#'++;;;'+#+''''';';'+;''''';;:;+';;;++;'+#+;++''':;+''';;+++++++##'+'''+;#'++#;'+##'
:;++@+#;++;+++#+''###'#####;''#+:;;+;;:'#+###;''+;;''+'+'';''+'':+##'#+####+#'+:+++,++;+++#+#+##########++:';;++,';'++#+''+++''+''''+',';'+:''+'';'++;':++;;'++''++'';;+'''';+++++'+##'+'''+'+'''++##@#'
;;++++#+@''+++#'#;#+#'','##;:;+'''+#;;:#;+###'''';;''''''';++++'+++@##+###+###+;#+++++''+####+++++++++++++;++++'++#+'+++++++'';:'+.+'';'''+.'++'';'+;;;:':':+#+'+++++'++''+';+++'++##+''''''#'''''###@#'
;'++'+#'#;'+#+#'+:+++++;;@#;';;'+'+#;;:#'##+'''';;:+''+''';'+'+''+;###+#######'+##+#+'+'#'##++''''';''''++'#'+#'+;'###'#+'++.`::++,';''':':.''++''''''';+;+'++'#+++++;+'''+';+++''+#+;'+''';#:::#;#++@#'
''++'+#++;++#+#'''+#;+++;'+;';';+'+#;:;+''#';#'';;;'''+'''+'++'#;,,+#+#+##+##+'###'####+++#+++'''''''''''+;+#+#+#+#+#'++#;+:,;;'';+,''++;':,'''+'';''++;+'+''''##++++'#;''+';'+++'+##''+';'#@#+;#'###@#'
''++++#+';+#+++;;++#'++';;+;''+'++'+;:;#''#;++''';;;'''''''+'+':;''#####''####;##++###+#+++++'''''''''''++++#+++###++'+++'#;+;';'+':''+++;;';'++';;'++';+''';'+##+++++#''++':'+++'+##+'''''#+;#'++#+#@#'
'''+++#+''##++',+++'+'+@';';+''''#'+:::''+;'#+';';:';''''+++'''#'+#+#+#;;'#+++':'##++##'#++++';''''''';''+;';:++++#+''#+;:,;:;;;+++;;'+++;'+;';+';;.;+''+''+';###+++++++'++';'+'+'++#+'+''';#:+#;###'##'
+';'++##';##++':+++'++'#''';+;+'+@+;::;++'';@';;';'';#+''+++;++#'+####;;;++;#+'';#+;;#+++#+++;;''''''';;+'+;++##'####';'+'';'';;++++;''+';'':';'';:`,++'+'++++####++++++'++':'''+'#++;'+''+,@:;#'#####;'
##+'''+#';+#+++;;'+'#++#+';'';''+#+;:;;#;#''#'';;';;;#+';+''+''#+###+'+'+;;+'+#+##+++;#+##++';''''';'';;'+'+'++#+'#'++++++;`,'':''+;+''+';';,'''';:,:++'++'+';+###++++++'+'''''+++#++''+'';+@;++++##+'#'
'++##+';''+#+;:;++''###;#''''#+'#'+;:;;''#''@'';:'':'#'''++'+;+++##''#+'##'#''+#'#''+'+++++'';'''''''';''''+'+;##++'+#;+++;:;++:''+''''+';;:;+';+;:,.,'+'+'+:'####++++'+'++''''+++#+':'+'';@#+#;++#+#@#'
'#;+++###;'';#:++#:+###+#''''@'';'+':;;##+;'#'';'+';'#++++;'++#'###;+'####'#'+###+#+#+++#++'';''''''''';'+++##''+++''++'++'+'++;+'+''+'+';::'+';';;:,:;+'+''++'###++++'+++'+''+#++#+'''+''+@#;#'++++#@#'
++;'#@+#+'#++'''#+':;+###'':+#''';+':'+++#''''';'#+'''+'+:++'##''',;######+++##+#####+++++''''''';;;'';;''++'#''+';::'#++''+''+;+'+'';#'';;:'+'';';;''''++''#+'+##+'++'+++'+''+++++';+'+''##+#++++++##+'
++''@#+@+;'''+##++;#;;+##'''';++''++:''''#''+'++;#';'+++;+';:#';;,''''#'####+####+++###+++';;'''';'''';;;'''''++'++#+@'+#+;::;+;+'''''++';;:'+'';';;''''++';#'++##+'+++#++''''++++';'#'+''#+;#;+++#++#+'
++;+@#+#+;''+#+##+;##+'#+#;+''+'+'++;''@;;'''''+'+'''+';';'';''+#''+#@+;'#++###########+'''';''''';''';;;'''''++#''###++'.'+'+';++''+;++;';;'++';;';''''++';#++'##+,`,'+'++'''+++++;+#''''#++#'++++++#''
+''+@###+;;+#:+#+#''##;+#+'';'+++:++';;@';''+++''++''+;,+'+;+++''#'++@##+#'++#+#####+#++++';'''''';''';;;'+++'''+''''+++:++#':';';;;+++''':''''';:';+'''++++#;+'##+....:;+++'+++++++#+''''#'#++'#';'+#''
'';#@##'+'###:'@+#+#+++;;;+';++++;'+;;+@+'''+:'+';;++;;+''+:++''+#+'+@@#++##;+#+######+++';;''''''''''''''+++++#+''';,#+++##::;:#+;+'+'++':+''''';';''''+,++#'#++#,..,+++;++'+###+++#+''';#'#;+;+##+;'''
'+;@+##''###;''+###@+++''''+++++';'+';+#'''''+++'';+'+++++'+++''+#+#+;+#####'+##++++#+#++'';;'''''''''''''++'+;'+'+#+'.'#+';,,;:;;+;'+++'+''+''+;+';''+'#+++#+;+''..:+++++;''+###+++++''';+#+'+#####;:''
':;@'@+;####,'''#+#@@+;+''+''+##+;;#''++;''+:;;#'+:'+'+#++'+++++#'+'#:;'+#;'''##+###+##'+'';''';'';';''''''''+'+''#@+#'::#:'''+'+:'';'''+++++;'++';;''+'##+##;'+',,,:++'+'+;'+##+++''+''';+#++#@###+#;''
+;;'+#'+@:+#:#'+###@#++';++'++##+;'+''#@''''+'#+++:+''+#+'+'#+'++#++##:;'+#''+#'###+#+#''''''';'''''''''''++++++#+##+#;#;''++'+;##+;;;'++++'+:'''+;;''++##+@#;;'';::'++'++++;+##'+#'#+''''#+'++##+#@@'''
+''++++@##;+;#;##@#'#++#;''+#+##';;#:;##+'':'+#'+:+;'+##+#+'#++'+#+++;::#+##+'##+#####++';;'''';';';;''''''''++#+'#+#++#+'''';+'#+##+:;++'+:+:++'';;''++##'@#+''+;:;+++'+++'+;#++++++'''+'++'+#####@@+'+
+'''+'#+##';..:#'#'@#+'++#''++#@'';++;#++'++:'+:;#'''+##++#'#++#+#+##+#;#++##'#@+++##+#+';;;;'''''''''+';+'++++##+++#'';;'++#++'++#++++:+++:+;'+'';;'+++##+#'';+';:+#++++++++'#+++#+''''+'+'++###++##+'+
++';;##';+''',..;'@@+#';###'+##@''''+;#'+':''+'+##''++##+;;:::;';'#''';;;+##@+'#@##+##++';;'''';;';;''+;''++''+++#+#+'+,++;+;;''+';'+'++;:''+'''+';'++'+##'##'++;;;#+'+'++++++++++++'''++'''++###++'@+++
+++;+@,+;'''+',:,#@###';#+'+'#@#''''';+++'+'++;#+#''+++::,;+++#+''+##+;+'#++###'@####+++';';;;;;''';';;'';'+++++##+'+#++++;'++'++++'#''#+';+''''+'';'+;+#++#++##';+;+'++#+++++'+'#+#;''+++#'+####++;@+++
++'+@+'+;''+##:::+##@+'+#''+'#@+'+'+';'++;+';'#+;#''+#:++'+'#+'++####+:###+#+;#+##@+##+'';;';;;;;';';';;;';';;+'+#'###'#+++'+#+'++#+++;#++'+'''++'';;+++#+#@++#:':'+#'+++++++++++++#'''+'++++##+##+;#+++
+''@#+'+;+++##':'++#@':#+'++'+##'+;+';;+;#@'+'++'#'++;'#''#+#+#'#';;,,;+++#+#+######+++'';;'';;';;;;'''';;'''''++++'++'@+##;'##;++@++;'++++++'++'';;;+++#+##'''''++#+'++;+++++#'#++##'++'+;'++#++##;+'++
+'#+'+'#;+++##'';:###''#;+#''+'+'''''''+++;''++++#'+'+##;'#++##+'####++'+++;+##@######+'';;;';;;;;;''';'';'''''''#+++';;+##''#+;++#++:++'+++''+'''';;+++#+##'':'';+++'++++++++#+#'+##+'+++''+##++#@';'++
;##'++'#'++##''#;';#''##'#+#'+;+'++';;+'#+''#'+#+#':#++#'+#++@+####@#+#####'#'+##@###++';;;;''''';';'''';;''+''''+##+#';'#;''#';++##:'++''++'++'''';:'''#+##+;#'#'+'+;'++++++++#+'+###+++'::++##++#'''++
##+'+#;#;#+##++#;+#+':#+'++#+'+'''#'''+'#+++;'++++:####+'++++++##@+####+'#+##+#@+###++'';;;;'''';;;';''';';'''''''##'#;##;.'++';##@#:#++'+'++'+'+''';'''#+#'+'#;#'+++:'+'++++++#':#####++;,,:#####@+;'+'
#++''#;#'#+#+'++#;'#'+@+';'##;++''+'''++++'#.++++;++'###'#+++#@+@'+'##+#+'+##+++##+'''';;;''';;';;;';;''';;'+'''+#'+'#'+#:;#'#+'###;++'++'+#+++'++';;'''#+#:':'##'++;:;++++++++#+'####+++,,,,,#+'+#''+';
#+'''#'#'##+#;+##''#'+@+'+++#'+''+'''''#+++;#+#''+##++#++#++#+'+#+####@##+##'++###+++'';;;;';;;;;;;;;+';';;;;''++###+####;+#++#'##;;;:;:,++#'+''''+;;'';++#,'+;##'#+':;++++'++++#++##++#''::::###+;'@+;;
++#''@'#+##+@;+###+#'#'+'#;+#'++;++''''++'++#+#+'+#+###+++':+#+++@#@@###'++###+###+++'';;;;';;'';;;:;;''';;;';'+'+#++####;##++#;+'''''+';::+:++;''+';+;'+++:+++;#+#++;;++++'+'+##'+##++++';;:+###@++@+;'
#+#;'@+####'#;+#+#''+@#:'#'+#';#:++++'#:+'''##@'#'++###';'+++##++###@##@+#####@+##+''';;;;';;;;';;;;;''';';;';'''##++;+##+##'#+;;;+;'+#+''';:;++;++;'+''++';+;#+;'#++;;++'+'+++###'+#+++'''''####@#+@+;+
#+';'#+####;#'''+#+'++;+'+''#+;+++#'+'#'#'+'+#'+++++##;++++#+@++###@#@##@###'#####+''';';;;;'';;;;;;;'''';;;'+''++#++;#####++#+#'';::';;;';'':;;''+;'+''++''+++;+#+++'''+'+'++;'##'+#+++'+''###;##@##''#
#++;'++####++'+@#++'';++'+'##+'+#++'+''#;'+'+#'#+'+#:+++###++#+++###+'+#@###+#####+''';';;;;''';';';;;'+';;;;;;;''#+++##'#+++++#+@+:;'+++'';:,:;''+:'+''++;+;+###++#++''+++'++;+##'+#+++'+''#''#@@@@#++#
#+#;';'+###+''#@#@;+'+#''+'##+';'+'++#;+++';+#+#+;+;##++++#'::;;;'#####'###'@+';++++';;:;;;;;;;;;;;;;;;''';;'';''''+####+#+#+'+;+:;''+++#####+;:::';'+;'++;;'##++++#+'';++''+:'+####++++'+'';+#@@@@@+'+#
#+#'';'+###@''###@;+:#+''+'#+#'+'+'+'#';#+'+####+;'###+++';++#+++#;;;+##++###+;#+#++';;;;;;;;;;;;;:;;;;;;;;'';;++'######+#+++':;:++++##+#+#+#+###++;:;;,'+:;###+#@+##'''++''+;+####+++++'+';+#@@##@@+;++
#+#''''+###@+'@#@+'+'+#''#'##@'#'+'#'++++';++#+#+'###+++;##++#++++#+#,####;#++;#'+'+'';;;;';;;;;;;;;;;;;;''''';+''#+#+#+##++';:+++#,'#+'#++'+;;++#####'::,,,'#+;;@'##'+'++++;'+####+++++++'##@####@@#'';
#+#+'''+###@+'@#@;++;'@''+'++#++'+++#'+#+++;+##+'##+##+'+@##'+#@#@@@'':++##++''''+''';;;;;;;;;;;;;';'';';;;;''''';+##'##@'+';+#'#'@''#+++#++';;'++++####+';::'##:#'#'+''++++''+#####++++#++##@##@@#@#';;
###+';'+###@+'###;++';#''#''+##';++'+'+#+';'++#'''+++#'++@+#+###++#@@'+'++#+'''+'';';;;;';';';;;;;;;;''''''''''+''+##+###;;++'+'#+#'+#+#+#+';;''++''::+@###';:'+#+'+'+''++#+'++#'###'+++#++#++@@@@#@+'';
##++'''+####''';.+++''+;'#'++'#';+++#'+:++#''+'#+##++#++++++;;+#@###@##'##+#'';''';'';;;;;';;':;:;;;;';'';;'''''+'++++@#:+;'++';#''::#+++#+'';;'''++++;,+@##+':'#+++'#''++++'++@++'#++++#+#@''@@@@#@+'';
##';'''+#+@@'';'++#+';;''+'+'+#''++++:#+++++##'#+#+;#+#++;++#+##@#@@@##++##++''';'';;;;;;;'''';;;:;:;';;;;';';;'''+'++'';'+++;;;##++###++##++'';::::,,'##+#@##+;+++++#'+++++'++@+#;##'++++##'+@@@##++;''
##++'+'+#'@;;';'++##+;'''+'++++'#+'+'+++##@##'+#+#:'+;;:'#++#@+#@#@@###@###+++;;''';';;';''';';;;;:''''';;;''';'''''+'+;+#+;+##'##;,'+;'+'+#+':::,.,'#+'::+#@##+'+'++#++++#''++@+#;+#'++'+;@'#@@###++'''
+##+'+'+#'@;;'`'+##@+':''+'+'#+'##''##++#+#####':##+;;###+:'+#++';'#+###++++'#'''+''''';'''''';;;;;;;:;;'';;;;''''+'++'++#;#+##;;;'++';'+';#+,...:';+'++:'##+####+;+##+''++''++@+#''##+#++#;'+##+##++''+
+###'+'##'@;;':'+###+;,+'#+#'#++#:+#++++++##++:#'@''#+#@#++#+;'##+#+'###++''++'';'';;';:''';'';;;;;;;;:;;':;;;'''''''+'''#+#'+:..#@##'###+#'',..:':';'#+''@;#++@###++#+''+#''++##;;'##'#'#+'+;#+###''''@
####'''##'@;;'''+#@#':'+'#++'++',#+;+'++'+##'+##+'###+@#'#+++@+#++####'#'++'+''+'';;;;;;;'';;';;''';';';;;;;;;'''';'++'+#+#+,:..;'@#+++'##+#:..,'';';+##''@+#+'+@###'+#''+#''++##':'+#+#+#+;#'+####+'''#
###@'';##'@'';''',;#'+'''#+'++:;##++++'+'+#:##@+'#+++#@###+'#@#####@@###++'+++;;';';;:;;;''''';;;;;;;;';';;::;;'';''++'+:,,++:,+#+'#+#+'#@+',`,;';+#''##+'@++++++###+##''##;'++#++:'+###'#++#'+###+'''+#
##@@;'.##+#'':'''#'''+'''##;+;+###+++++++;'#'#+#'++#+@@###+##@###+##@##++'++++;;''';;;;;';'';';;;;:::;'''';;;;;;'''+++;;'''++:++'''#+++'+'#:..:':+'++'+#++++;+##++###+#''##''++#:';'#+#''##+#++###@#''+#
+###:,:'++#''''++'#;#++;+##'+#++##;++#++;+#+;'#+'+#++';+'+'#+##++'#####@#+'#'+'+++';;::;'';;;+;;;;;;;';'';;;:;;;''+'';'''++++:#;+##++##++'',`,+;##'+''++#++:+##+#+####+'+##''++#+;++++#+'#+++#+#####+++#
;++',::;#+#+'+'+@+#+#'##+#+;#+++#''#+'+#+##'+#@+++######':;:+#+###@#;'#'##'++''++';';;;;'';;'';';;;:';;+'';::::;''+++++''''++';''+#+'+#++':`,+'++++'''''#'@#'++++++###@'+#+'#++:':#+++##;#'+#'+#@#@@++##
';@#:;''#+#+'''+#';':'+#+':##+++#'+'+'#+++#++'##+##+##++##+';#+######+'++##++;+';''''';;;;';''::::;;;;::';::::;''+++++++''''';'++';+'++#':..;#;#:,,+;'''#+@++++#@#+#####'#++#++'';++++##'+##+'#+@#@@++##
#;@#'''+#+#+';++'+'+#''++'#+###+#'++++#+#+'#+;+##+#''''';++#+'++####++++++#+'''''';;;';;;;;;;;;;;::;;'';';;:::;;'''+'''''''''+;+'++##';;#..:++;,;,,;+;;'#+##++'+++++#+###;+##+'+''#+++###+#++'#+@###++#+
#;###'++#+#++'+###++@+':+++####+++++'+@##+#++###+:'###++#+;+#'++##@###'''+##++'''';;:;''';;;;;;;;:;;''';'';:::;::;;'+;;;;'';'+;;''+#+##++,,+;;+'+':;';;;#'+@#++++#+++++###'+#+;+;+#'+##+#'#'+'#+###+++##
;#'##''+#+#++'+##'';@+:+#;+++#++'#+#+++#+';;'#++'####+#+##+#;'+'#####++'''''+';'';;;''';';;;':;;;;;';'';;;;;::;::;;;;;;;';;+#'+'+++#+#+#',::+''+++++',;':;####+'+##++++##@#'+'+':##''+###+';''##++@'++##
'#++#+'+++#+''++@++;''+##'+++###+#+#++#;:;....;++;##++++@#+#++;'+#+##'+''++';';';::;;;;;;;;::::;;;;:;:':'';;::':;;::';;';'+'';;+'+''##+';,+'#+:#+#++++':,:+###+'+'#++++#####';#';#+''+####'#'##+++'+++##
''#+##++++#+'+++@##'+'#'+++++###+#+#++++++'':.,+';#++'+++;;+'+';+####''++'''''';;;;::::;;';;::::::::;;;;;'';;:;'';;;;;';'++:'+'+++'''#';;;''#+'####++#+#+;::###';##'+#+++###+++''#+''#####+@@##+++;;++##
';####++''#++'++'++''++'';,++###+#++'+#+##'++',;;;';''';;''';+##''###+''''''''';;;:::;:::::;::::::';,;;;;;;:;:;'';;':';';+:';'';#'''''#;;'+#++'+####+#+@'+;+;'#''#+++#+#'+###+''+#++'######'#+#++##;'+#+
+'+@###+''##+'++'#';+#++##;'+###++;#+##++#'+##:.;++++'+'##+#+'+;+'##+''+''';;'';;;;:;;:;;;::;;;;::;::::;;;;::;;:;'+;'';;';'''';'#';;+++';;+##+;+####+#+@+'+:++:''++++###++####+;'@++'##+#+#+@+#++';;'+#+
+'+@@##+'+##+'#'+#+'##++##+:+####+#+####+#'+,;#,,''+++''#++##+++;''++'+++''+''';;:::;;::;;:;;;:::,:::;:';';:;:;::;';;;;;:';'+';'#;,:'#':''++++;+####+#+@+'#+:'##+#+'#####++###+';@#+'#++#+#++';'####'+#'
#'+@@#++'++##++;##++'#+#+##++###'#++##+###''####::'++'++##+##+'+#''#'+'''+'+''''':::';::;::;;;:;::::::;;;;:;';';:::;:;;;;;;;+;+;#;;;;:''#+++#+'+##+#'##@+'##';'''++'#+###++####+:@++'#++####'+@@+@+++++'
+'+@@#+++++####;+#+#+####+@#'+#+#####+###'####@#':++'++#'#'+#+:#@+'''''''''''''';::+'';;;;;;';;';:::::;;;::;:;';;;';::;;;';'+;;+#;;;;''+;'++##+'+###++;#+'##;';''+#+#'###+++#####'+++#+'+#+#+#+@+##@'+';
@+'@@#++'++###++#+##+########'#+#####+#+;##+#####;'+'+###+###+:+@+#;;';''''''';;:::;;;;;;:;':';;;':,::;:;;;:::;;;;''';;;'';'+;+;#;;;'+:''',,+#########;#'+##;':;''+@#'###++'+###+''#+#+++##+#++@+##@++';
@+'@@#++'++##+;+#'##+########++###+###+;###+#@@##+'''+##+;'+#':#@+'#';'''''';;';:::;;+;:;;;;;::::::,::;:;;::,:';':;;;;:'''''+;''+;;;'''';++::+##+'++##++'+##'+#:''#@#'+##++'+#+#++'####+'#@##++@##@@;+';
+#'@@#++'+++#'####'#+######+##+##++#++;###+:####+';'+@#'++#++;++@'++#;';';'''++;:;;;:;;;;;;'':::::::::':;;;:::;';::;';;';'''+;''+;'';;+';;+;;;#+++'+##++++##;;#+:+#@@'+##++#+#+#########+@#+#######@'+''
@''@@#++'';++''++##;+####+##@####+###;#@##'+###+''#'++'+@+##++###+''++';';+'';;;;;;:;;';;;;'';::::::;:;'';;:;:;':::;';:;;;;;+;;++''';;''':+;';;##+'+##;+++##';+#;:;@#+'#+++#'++##+'######@++##+####+'+''
+#''';;;;''';;++''##+##+#+##@##'#+##'##'+#'#@##+#+'+#+'++'+#':++++'''++''''';;;;;;';'''';;;';::,::::;;:'''':,:;::;';'';;;'';+''++''';'+;'++'++;;##'+##++++####'#+;:@++'#+++#'+####'####@###;+#+#####'+''
'#;+########+++',:;'###+++##@######+###''#'####+#+#+'###'++#;;++'+'''''''''''::::;;::;'';';;;;;:;;;';'''';';::::::';'+;'+'';+''+';;;;'+';#+#+++;'#'+##'++++'+###++';+''+++++;+#+##+##+##''''###+##'#;+''
:+####+#####+'###;,:###+++######+@#####+;+'+###++++#'+#'#'#+++++''';';';'';;;:::::';;';';';'':;;;;;;::;;;:;::;;;:,;;'':''++'';;'';';;'+'+:++++++;+'++#'++++'''''++'''''++###;++++####+##@+''+##+#++#;+''
;:++####++###'@###+,'##+++########+####+'''+#+++';+;'+#+++;+'+''+''';;;;;;;;;::::::'';''++';'::;;'':::'';:::,:::::;''':'''';+''''+';;+++';+++';''''++#'#+++;''@'++++''++####;++++##+#+#+@'';'+##'+##'+';
@#:+#####+##########:'++++##@+#########++''+++'+#++##++'++++'+'++';'';;;;;;';:;:::::::;:;;;;';:;''::::''';;:,,,:;';;+;:;;;;;';+'+'',+'+;#+++#'''+;+++#;+'++++@+'++++'+++###+;++#++#+#+++@;#'++##+@'+'+';
###;++##############++++###+@++###++##++++'++#+'#++++'###:+;''''';;;;:;;::;;;;;;;::::;::::::::::;'::::;:;;;:,,::':'';;;;;;;:+;+'';+'++#'##+++'+'+++++#;+''#'+++'++++'+++###+:+++++####++#++';#####'+'+''
####+#+#########@++##''##+#######+#+##+#++''#++'++++#+#@##';'';;;;''':;::;;;:;::;;::';;;:;;;:::::;::::';;;;:::;;:;;;;;;;;'':+;+';'+;';'+'##++'+''+''+#++#;#+@+@'++#+++++###;;'++++####+;;#+''+###+'#'+''
+#####++#######+#+@###'##+#@#+######';;::;';;++'++++#####+;+;'';';';;;;::;;;::::::;;;;;:;;:::::::::::;;;;;:;;;::::'+'';':::;+:+;:::'+#++;;@#+'+'#+'''+'+#'##+'#;+##++++++##:''++#++###+';'+#'++##++#'+'+
+####+#++######+#+#####+#'+@#+####'+;;;;;;;'';+':'''+#++#'++';;;;';;;;'';;;;::;:::;;;;;:::,:;:::;;:::::;;'::;:;,,:;;'''';::;+;';+#''+'++#++#++''+++'+'++#'#+###'+#@++#+++##:''+##++#+#++'++''#####+#'+'+
+#######++#######++##@#+;'###++#;:;:'###+#''''+'++#+#++#@+;+';';;;';;;;;;;;;::;:::;';':::';::::::;:';;;;';;:;::,,:::::;';';:+:''+++#+#+'#++#+++''+''''++#'##;@+;+@@@+#++++#:''+#+++#'#+++'''@+#+##+#'+++
++####+###+@#####+++#@##++####+'+;###+++##+''#++;++'#+#+#';:';;''':;;:;;;;:::;::::;''';;;;:::::::::'';;;'';;:::,::::;'''''';;+;+;'+++##++'+###+'++;'+'++#++''#;'+@##++++++#;+'##+#+#+#+''+'@#+#+##+#+++#
+'####+@##+@+##+#########'###+''###++++###+:+++++:+'#####;';;;';;;;:;:;;;;;:::::;;;';;;'';:;:::::::::'+'''';:::::::'+'''';';+';;'+'#'##'#++##++'++;';'++#+++#+#'#@###+#++##'++####+##@++''@+++++####+#+#
;+####'@#@#''#;###+';'''+#'#;;#@#+@+#++#+#+#''++''#'+####+';;;;;'';;;::':;:::;:;:;;'';;''+';;::';;;''+'+'+'';:::::;;'';';+:+;';:+++++##'+#+'##++#+;++'+++++#@##'@@+#@+#+++#+++#@#@++'##+'@'+#+++######++
'#@###+@#@#+;:;'+##@####''#;+####+#++++#'#+'''++'++'++#+++';;;;;;;;;::;;::::::::;';;''';'';'::;''''''''''+'';::::::';;;;';';;+';';;++#+'+'#'+#++#';+#'#'++++@++'@@'+#+++++#+++#@###+'##+@#'##@++###+##+#
'+@###+##++++##@@@@@@@@@@@+;;''+++#####+'#+####':;';;+++'+++;;;;;;::::;;:::::::;;'''';;'+;';;:::;'';;;;;::':'::::;;':';';;;:;+;;'';;'#+'+++#++#++';+#'++'+++##+'@@##+#+#++#+###@####'+++@+''+#++##++####
'+#@###+++####@@####+#@#@@@@+;++++###'#++++'++;;##;:++++''+';;;;';:::;::;;;:;:;;;;';';'';'''';:;;:;'++'';:;:::::;;'';;'';;:;'#:'++';'+'+++'#+'++#';+#''+'++##++'#####++#'+#+##@@#+##'+++#++'+#@##+++####
++#+##++#####+######+@@#+@#####''+###+'++++';:+'++++'+#''''+'';;;;::;;::;;:';;:;'';';;';'''';;:':::;''';;;::::::';;;+;;''::;;#;'+'++#++'++++#+#++';+#+;#';+#+++'##++##+##'#+#+@+#+##+;+#+##+'####+++####
#####'+@#@@@#++########'@######@#+;'#+++'#+''++'#'++#''+''''#';;;;::::::;';';;:;'+';;;;;''''':;::::::::;;;;;;::;'';'';'''';+;#;+';+'+#';''+'+##+#+;++';';++@;##'###+#++##;+++###@####'+#'+++'#'#+++++###
##''#+@###@@#+##@##@#+#@######+#@##+;#++'++++++'+'+++#:#'+#''';:;;:::;:::;''';:;;;;;;,::;'++';::::::,::';;;::'::;;;'';';;::;;+;#';++;'+++:#'+'#'++;+:#+'';'#'#+''+'+#++++;+#+@##@###+++++#+''#'++++++@##
##@##@####@@#+@@@##@#@#+#####@#+#+#@#+'+'+++#+'+''+++'+'++#+';;::::::;;;;;;;:::';;;;:':;;;;';;::::,::,;;';;;:;';;;:';'';;:::;+;#'';;##+;'+;'+'+'##''#'#';:;;''+'#++++#+';;++'@##@#+#++'##++#'+'++++++@##
@@'#@###@#@@#+@#@##@##########'+#++####;;;'+#'++'''#+''''+++'''';':::;;:;;;;;;:;''''':'';;;::;:;;::::::''';;;;;;'';''+';;;:::+'+#''#+++++'''+';'##;+#'++'+,::'''#+;;:'#+';++###@@'+#++'###@@+''++#+++@##
#;@@#+##@#@@##@#@####@#####+@#++#++#@@'+''+''''''+'##+++;+++++'';;;::;;;:;';';;;';:;'';';;:::';';::;:;';'+;:'';:;;';;'';;;;::'##+;'+++'+#'+#';::;;:'';'+'#',:;;+#+'';'@++;+'@##@#++#+++#@##++'''##+++@#@
+@@#@###@####+@####@@##@####@##+#++#@'@@'#++@##''+'+++'+''';+''';;;:;;:'::;'';;;''':;';;::;';';;:::;:;;'++;;;;;;;;;;:;::;:::;#'#''+'+'+++++''+;++++;,'#;'+#',;;+++'''#@#+'++@##@#+##+#+#@##++'''#++''@@#
@@++@####@+#++#+#####+##++####++###+#+#++#+##'+#+'++#+'''';++''';'';:;:;:::;'''';:;;';;;:::';;;;:;;;:;;;';;;::::::';;;::::;'++'#';++'''##+++#+'#+++++',':+##,:;+++''+#@#+''######+####++#####'+'#';;'@@+
@#++#####@+####+##@@#####++##+++++'#+++#++++@#+##+;#+++'';';'';'++';;;;;::::;';;;;';'';;;::::;:::;'';;;';'''::::;;;;::::;;;';''#'''''''+++++++'+#+++#'#;,,+##::;++''+#@@+++####+#@#####+##@+#';'#';;'@@#
#@++@###@@##+#@####@###@#+##+###'###'+#++';;;'+'++''++++';;;;;;'+';';;;:;';';''''+';';'';;;;;+'';''+'''+';'';::;:;;;;;::::';;;'++'';;''''+'+#++'++'+#'@++';#@:::'+'++##@''+@#####@#+###++####';'#';;+@@#
@@##@###@@@@######@@@##@####+++'#+##'+'''##+++:+''#;;++;;;;;;;;;;;'';;;''';'''''''''';;;;;'';;''''''+'+#+;'+;::;;;;;;;;:::;;'';'+'+;#+#'#''+#'+@++'#'#@@#'';++:;'++++###+'#@###++##+###++@###';;#+;;#@##
@##@####@#@@###@#@#@####+###+++@###++##+#++;'#++:;++;;+';;;''';;''';;;'';;;'';'++'''';;;;;';';'';'++'''+':;;::;''';;';;;::;:''+'+++;'+''+'''+'++##'#+#@++++;'+:;'+++####+########+#+###'+@+##+;;#+;;#@##
@@#@####@#@##@@@@@#####@+###+#@'+#+'@#'+#++'+#@+++''';'';;;;;''''''';;;::::'''+;;''';'';'';'+''''+';;;'''';:;:'''';;;;;;;;':;'+'#+;;''+'''#+#+#+#+'##'@+++++::;;:++++###+########'@'#@@+#@####''++''#@##
@#######@#@#@@#@@###@###+###+#+;##+#+#+@#+++'+#'+++;;+;;;;:'''+'''';;:;;:';';;'':;;++';'+;:;;++';;;';;;;+;;;;'';;;:';::;::;;'+''+'';;;;'+'#+#'+'#+'#''##'+++'+;;++++####++#####+#'@'+#@##@+#@#'+++;##@+#
#####+##@#@####@@@##@###+@@##@##@##+##+@#+'#'#@''';''';;;;;;';'';;;;::;:::'''''';;;;;';'';:;';;;;;;;:;;;';;;:::;';;+;;::::::;+'+++;'''''''+;#++#++'#++##'+++,:+#+'''+###++######++#'+#@###+##@+#++'@@@'#
#####+###@@@######@#@@##+@+####+@#++##@#+##'+@#';'''';;+';;;;'+;;';;;:;:::'''''';;;;;;;;;;;;;;:;;::;;;;;;:::::::;'';';;:;:;:;;;';;;;':'''++''+#++++++'##';'';##';;;;;'#+####@@@@@##++#@###+@+###+++@@@'#
##++#+#+#@@@'#@@###+##@##+#####+@++++#+'###+@##+#';;++'''';;'''';''';;;:::'''';'';';;;;';;;;;;;;;::;;;;;;';;::::';'';:;;;:::;;;;:;';'''#+'++:#+''::::;'';':'''''+++++#+++###@##;@@@++@@+##@+#+##+++@@@+#
#####+#@#@#+:++######+@##+@#+++++#++##'++##'+###+';;;'+'';;;;;;;'';';;::::;'';';';''';;';'';:;;;;:::;''';'';::;;;;::;;;:;:;;;'+'';''''#+'+'#'++,::;;;';::,'++##+++#####++##@@##@@#@++#@@++'+++##+#+#@@+#
#+@##+#@#@###;+++####+'######;'#+#++#+:+@+#''+#++';;;''+;''';'''';';;;;:;;:;';;::;;;;';'':::::;;;:;;''';'+'''''''';';'::;''+;'+'';'''''';+'#+':.:;+#++'::'#+#+;+';######+#@@##@@##@+#@'@+#''++##'#+#@@##
#+@##+#@@@@@#@;:'+####+###@+#'#++#++#+'##+#''++'++';;;+'''+++';;';';+;;';;:;+;;;:';;;';;;::::;;;::;;;;';'+''+''';+';;'';;:;;;''++'''';'';''++:.'++##+':;++#'#';;;';###'####@#@@@###+#@''+@'+#+##'#+#@@##
###+#+@@##@##@#';+##++#+##@##+##+#++#+#+#+#'++''''''';+++';;';;;'';;;'';;';;;;;;;;;''';;;;::::;;;;;;;;;''#++++'''';;;;;';;;;;;;;;+;;+'''+;;+:,''+'++,''+##+##;;;';+###;+###@#@@###++#@@++@'@@###+###@@+#
###+#+@#@@#+@@#@''##+##+###+###@+#+##'#''@#''#+;;;;''##';;;;;+'';;;;;:;;;;'''''';;++';:;;;:::::;;;;';;;''++'''';;'::;;';::::;+';;;;;++'''+'+;:+++':;+'+###+##++;+'++#@+#@##;+#####@+@###+#+#+###+###@#+#
##++#+@@@@#+@@@@+;'+##@+#@#+@###+#+##'+'+##++#+';'#'#+':;'#';++';;;:;;:;:'';;'+''+''';::;;:;;;:;::;';''''+'';;;;;;:::;';;;;;;+'+;;;'++'++++;'++@';+#;++###'##+++'';+++;#':'++##+#+#+@#@++##+'###+###@+##
##+##+@@@@#+@@@@@::###+++@@#@@##+#+##+++#+#''@''#++#;;'+'''+'+';;;;:;:::;;:';';#'+'';;;;';:;+:;:::;;';:+';;'::;'';:::;;';::;;;;'''''+'#;';'';++'+##;#@+++++#+##+;+';#::;+##+++#+###+##@#++#@@@##+###@###
#@++++##@@#+##@@@+'####+@#@@@@##+#+#+#+##+#''#'''#++';;;'++''';';;;;;:::;;';;';+';';;;;;';;;';;;;;;''';';;;::;';';:::;;';;::::;'';;++#;;'+++'++;##;++#'++#+#@+##'';:'+###++'''+####+##@#'+#@@@##+###@#+#
@##+@+#@@@##@##@@#:+####@@@#########+#'''';';+'##;';;;;;;++;;;'';::::::::';';''';;';';;;;;':;;;';;;:;+;;;;;::'''+;:::;:;;::::;++;';;+;;;';;+:';'+;#;;;+'+@+##'+::;;;;;;;;::::;;'###+##@#'+#@##@#+###@@#@
#@##@+#@@@+@@##@@#+'+#@#@@##+###+###';;''#+'++##;';;;''';''';+'';;;;;::;:':;';+;;';;''';;'':;;''''';:;;;;;'';''++;:;:;;;::::;:;+';;+#+'';;;++''+:#+##'####'',:;:'##############+'##+##@+++#@@#@#++##@@#+
##@###+@@##@@@@@#+#:#@@@@###+#+;;'+###'++#+++##;;;;;'++;;'+'++#+;;+';;::''''';:'''';''''''+:'''''';;::::;';;;'';:';::;;:::::::;;;;'+++';:++'::#:#####++#+:,;+;+#++#+@@#####@#####'+##@#+#+#@##@##+#@@@#+
#@#@###@@@+@@@@@#'#'@+@@@+#+@+'##@@@##'+''''##''''+;++;;';''''+';;;;';;:;'+'+;;'';;;;+'+''+:''''';;';;';;''';'';:;'::;;:::;:::''+;#;';';;;'''+:##'#+#+',;###;######'@+++##+@#+@##@'##@#+@+#@#####+#@@@#+
+@@@##@@@@#@##@@+@###+###++#@@+;:#@#+#+'''+###';;;';;';:;;''';+;;;;;;;:;;;++;;'';;;''+''++'';'''''''''''''+;'+'';;':;::;::::::;+';;'''+,+'++::+###'#':'###+;###@+###@'+'+@+@#'@@###+#@@##+#@@####+#@@#+@
+@@@##@@#@#@##@@#@@#;@'++###++'';+##+#''+'##+++;;'';;;;:;:;';;';;;;;';:;:'++++'':;;''''''++'';++'''+';+'+'+';++;::';::::;:::::;;;''+';;+;#+:,++'++#';#+'';'@#++@+#+#@+##'#+@+####@+##@#####@#####+#@##+@
#@####@##@+@#@@@#@@+++@''#+'###@+###+#'+'++'''+';';;;;;;';'''';;:;;;';';;;'''''';;''+'+';''''+'''+'+''+++'+'#'+';:'';'+;;;:;;;::;'::;''+++','';+'':++;;;:+#@##+'+#+@@++@'#+@'@##@######@##@@#@@##'###++#
######@#@@+###@@###+#'+'#++@@'#@####'#'''+''''++';+;;;;;';;;;;;::;;:;';';;;;''';'';''+#'+''+;''+';+''+++''#++'';;:;;'';'':::;;':';:;';':'','';''';#;:;,'+#+@+##+#####++++++@'#+#@##+###'###@##@##'##+++#
'#####@#@@+##@@@#####;+#++@#++@@####'##'+#';''''+#+;;'''';;::;;;;;'':;;';'';;;;'+''''';'++'''+;''';':++'++++'++';::::;;;';:::;;;;;:;'';;':;+;;';''::,,+#++#@++###+@#@+++'++@####@##+###++#@@+#@#+'####+#
+#'+#@@@##+##@@@@@@#+'#'+#@+'+#@####+##++'''';;;;;;;;;'++';;;;::'';;'';;':';';;;';;':;;'+'+''';;;''+;''''''+'+;;::::;;'+':;;;;';;;;;;;:+':#;;';+:,,,,#@@###@+@###+##@+#++++#@##+#@#+####+##@++##+'######
#@#+#@@@######@@@#@##+'##@++#######+@@##++'';'';';';;;'++';;;;:;';';';''+'''''''';';:::''#';;';';''+;'++''#+'+;;:;;;;''''';;;+;;'';:;,+':+;;;'':,,,:++#@@##@#@######@+#+++'#@####@#+#@+####@#'+#+'+#@@##
@@##@@@@@@@##+##@###@'+#@@##+@#@#@#+####+#+''';';;;';;;;'';;;::;;;';'''++''';;';;';:::::;:;;';'';''';'+';''+';';::;;;:'';''+'''+';;;;+;;;';;;;+,,,;++'#@'#+@#@##+###@+#++#'###+##@#++@+####++++#+++#@@@;
#@++#@#@@#@###+###@###'+@@@++##@#@##+'##';''''';;;;;+;;;';;;;::;;;:';;;;''+'';;;;;;;:;;:;:;;;;:;'+';'';;';'+;''';::;:;;;;;+'++++''';';;+#;''';;::;+++'##+##@@##+####@+#++#'###+##@@####+####+++#+#+#@@@:
###+@@#@#@#'##+#++@##+++#@@@########+'#';'''+';'''';''';+:;;;:::;;;;;;'''''''';;;::;:'';;;;:;:;'''++'''';';+;+;;;:;':;;;;;;';+';'+;;#;,+;;+';+::;++++'###@#@@+#+#@##@+#+++;+#++##@@@@##+####+++#+#+@@#@:
+@#+#@++'+#@###;#+';'';+#@@@######@#+##+'';++;';;'+;';;'';;:;:;;;;;;:;'';';''';:;:;';';'';;;::;''''+;+''''''';';;;;';:;;'''''''''''#';#+';+';+::'++#+'###@#@@+#'###@@##@+#;+#+++##@@@+#++####''#+#+@##+;
+#'+'''@@@@#++##''##';####@#@#+####++#+;';''++;;;;;'''';+;::::;:;+'::;''+'';;+':';;;'';;;;;;;:';+'#+''';'+'';'+;;';'';;;'''';;''+''';;#''';;';:'+++#+##++###@###########+#'+#+++##@@@+#++#########+@##;;
''#####+''++'''+##+@@@#''++#@######++#+'';'++;;';;;;'';''';;;::;;;:;;'++''';''''';;;''';;;,;:;;;++##''+'+++';';;'+'''';'';:;;'+'+'+';+'+;'';#,';+++#++@#+###@@'###@####+'+'+#++#@##+'+##+####@###+#@#+;'
#@@####@@@##';;'''+'@####+;:#@########''''';'#';;;;'';;'+'';;:;:;;;;;'+';';;;';';';+;+;;;:::::;;+;''''''''+''';;''';::;;'';;;''''+'++++'''';';:;''#@#+@'###+#@+++#@####@##'+#++##';;''##+#@####@###@##;+
@@#@+@@@@#@@#@#+;:;'+##+@##'+##+'@#+#'';'';''+';;;;;;;;'''';:;;;:::;:''''';';;;;'+'''+';;::::;;;;;;:::;''++'++'++;;;';;:''';;;'';'';#++'++'+;'''''#@##@+###@#@@#+#######+#'++#+@++#'''+#######+@#+#@#+'+
##+'+#@@#######@#+;:#+##@#+@+#@##@#+#';'+;;;;';';;;;;;;;'+';';;;::::':;;;+';;;;;++';+';+';;;;;;:;;;;:';;;;+'+''''';;;;;;+''+''''+';+++'''+'+++'#++####@##+####@@+########++++#+####+++++#+#####@#####@'#
#@@#@@++#####@@@@##''#####@###@#@@###;;'';;;;;;;';;;;;;''';''';::'';;''';''+'''+++';;'++';;:;''':;;::::;;'''''''';;';;;''+':''+;'+;+++''''''++++;'####@+#+@+@+@@+#+####@#++++#+#####++++#+##@##@####+#'#
@@+@##+#+######@+###'++##@+###@##@##++'''';';;;+''';';+;''':';+;;';+'++'+'';'+''+++''+';;:::;;;'::;:::'+'';''++'++;'';;+#+''+'';'++'+'''''#'';+'''####@###@'##+@##+@###+##+++#+#####+++###+####@####+++@
#+@+##'+##@#@+@@+##@+'+#@@#+###@'##@+''''';;'';''';;;;;';''::;;;;''+;''+'''''''#++'+#'';;:;;;';';::::;''#''+++''';+'++;+'''''+'';'';''''+;+;;;+'++#@###+###+#@#@@###@+#@#++++#+#@####++#####@##@#####++@
+'++##+#+###@@@@@####'++##+###+@@@#@'#'''';'++#+'+++';'''+';';;;;''+'''';;;''+'+'+++'++'';::;''''+';;''+#;;++#''';';++''';'+';'+;;;;;;;''+';;'''+'#+#+#++@#'+@+#@####+#@@#++###+@##+#++#####@@####@##++@
'##+;++###+#@@@##+@@@#+#+#####+@@@##'+''''##';''''';;+;;''+;;;;;+';''++++;'';#'+'+#+'+';';;;''++'+''+'+'+'''++''';'##+;'''+';;;'';;;;;;';+';;''+;''+###++@##+@+#@@@#@###@@++#+##@##+##++#+#@#@#+##@##'##
#+;'##++@###@@@####@########+###@#@#+++##+'''''';'';;;';''''+;;+';:'''''+;''+'+'''+'++''''''''+''+#++#+++++'++++;;''+';;';''';;;';+;:;;'+'+;;'++++###+#'+@#++@#+#+@@@#+@@@++#+#@@#####++###@@@####@#@'##
##+';+##+###@@###++@@@#+##+#+#@#@#@++'+##;;''';+;'+;''''''''''';;'';';'''''';;'';''';'+'''+'++'#++###++++++;+#'''''';'''';;';;;'+;''';;;''';''+#'+@#++#+#@#++@++@##@@#'##@++##+@#####@++###@#@@##@@#@'#+
+@##+;'+#;##@@###++#@@+##+####@#@#@++'##;''''''';;''''''''''+++;:;;;;;''''''''+';';++++++''''++++'#+';+++#+;++';;;;;';;;';;:;';;';;'';;+;+;'+'+';'#'#+@@#@#'+#+++@###@@#@#++##@@#####@#+#++##@@######'##
#####@+;'#'#@@#+++###+###+#+#@@#@#@'#+#+''';'''';''++;'++''+''+;;:;;;;''''''''++;++'+''''+'+++;''''++''+#++;+++;;';''';';;';;;''';+'';;'''''+++'''#''+@'@@#''##+#@@##@+##+#+##@##@#@#@##+####@@@#####'@#
#@####+@''#'@@##+'+######+++#@#@#@#''@#''''''+''''#++++++++''#'';;;;;;;;';'''''#'#''++;''++'+'';;+''+;'++'#:+#'''';;;''';;;;;;+'''+'';'++++;+''''+@++'@;@@#''+#+#@@++@#####+#+@+#####@##+####@@@#####+@#
#####@++#@'#'@##+'#######+'+###++@++@##++';;;''''''++#++'++''#+';;';:;;;';''''++++++#+'''++'';:+''#;;';;''+''+'''';;'''';;;:';;';';';:'++++'+#;+'#+++'@#@#@+'+'##@@#+@@+######@+########+##@##@@####++@#
##++##@###@#;'###++######+#+++#++@+##'#+''';;''''''+++++'+'+'+';';'';'';';''+'++++;+'+';''';;;';;''''''''+';'++'';'+;'';;;;'+''''''';;'+++++''++''+'+'#+##@#'#+++@@##@#####+#@###@####@#+#@###@@##@@++@#
##@+####@###@''#++@###+##++#+#+###+@'+#@'+;'''';+'+'''+##+''';';'''';;;':''+++++'::;;+;;'';;:;';'''+;';;++++'+'+':'+;;;;:;+';'+'';'':''+''+'''#+''''+'+###@#+##'##@######+++#@+++@####@#######@@@@@@'#@#
####+#+@@####@#;+@##@###+##+##++++##+'+@@+;''';;'''''+++++';;;;';;';;;'';'';'+'++;'';';;'';;;;;;'+'#'''++++++''++';;;;;;;''';'''';;;';;+''#'''++';''''+##+###'+@@@@####+##++#@@'+####'@#######@@@@@#'@@#
#+#@###+'#'#+#@#'###@###+#@#++'++##+'''+#+#;;;'++'++'+'+;;;;;;';';;:;;''';;:;;;''';;;;;;;;;;;;;';'+''#'#'+'+''''++:;;;;;:'';;;;';';'';'+''+'''++''+#'''#+##';##++#@@#+++#+#+#@#++#@##'@########@@@@#+@@#
+#@#######;####@#'##@###+@##+#'++##'+++++++';''+##'+'+'+';;;;;;:;;;:;';'';';:::';;;;;::;;'';;';';;''+'+++'+'''''''';;;;;;+;;;'''''''+''+'''+++'#+#++'''++#;+'##@###@#+++++#+@@#@@+++#+@####+###@@@@#@@##
##@####@##;'#@####'#'#+####@#'#++#++'+++#+''''+++++#+'';;;;;;;;;;;;;;:;''';;:::';';';';;''';;';';;'#+##+'''+++'+'++';';:;;;;'+;;;;++''+''+'++++'+++'''++#:+;####+#@@@@#+++++#+###@@+@'@########@@@@+@@#+