This is a simple UDF which substitutes every tuple with Hive logo.
- Hive 0.10.0
To build the JAR file of hivelogo, you need to install Maven (http://maven.apache.org), then type the following command:
$ mvn package
Then target/hivelogo-0.0.1-SNAPSHOT.jar is generated. To locally install the project, type
$ mvn install
To generate project files (.project, .classpath) for Eclipse, do
$ mvn eclipse:eclipse
then import the folder from your Eclipse. Next, open the preference page in Eclipse and add the CLASSPATH variable:
M2_REPO = $HOME/.m2/repository
where $HOME is your home directory.
You need to load UDF by using ADD JAR command and make function alias by using CREATE TEMPORARY FUNCTION command.
$ bin/hive
hive (default)> ADD JAR /home/ozawa/hivelogo-0.0.1-SNAPSHOT.jar;
Added /home/ozawa/hivelogo.jar to class path
Added resource: /home/ozawa/hivelogo.jar
hive (default)> CREATE TEMPORARY FUNCTION hivelogo AS 'org.apache.hadoop.hive.contrib.udf.GenericUDFHiveLogo';
OK
Time taken: 0.167 seconds
Now, it's ready start. Let's see the examples. You have a employees table as follows:
hive (default)> describe employees;
OK
col_name data_type comment
name string
salary float
subordinates array<string>
deductions map<string,float>
address struct<street:string,city:string,state:string,zip:int>
Time taken: 0.223 seconds
Let's execute normal select query.
hive (default)> select name, salary from employees;
MapReduce Jobs Launched:
Job 0: Map: 1 Cumulative CPU: 1.29 sec HDFS Read: 1003 HDFS Write: 109 SUCCESSTotal MapReduce CPU Time Spent: 1 seconds 290 msec
OK
name salary
John Doe 100000.0
Mary Smith 80000.0
Todd Jones 70000.0
Bill King 60000.0
Boss Man 200000.0
Fred Finance 150000.0
Stacy Accountant 60000.0
Time taken: 14.089 seconds
OK, it's time to use hivelogo command.
hive (default)> select hivelogo(name,salary) from employees;
Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there's no reduce operator
Starting Job = job_1360856776655_0031, Tracking URL = http://ozahd.localdomain:8088/proxy/application_1360856776655_0031/
Kill Command = /home/ozawa/hadoop/bin/hadoop job -kill job_1360856776655_0031
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 0
2013-02-15 20:32:59,115 Stage-1 map = 0%, reduce = 0%
2013-02-15 20:33:05,800 Stage-1 map = 100%, reduce = 0%, Cumulative CPU 1.47 sec
MapReduce Total cumulative CPU time: 1 seconds 470 msec
Ended Job = job_1360856776655_0031
MapReduce Jobs Launched:
Job 0: Map: 1 Cumulative CPU: 1.47 sec HDFS Read: 1003 HDFS Write: 2587 SUCCESS
Total MapReduce CPU Time Spent: 1 seconds 470 msec
OK
_c0
:@##########&|'
;@#@|`......:!$######&;.
;@#%`................'|@#####%`
:@#@;.......................`;&####|.
'&##$'.............................`!@###%` .`:::'`
`$##@!''''''''''``.......................'%####$` '&##@%|!|%@###@##&'
`$##@!''''''''''''''''''``.....................'%###&' .%#$:'''''''''''`...'$#$`
'%@$!;;|%@####&;'''''''''''''''''''''''''''`...................:$##@; .%#|:'''''''''''`.`''`..:&#$`
!##############&|:'''''''''''''''''''''''''''''''''`.................;&##&&##|'''''''''''''''`.':''`..;@#|
.%##&;'''''''''':!%@##@|:''''''''''''''''''''''''''''''''''`..............`|###@|:''''''''''''''`'$$:'`...!#&'
.%#@!''''''''''''''''''':|&@|:'''''''''''''''''''''''''''''''''''``............:&###%:''''''''''''`'$#|''`..`$#!
.%#&;''''''''''''''''''''''''';%$;''''''''''''''''''''''''''''''''''''''`..........:&##@|'''''''''''``|#%'''`..!#|
!#&;'''''''''''''''''''''''''''''':!!:''''''''''''''''''''''''''''''''''''''`.........|###%:''''''''''`;&%'''`..:&%.
:@@!''''''''''''''''''''''''''''''''''''''''''````'''''''''''''''''''''''''''''''`.......!###$:'''''''''`;&|''''..'$%.
|#$;'''''''''''''''''''''''''''''''''''''''''''''''`....``'''''''''''''''''''''''''`......`%##|''''''''''`|$:'''`..:&%.
`$#$:''''''''''''''''''''''''''''''''''''''''''''''''''''`...'''`''':::::'''''''''''''......`%#$:'''''''''''|!''''`..!#%.
.%#&!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''`......':!%&######@|:''''`.....'$#|''''''''''';!''''`..;@#;
;##%'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``....... `%###%''''`.....;@$:''''''''''';:'''`..|#|
|#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''...'%#########|'''''`....|&!''''''''''''''''`.:&$`
|#$:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..............'%###|'''''`...'$%''''''''''''''''.`%&'
;#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``...........!#@!''''''...;%;''''''''''''''`.!#;
`$#|'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.....`%&;''''''`..|$:'''''''''''''`;@|
;@@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`...!%:''''''`.'&#@!''''''''''':$@:
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..:!''''''''`;;'';;'''''''''%#$`
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..`''''''''::'''''''''''':$#|
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.`''''''''::''''''''''''|#!
.%#$:'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`'''''''''''''''''''''':$#@:
!#&;'''''''''''''''''''''''''''''''''''''''''''''''''':;||:'''''''''''''''''''''''''''''''''''''''!|$#%.
;#&;''''''''''''''''''''''''''''''''''''''''':|$@#######%''''''''''''''''''''''''''''''''''''''''''|##%.
!#$:''''''''''''''''''''''''''''''''';%@##############@!''''''''''''''''''''''''':::::'''''''''''':%##|
!#%''''''''''''''''''''''''''':!&####################&;''''''''''''''''''''''|#$!:'''''''''''''::;;%##!
.%@!''''''''''''''''''''':|@####$;'''!@##############$;''''''''''''''''''''';!:'''''''''''''''''''':|##|
`&&|!!;:::''''''':!%&###$;|$:.`''''''%##############$:'''''''''''''''''''':::'''''''''''''''''''''''!@#%.
.:!|$&@#######@$!' :@&:.`''''''':$#############$;'''''''''''''''''''''''''''''''''''''''''''''''|@#|
|##@;`''''''''';&############&;''''''''''''''''''''''''!@#####&!:''''''''''''':%#@:
.%####%'''''''''''!@###########@!''''''''''''''''''''':::|&$&####|:'''''''';!!!!;!@#! .|@$:
|#####&;'''''''''''|############%:'''''''''''''''''''''':!'.;&###@$!:'''''':!!$#####; ;@###@###!
!#######%:'''''''''''%############@|''''''''''''''''''''';|!::''''''''''''':!||$#########$;::||%#@:
'&########|''''''''''''%###############$;''''''''''''''''::'''''''''''''':|@#@$|;!@&;;$$%%&##|:'!@&'
;@#########|''''''''''':%###################%;''''''''''''''''''''''''''!|:';&#####|''''''''''':%#%.
`:'|#########%''''''''''':%#################%:'''''''''''''''''''''''''::'''%%:''!@%:'''''''''':;&#;
:;..!#########$:'''''''''':%###############&;''''''''''''''''''''''''''''':!;''';&$:''''''''''':|@&'
:;...:&#########|'''''''''''%##############%'''''''''''''''''''''''''''''::'''';$|'''''''''''':;$#!
:;....`|##########|''''''''''%#############%''''''''''''''''''''''''''''''''''!!'''''''''''''::%#&'
:;.....`:$##########$:''''''''|############$;'''''''''''''''''''''''''''''''''''''''''''''''::|@#!
';.....`'';&###########|:''''''!&###########@!'''''''';$&|!;:''''''''''''''''''''''''''''''':!@#%.
`%!....`'''':%###########@|:'''':$############$;''''';;:'|$;''''''''''''''''''''''''''''''::|@#&'
|##|`.`''''''';&###########@|:'''!@############$;''''''!@##%:''''''''''''''''''''''''''':;%##@:
:####$'`''''''''':%############|:'';$###########$;''':$######&;'''''''''''''''''''''''::;$##&'
`$######|:''''''''''':|@##########$;'|###########$:';&#########@|:'''''''''''''''''':;;%###|
;########@!'''''''''''''':|&##########@: '&#%:$#######@||@##&!::'''''''''''::;;%###%.
`$##########@!''''''''''''''''':;|&####@: '&#$;%&%%$%!!@#$'!@###@%!;;::;;;;!$####|
:##############&!:'''''''''''''''%#@&###% |####@&&###&' .|@#############$`
;!'$################&|:'''''''';&#@: |###|. `;|%|: ...
;:..`;@###################$|:'!@##| :$##%` .``````...``````...```````````````` .```````````````````````
:'...`'';$########################; |######|`|######|`;@#####$:!######$' .|######|'$#############$`
''...`'''''';%@###################| |######|`|######|`;@#####$''$#####@; `$#####&:`%#############$`
`:...`'''''''''''':!%$@#################@$!. |######|`|######|`;@#####$'.%######%. :&#####%``%#############$`
!&!`.`''''''''''''''''''''''%####! |######|`|######|`;@#####$' ;@#####$'.!######! `%######$!!!!!!;`
|###&!'''''''''''''''''''''!@###! |######|`|######|`;@#####$` '$#####@;`%#####$' `%######!
|######@$!:''''''''''''''';&###; |######@&@######|`;@#####$` |######%:$#####|. `%#########&;
:@############################&!' |###############|`;@#####$` :&#####@&#####@; `%#########@;
!###########################$;'`.. .!@@&&&&$$%||!;;:'`;@#####$` `%############$` `%#########@;
!@###############&%!:';&##################&!;!&###|`;@#####$` !############! `%#########@;
`!;`.`'''''''''''''''%###########&!;!$!`|######|`;@#####$` '&##########&: `%#####@;
'!;`.``''''''''`!@####&|:'|######|`|######|`;@#####$` .%##########%. `%#####@!```````
'|$&&$%$@@$|:`. |######|`|######|`;@#####$` ;@########@; `%#############&'
|######|`|######|`;@#####$` '$########$' .%#############&'
|######|`|######|`;@#####$` |########| `%#############&'
;%$$$$%;`;%$$$$%;.:%$$$$$|` '|$$$$$$|' .!$$$$$$$$$$$$$|`
:@##########&|'
;@#@|`......:!$######&;.
;@#%`................'|@#####%`
:@#@;.......................`;&####|.
'&##$'.............................`!@###%` .`:::'`
`$##@!''''''''''``.......................'%####$` '&##@%|!|%@###@##&'
`$##@!''''''''''''''''''``.....................'%###&' .%#$:'''''''''''`...'$#$`
'%@$!;;|%@####&;'''''''''''''''''''''''''''`...................:$##@; .%#|:'''''''''''`.`''`..:&#$`
!##############&|:'''''''''''''''''''''''''''''''''`.................;&##&&##|'''''''''''''''`.':''`..;@#|
.%##&;'''''''''':!%@##@|:''''''''''''''''''''''''''''''''''`..............`|###@|:''''''''''''''`'$$:'`...!#&'
.%#@!''''''''''''''''''':|&@|:'''''''''''''''''''''''''''''''''''``............:&###%:''''''''''''`'$#|''`..`$#!
.%#&;''''''''''''''''''''''''';%$;''''''''''''''''''''''''''''''''''''''`..........:&##@|'''''''''''``|#%'''`..!#|
!#&;'''''''''''''''''''''''''''''':!!:''''''''''''''''''''''''''''''''''''''`.........|###%:''''''''''`;&%'''`..:&%.
:@@!''''''''''''''''''''''''''''''''''''''''''````'''''''''''''''''''''''''''''''`.......!###$:'''''''''`;&|''''..'$%.
|#$;'''''''''''''''''''''''''''''''''''''''''''''''`....``'''''''''''''''''''''''''`......`%##|''''''''''`|$:'''`..:&%.
`$#$:''''''''''''''''''''''''''''''''''''''''''''''''''''`...'''`''':::::'''''''''''''......`%#$:'''''''''''|!''''`..!#%.
.%#&!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''`......':!%&######@|:''''`.....'$#|''''''''''';!''''`..;@#;
;##%'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``....... `%###%''''`.....;@$:''''''''''';:'''`..|#|
|#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''...'%#########|'''''`....|&!''''''''''''''''`.:&$`
|#$:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..............'%###|'''''`...'$%''''''''''''''''.`%&'
;#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``...........!#@!''''''...;%;''''''''''''''`.!#;
`$#|'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.....`%&;''''''`..|$:'''''''''''''`;@|
;@@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`...!%:''''''`.'&#@!''''''''''':$@:
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..:!''''''''`;;'';;'''''''''%#$`
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..`''''''''::'''''''''''':$#|
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.`''''''''::''''''''''''|#!
.%#$:'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`'''''''''''''''''''''':$#@:
!#&;'''''''''''''''''''''''''''''''''''''''''''''''''':;||:'''''''''''''''''''''''''''''''''''''''!|$#%.
;#&;''''''''''''''''''''''''''''''''''''''''':|$@#######%''''''''''''''''''''''''''''''''''''''''''|##%.
!#$:''''''''''''''''''''''''''''''''';%@##############@!''''''''''''''''''''''''':::::'''''''''''':%##|
!#%''''''''''''''''''''''''''':!&####################&;''''''''''''''''''''''|#$!:'''''''''''''::;;%##!
.%@!''''''''''''''''''''':|@####$;'''!@##############$;''''''''''''''''''''';!:'''''''''''''''''''':|##|
`&&|!!;:::''''''':!%&###$;|$:.`''''''%##############$:'''''''''''''''''''':::'''''''''''''''''''''''!@#%.
.:!|$&@#######@$!' :@&:.`''''''':$#############$;'''''''''''''''''''''''''''''''''''''''''''''''|@#|
|##@;`''''''''';&############&;''''''''''''''''''''''''!@#####&!:''''''''''''':%#@:
.%####%'''''''''''!@###########@!''''''''''''''''''''':::|&$&####|:'''''''';!!!!;!@#! .|@$:
|#####&;'''''''''''|############%:'''''''''''''''''''''':!'.;&###@$!:'''''':!!$#####; ;@###@###!
!#######%:'''''''''''%############@|''''''''''''''''''''';|!::''''''''''''':!||$#########$;::||%#@:
'&########|''''''''''''%###############$;''''''''''''''''::'''''''''''''':|@#@$|;!@&;;$$%%&##|:'!@&'
;@#########|''''''''''':%###################%;''''''''''''''''''''''''''!|:';&#####|''''''''''':%#%.
`:'|#########%''''''''''':%#################%:'''''''''''''''''''''''''::'''%%:''!@%:'''''''''':;&#;
:;..!#########$:'''''''''':%###############&;''''''''''''''''''''''''''''':!;''';&$:''''''''''':|@&'
:;...:&#########|'''''''''''%##############%'''''''''''''''''''''''''''''::'''';$|'''''''''''':;$#!
:;....`|##########|''''''''''%#############%''''''''''''''''''''''''''''''''''!!'''''''''''''::%#&'
:;.....`:$##########$:''''''''|############$;'''''''''''''''''''''''''''''''''''''''''''''''::|@#!
';.....`'';&###########|:''''''!&###########@!'''''''';$&|!;:''''''''''''''''''''''''''''''':!@#%.
`%!....`'''':%###########@|:'''':$############$;''''';;:'|$;''''''''''''''''''''''''''''''::|@#&'
|##|`.`''''''';&###########@|:'''!@############$;''''''!@##%:''''''''''''''''''''''''''':;%##@:
:####$'`''''''''':%############|:'';$###########$;''':$######&;'''''''''''''''''''''''::;$##&'
`$######|:''''''''''':|@##########$;'|###########$:';&#########@|:'''''''''''''''''':;;%###|
;########@!'''''''''''''':|&##########@: '&#%:$#######@||@##&!::'''''''''''::;;%###%.
`$##########@!''''''''''''''''':;|&####@: '&#$;%&%%$%!!@#$'!@###@%!;;::;;;;!$####|
:##############&!:'''''''''''''''%#@&###% |####@&&###&' .|@#############$`
;!'$################&|:'''''''';&#@: |###|. `;|%|: ...
;:..`;@###################$|:'!@##| :$##%` .``````...``````...```````````````` .```````````````````````
:'...`'';$########################; |######|`|######|`;@#####$:!######$' .|######|'$#############$`
''...`'''''';%@###################| |######|`|######|`;@#####$''$#####@; `$#####&:`%#############$`
`:...`'''''''''''':!%$@#################@$!. |######|`|######|`;@#####$'.%######%. :&#####%``%#############$`
!&!`.`''''''''''''''''''''''%####! |######|`|######|`;@#####$' ;@#####$'.!######! `%######$!!!!!!;`
|###&!'''''''''''''''''''''!@###! |######|`|######|`;@#####$` '$#####@;`%#####$' `%######!
|######@$!:''''''''''''''';&###; |######@&@######|`;@#####$` |######%:$#####|. `%#########&;
:@############################&!' |###############|`;@#####$` :&#####@&#####@; `%#########@;
!###########################$;'`.. .!@@&&&&$$%||!;;:'`;@#####$` `%############$` `%#########@;
!@###############&%!:';&##################&!;!&###|`;@#####$` !############! `%#########@;
`!;`.`'''''''''''''''%###########&!;!$!`|######|`;@#####$` '&##########&: `%#####@;
'!;`.``''''''''`!@####&|:'|######|`|######|`;@#####$` .%##########%. `%#####@!```````
'|$&&$%$@@$|:`. |######|`|######|`;@#####$` ;@########@; `%#############&'
|######|`|######|`;@#####$` '$########$' .%#############&'
|######|`|######|`;@#####$` |########| `%#############&'
;%$$$$%;`;%$$$$%;.:%$$$$$|` '|$$$$$$|' .!$$$$$$$$$$$$$|`
:@##########&|'
;@#@|`......:!$######&;.
;@#%`................'|@#####%`
:@#@;.......................`;&####|.
'&##$'.............................`!@###%` .`:::'`
`$##@!''''''''''``.......................'%####$` '&##@%|!|%@###@##&'
`$##@!''''''''''''''''''``.....................'%###&' .%#$:'''''''''''`...'$#$`
'%@$!;;|%@####&;'''''''''''''''''''''''''''`...................:$##@; .%#|:'''''''''''`.`''`..:&#$`
!##############&|:'''''''''''''''''''''''''''''''''`.................;&##&&##|'''''''''''''''`.':''`..;@#|
.%##&;'''''''''':!%@##@|:''''''''''''''''''''''''''''''''''`..............`|###@|:''''''''''''''`'$$:'`...!#&'
.%#@!''''''''''''''''''':|&@|:'''''''''''''''''''''''''''''''''''``............:&###%:''''''''''''`'$#|''`..`$#!
.%#&;''''''''''''''''''''''''';%$;''''''''''''''''''''''''''''''''''''''`..........:&##@|'''''''''''``|#%'''`..!#|
!#&;'''''''''''''''''''''''''''''':!!:''''''''''''''''''''''''''''''''''''''`.........|###%:''''''''''`;&%'''`..:&%.
:@@!''''''''''''''''''''''''''''''''''''''''''````'''''''''''''''''''''''''''''''`.......!###$:'''''''''`;&|''''..'$%.
|#$;'''''''''''''''''''''''''''''''''''''''''''''''`....``'''''''''''''''''''''''''`......`%##|''''''''''`|$:'''`..:&%.
`$#$:''''''''''''''''''''''''''''''''''''''''''''''''''''`...'''`''':::::'''''''''''''......`%#$:'''''''''''|!''''`..!#%.
.%#&!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''`......':!%&######@|:''''`.....'$#|''''''''''';!''''`..;@#;
;##%'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``....... `%###%''''`.....;@$:''''''''''';:'''`..|#|
|#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''...'%#########|'''''`....|&!''''''''''''''''`.:&$`
|#$:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..............'%###|'''''`...'$%''''''''''''''''.`%&'
;#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``...........!#@!''''''...;%;''''''''''''''`.!#;
`$#|'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.....`%&;''''''`..|$:'''''''''''''`;@|
;@@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`...!%:''''''`.'&#@!''''''''''':$@:
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..:!''''''''`;;'';;'''''''''%#$`
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..`''''''''::'''''''''''':$#|
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.`''''''''::''''''''''''|#!
.%#$:'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`'''''''''''''''''''''':$#@:
!#&;'''''''''''''''''''''''''''''''''''''''''''''''''':;||:'''''''''''''''''''''''''''''''''''''''!|$#%.
;#&;''''''''''''''''''''''''''''''''''''''''':|$@#######%''''''''''''''''''''''''''''''''''''''''''|##%.
!#$:''''''''''''''''''''''''''''''''';%@##############@!''''''''''''''''''''''''':::::'''''''''''':%##|
!#%''''''''''''''''''''''''''':!&####################&;''''''''''''''''''''''|#$!:'''''''''''''::;;%##!
.%@!''''''''''''''''''''':|@####$;'''!@##############$;''''''''''''''''''''';!:'''''''''''''''''''':|##|
`&&|!!;:::''''''':!%&###$;|$:.`''''''%##############$:'''''''''''''''''''':::'''''''''''''''''''''''!@#%.
.:!|$&@#######@$!' :@&:.`''''''':$#############$;'''''''''''''''''''''''''''''''''''''''''''''''|@#|
|##@;`''''''''';&############&;''''''''''''''''''''''''!@#####&!:''''''''''''':%#@:
.%####%'''''''''''!@###########@!''''''''''''''''''''':::|&$&####|:'''''''';!!!!;!@#! .|@$:
|#####&;'''''''''''|############%:'''''''''''''''''''''':!'.;&###@$!:'''''':!!$#####; ;@###@###!
!#######%:'''''''''''%############@|''''''''''''''''''''';|!::''''''''''''':!||$#########$;::||%#@:
'&########|''''''''''''%###############$;''''''''''''''''::'''''''''''''':|@#@$|;!@&;;$$%%&##|:'!@&'
;@#########|''''''''''':%###################%;''''''''''''''''''''''''''!|:';&#####|''''''''''':%#%.
`:'|#########%''''''''''':%#################%:'''''''''''''''''''''''''::'''%%:''!@%:'''''''''':;&#;
:;..!#########$:'''''''''':%###############&;''''''''''''''''''''''''''''':!;''';&$:''''''''''':|@&'
:;...:&#########|'''''''''''%##############%'''''''''''''''''''''''''''''::'''';$|'''''''''''':;$#!
:;....`|##########|''''''''''%#############%''''''''''''''''''''''''''''''''''!!'''''''''''''::%#&'
:;.....`:$##########$:''''''''|############$;'''''''''''''''''''''''''''''''''''''''''''''''::|@#!
';.....`'';&###########|:''''''!&###########@!'''''''';$&|!;:''''''''''''''''''''''''''''''':!@#%.
`%!....`'''':%###########@|:'''':$############$;''''';;:'|$;''''''''''''''''''''''''''''''::|@#&'
|##|`.`''''''';&###########@|:'''!@############$;''''''!@##%:''''''''''''''''''''''''''':;%##@:
:####$'`''''''''':%############|:'';$###########$;''':$######&;'''''''''''''''''''''''::;$##&'
`$######|:''''''''''':|@##########$;'|###########$:';&#########@|:'''''''''''''''''':;;%###|
;########@!'''''''''''''':|&##########@: '&#%:$#######@||@##&!::'''''''''''::;;%###%.
`$##########@!''''''''''''''''':;|&####@: '&#$;%&%%$%!!@#$'!@###@%!;;::;;;;!$####|
:##############&!:'''''''''''''''%#@&###% |####@&&###&' .|@#############$`
;!'$################&|:'''''''';&#@: |###|. `;|%|: ...
;:..`;@###################$|:'!@##| :$##%` .``````...``````...```````````````` .```````````````````````
:'...`'';$########################; |######|`|######|`;@#####$:!######$' .|######|'$#############$`
''...`'''''';%@###################| |######|`|######|`;@#####$''$#####@; `$#####&:`%#############$`
`:...`'''''''''''':!%$@#################@$!. |######|`|######|`;@#####$'.%######%. :&#####%``%#############$`
!&!`.`''''''''''''''''''''''%####! |######|`|######|`;@#####$' ;@#####$'.!######! `%######$!!!!!!;`
|###&!'''''''''''''''''''''!@###! |######|`|######|`;@#####$` '$#####@;`%#####$' `%######!
|######@$!:''''''''''''''';&###; |######@&@######|`;@#####$` |######%:$#####|. `%#########&;
:@############################&!' |###############|`;@#####$` :&#####@&#####@; `%#########@;
!###########################$;'`.. .!@@&&&&$$%||!;;:'`;@#####$` `%############$` `%#########@;
!@###############&%!:';&##################&!;!&###|`;@#####$` !############! `%#########@;
`!;`.`'''''''''''''''%###########&!;!$!`|######|`;@#####$` '&##########&: `%#####@;
'!;`.``''''''''`!@####&|:'|######|`|######|`;@#####$` .%##########%. `%#####@!```````
'|$&&$%$@@$|:`. |######|`|######|`;@#####$` ;@########@; `%#############&'
|######|`|######|`;@#####$` '$########$' .%#############&'
|######|`|######|`;@#####$` |########| `%#############&'
;%$$$$%;`;%$$$$%;.:%$$$$$|` '|$$$$$$|' .!$$$$$$$$$$$$$|`
:@##########&|'
;@#@|`......:!$######&;.
;@#%`................'|@#####%`
:@#@;.......................`;&####|.
'&##$'.............................`!@###%` .`:::'`
`$##@!''''''''''``.......................'%####$` '&##@%|!|%@###@##&'
`$##@!''''''''''''''''''``.....................'%###&' .%#$:'''''''''''`...'$#$`
'%@$!;;|%@####&;'''''''''''''''''''''''''''`...................:$##@; .%#|:'''''''''''`.`''`..:&#$`
!##############&|:'''''''''''''''''''''''''''''''''`.................;&##&&##|'''''''''''''''`.':''`..;@#|
.%##&;'''''''''':!%@##@|:''''''''''''''''''''''''''''''''''`..............`|###@|:''''''''''''''`'$$:'`...!#&'
.%#@!''''''''''''''''''':|&@|:'''''''''''''''''''''''''''''''''''``............:&###%:''''''''''''`'$#|''`..`$#!
.%#&;''''''''''''''''''''''''';%$;''''''''''''''''''''''''''''''''''''''`..........:&##@|'''''''''''``|#%'''`..!#|
!#&;'''''''''''''''''''''''''''''':!!:''''''''''''''''''''''''''''''''''''''`.........|###%:''''''''''`;&%'''`..:&%.
:@@!''''''''''''''''''''''''''''''''''''''''''````'''''''''''''''''''''''''''''''`.......!###$:'''''''''`;&|''''..'$%.
|#$;'''''''''''''''''''''''''''''''''''''''''''''''`....``'''''''''''''''''''''''''`......`%##|''''''''''`|$:'''`..:&%.
`$#$:''''''''''''''''''''''''''''''''''''''''''''''''''''`...'''`''':::::'''''''''''''......`%#$:'''''''''''|!''''`..!#%.
.%#&!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''`......':!%&######@|:''''`.....'$#|''''''''''';!''''`..;@#;
;##%'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``....... `%###%''''`.....;@$:''''''''''';:'''`..|#|
|#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''...'%#########|'''''`....|&!''''''''''''''''`.:&$`
|#$:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..............'%###|'''''`...'$%''''''''''''''''.`%&'
;#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``...........!#@!''''''...;%;''''''''''''''`.!#;
`$#|'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.....`%&;''''''`..|$:'''''''''''''`;@|
;@@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`...!%:''''''`.'&#@!''''''''''':$@:
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..:!''''''''`;;'';;'''''''''%#$`
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..`''''''''::'''''''''''':$#|
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.`''''''''::''''''''''''|#!
.%#$:'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`'''''''''''''''''''''':$#@:
!#&;'''''''''''''''''''''''''''''''''''''''''''''''''':;||:'''''''''''''''''''''''''''''''''''''''!|$#%.
;#&;''''''''''''''''''''''''''''''''''''''''':|$@#######%''''''''''''''''''''''''''''''''''''''''''|##%.
!#$:''''''''''''''''''''''''''''''''';%@##############@!''''''''''''''''''''''''':::::'''''''''''':%##|
!#%''''''''''''''''''''''''''':!&####################&;''''''''''''''''''''''|#$!:'''''''''''''::;;%##!
.%@!''''''''''''''''''''':|@####$;'''!@##############$;''''''''''''''''''''';!:'''''''''''''''''''':|##|
`&&|!!;:::''''''':!%&###$;|$:.`''''''%##############$:'''''''''''''''''''':::'''''''''''''''''''''''!@#%.
.:!|$&@#######@$!' :@&:.`''''''':$#############$;'''''''''''''''''''''''''''''''''''''''''''''''|@#|
|##@;`''''''''';&############&;''''''''''''''''''''''''!@#####&!:''''''''''''':%#@:
.%####%'''''''''''!@###########@!''''''''''''''''''''':::|&$&####|:'''''''';!!!!;!@#! .|@$:
|#####&;'''''''''''|############%:'''''''''''''''''''''':!'.;&###@$!:'''''':!!$#####; ;@###@###!
!#######%:'''''''''''%############@|''''''''''''''''''''';|!::''''''''''''':!||$#########$;::||%#@:
'&########|''''''''''''%###############$;''''''''''''''''::'''''''''''''':|@#@$|;!@&;;$$%%&##|:'!@&'
;@#########|''''''''''':%###################%;''''''''''''''''''''''''''!|:';&#####|''''''''''':%#%.
`:'|#########%''''''''''':%#################%:'''''''''''''''''''''''''::'''%%:''!@%:'''''''''':;&#;
:;..!#########$:'''''''''':%###############&;''''''''''''''''''''''''''''':!;''';&$:''''''''''':|@&'
:;...:&#########|'''''''''''%##############%'''''''''''''''''''''''''''''::'''';$|'''''''''''':;$#!
:;....`|##########|''''''''''%#############%''''''''''''''''''''''''''''''''''!!'''''''''''''::%#&'
:;.....`:$##########$:''''''''|############$;'''''''''''''''''''''''''''''''''''''''''''''''::|@#!
';.....`'';&###########|:''''''!&###########@!'''''''';$&|!;:''''''''''''''''''''''''''''''':!@#%.
`%!....`'''':%###########@|:'''':$############$;''''';;:'|$;''''''''''''''''''''''''''''''::|@#&'
|##|`.`''''''';&###########@|:'''!@############$;''''''!@##%:''''''''''''''''''''''''''':;%##@:
:####$'`''''''''':%############|:'';$###########$;''':$######&;'''''''''''''''''''''''::;$##&'
`$######|:''''''''''':|@##########$;'|###########$:';&#########@|:'''''''''''''''''':;;%###|
;########@!'''''''''''''':|&##########@: '&#%:$#######@||@##&!::'''''''''''::;;%###%.
`$##########@!''''''''''''''''':;|&####@: '&#$;%&%%$%!!@#$'!@###@%!;;::;;;;!$####|
:##############&!:'''''''''''''''%#@&###% |####@&&###&' .|@#############$`
;!'$################&|:'''''''';&#@: |###|. `;|%|: ...
;:..`;@###################$|:'!@##| :$##%` .``````...``````...```````````````` .```````````````````````
:'...`'';$########################; |######|`|######|`;@#####$:!######$' .|######|'$#############$`
''...`'''''';%@###################| |######|`|######|`;@#####$''$#####@; `$#####&:`%#############$`
`:...`'''''''''''':!%$@#################@$!. |######|`|######|`;@#####$'.%######%. :&#####%``%#############$`
!&!`.`''''''''''''''''''''''%####! |######|`|######|`;@#####$' ;@#####$'.!######! `%######$!!!!!!;`
|###&!'''''''''''''''''''''!@###! |######|`|######|`;@#####$` '$#####@;`%#####$' `%######!
|######@$!:''''''''''''''';&###; |######@&@######|`;@#####$` |######%:$#####|. `%#########&;
:@############################&!' |###############|`;@#####$` :&#####@&#####@; `%#########@;
!###########################$;'`.. .!@@&&&&$$%||!;;:'`;@#####$` `%############$` `%#########@;
!@###############&%!:';&##################&!;!&###|`;@#####$` !############! `%#########@;
`!;`.`'''''''''''''''%###########&!;!$!`|######|`;@#####$` '&##########&: `%#####@;
'!;`.``''''''''`!@####&|:'|######|`|######|`;@#####$` .%##########%. `%#####@!```````
'|$&&$%$@@$|:`. |######|`|######|`;@#####$` ;@########@; `%#############&'
|######|`|######|`;@#####$` '$########$' .%#############&'
|######|`|######|`;@#####$` |########| `%#############&'
;%$$$$%;`;%$$$$%;.:%$$$$$|` '|$$$$$$|' .!$$$$$$$$$$$$$|`
:@##########&|'
;@#@|`......:!$######&;.
;@#%`................'|@#####%`
:@#@;.......................`;&####|.
'&##$'.............................`!@###%` .`:::'`
`$##@!''''''''''``.......................'%####$` '&##@%|!|%@###@##&'
`$##@!''''''''''''''''''``.....................'%###&' .%#$:'''''''''''`...'$#$`
'%@$!;;|%@####&;'''''''''''''''''''''''''''`...................:$##@; .%#|:'''''''''''`.`''`..:&#$`
!##############&|:'''''''''''''''''''''''''''''''''`.................;&##&&##|'''''''''''''''`.':''`..;@#|
.%##&;'''''''''':!%@##@|:''''''''''''''''''''''''''''''''''`..............`|###@|:''''''''''''''`'$$:'`...!#&'
.%#@!''''''''''''''''''':|&@|:'''''''''''''''''''''''''''''''''''``............:&###%:''''''''''''`'$#|''`..`$#!
.%#&;''''''''''''''''''''''''';%$;''''''''''''''''''''''''''''''''''''''`..........:&##@|'''''''''''``|#%'''`..!#|
!#&;'''''''''''''''''''''''''''''':!!:''''''''''''''''''''''''''''''''''''''`.........|###%:''''''''''`;&%'''`..:&%.
:@@!''''''''''''''''''''''''''''''''''''''''''````'''''''''''''''''''''''''''''''`.......!###$:'''''''''`;&|''''..'$%.
|#$;'''''''''''''''''''''''''''''''''''''''''''''''`....``'''''''''''''''''''''''''`......`%##|''''''''''`|$:'''`..:&%.
`$#$:''''''''''''''''''''''''''''''''''''''''''''''''''''`...'''`''':::::'''''''''''''......`%#$:'''''''''''|!''''`..!#%.
.%#&!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''`......':!%&######@|:''''`.....'$#|''''''''''';!''''`..;@#;
;##%'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``....... `%###%''''`.....;@$:''''''''''';:'''`..|#|
|#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''...'%#########|'''''`....|&!''''''''''''''''`.:&$`
|#$:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..............'%###|'''''`...'$%''''''''''''''''.`%&'
;#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``...........!#@!''''''...;%;''''''''''''''`.!#;
`$#|'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.....`%&;''''''`..|$:'''''''''''''`;@|
;@@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`...!%:''''''`.'&#@!''''''''''':$@:
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..:!''''''''`;;'';;'''''''''%#$`
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..`''''''''::'''''''''''':$#|
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.`''''''''::''''''''''''|#!
.%#$:'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`'''''''''''''''''''''':$#@:
!#&;'''''''''''''''''''''''''''''''''''''''''''''''''':;||:'''''''''''''''''''''''''''''''''''''''!|$#%.
;#&;''''''''''''''''''''''''''''''''''''''''':|$@#######%''''''''''''''''''''''''''''''''''''''''''|##%.
!#$:''''''''''''''''''''''''''''''''';%@##############@!''''''''''''''''''''''''':::::'''''''''''':%##|
!#%''''''''''''''''''''''''''':!&####################&;''''''''''''''''''''''|#$!:'''''''''''''::;;%##!
.%@!''''''''''''''''''''':|@####$;'''!@##############$;''''''''''''''''''''';!:'''''''''''''''''''':|##|
`&&|!!;:::''''''':!%&###$;|$:.`''''''%##############$:'''''''''''''''''''':::'''''''''''''''''''''''!@#%.
.:!|$&@#######@$!' :@&:.`''''''':$#############$;'''''''''''''''''''''''''''''''''''''''''''''''|@#|
|##@;`''''''''';&############&;''''''''''''''''''''''''!@#####&!:''''''''''''':%#@:
.%####%'''''''''''!@###########@!''''''''''''''''''''':::|&$&####|:'''''''';!!!!;!@#! .|@$:
|#####&;'''''''''''|############%:'''''''''''''''''''''':!'.;&###@$!:'''''':!!$#####; ;@###@###!
!#######%:'''''''''''%############@|''''''''''''''''''''';|!::''''''''''''':!||$#########$;::||%#@:
'&########|''''''''''''%###############$;''''''''''''''''::'''''''''''''':|@#@$|;!@&;;$$%%&##|:'!@&'
;@#########|''''''''''':%###################%;''''''''''''''''''''''''''!|:';&#####|''''''''''':%#%.
`:'|#########%''''''''''':%#################%:'''''''''''''''''''''''''::'''%%:''!@%:'''''''''':;&#;
:;..!#########$:'''''''''':%###############&;''''''''''''''''''''''''''''':!;''';&$:''''''''''':|@&'
:;...:&#########|'''''''''''%##############%'''''''''''''''''''''''''''''::'''';$|'''''''''''':;$#!
:;....`|##########|''''''''''%#############%''''''''''''''''''''''''''''''''''!!'''''''''''''::%#&'
:;.....`:$##########$:''''''''|############$;'''''''''''''''''''''''''''''''''''''''''''''''::|@#!
';.....`'';&###########|:''''''!&###########@!'''''''';$&|!;:''''''''''''''''''''''''''''''':!@#%.
`%!....`'''':%###########@|:'''':$############$;''''';;:'|$;''''''''''''''''''''''''''''''::|@#&'
|##|`.`''''''';&###########@|:'''!@############$;''''''!@##%:''''''''''''''''''''''''''':;%##@:
:####$'`''''''''':%############|:'';$###########$;''':$######&;'''''''''''''''''''''''::;$##&'
`$######|:''''''''''':|@##########$;'|###########$:';&#########@|:'''''''''''''''''':;;%###|
;########@!'''''''''''''':|&##########@: '&#%:$#######@||@##&!::'''''''''''::;;%###%.
`$##########@!''''''''''''''''':;|&####@: '&#$;%&%%$%!!@#$'!@###@%!;;::;;;;!$####|
:##############&!:'''''''''''''''%#@&###% |####@&&###&' .|@#############$`
;!'$################&|:'''''''';&#@: |###|. `;|%|: ...
;:..`;@###################$|:'!@##| :$##%` .``````...``````...```````````````` .```````````````````````
:'...`'';$########################; |######|`|######|`;@#####$:!######$' .|######|'$#############$`
''...`'''''';%@###################| |######|`|######|`;@#####$''$#####@; `$#####&:`%#############$`
`:...`'''''''''''':!%$@#################@$!. |######|`|######|`;@#####$'.%######%. :&#####%``%#############$`
!&!`.`''''''''''''''''''''''%####! |######|`|######|`;@#####$' ;@#####$'.!######! `%######$!!!!!!;`
|###&!'''''''''''''''''''''!@###! |######|`|######|`;@#####$` '$#####@;`%#####$' `%######!
|######@$!:''''''''''''''';&###; |######@&@######|`;@#####$` |######%:$#####|. `%#########&;
:@############################&!' |###############|`;@#####$` :&#####@&#####@; `%#########@;
!###########################$;'`.. .!@@&&&&$$%||!;;:'`;@#####$` `%############$` `%#########@;
!@###############&%!:';&##################&!;!&###|`;@#####$` !############! `%#########@;
`!;`.`'''''''''''''''%###########&!;!$!`|######|`;@#####$` '&##########&: `%#####@;
'!;`.``''''''''`!@####&|:'|######|`|######|`;@#####$` .%##########%. `%#####@!```````
'|$&&$%$@@$|:`. |######|`|######|`;@#####$` ;@########@; `%#############&'
|######|`|######|`;@#####$` '$########$' .%#############&'
|######|`|######|`;@#####$` |########| `%#############&'
;%$$$$%;`;%$$$$%;.:%$$$$$|` '|$$$$$$|' .!$$$$$$$$$$$$$|`
:@##########&|'
;@#@|`......:!$######&;.
;@#%`................'|@#####%`
:@#@;.......................`;&####|.
'&##$'.............................`!@###%` .`:::'`
`$##@!''''''''''``.......................'%####$` '&##@%|!|%@###@##&'
`$##@!''''''''''''''''''``.....................'%###&' .%#$:'''''''''''`...'$#$`
'%@$!;;|%@####&;'''''''''''''''''''''''''''`...................:$##@; .%#|:'''''''''''`.`''`..:&#$`
!##############&|:'''''''''''''''''''''''''''''''''`.................;&##&&##|'''''''''''''''`.':''`..;@#|
.%##&;'''''''''':!%@##@|:''''''''''''''''''''''''''''''''''`..............`|###@|:''''''''''''''`'$$:'`...!#&'
.%#@!''''''''''''''''''':|&@|:'''''''''''''''''''''''''''''''''''``............:&###%:''''''''''''`'$#|''`..`$#!
.%#&;''''''''''''''''''''''''';%$;''''''''''''''''''''''''''''''''''''''`..........:&##@|'''''''''''``|#%'''`..!#|
!#&;'''''''''''''''''''''''''''''':!!:''''''''''''''''''''''''''''''''''''''`.........|###%:''''''''''`;&%'''`..:&%.
:@@!''''''''''''''''''''''''''''''''''''''''''````'''''''''''''''''''''''''''''''`.......!###$:'''''''''`;&|''''..'$%.
|#$;'''''''''''''''''''''''''''''''''''''''''''''''`....``'''''''''''''''''''''''''`......`%##|''''''''''`|$:'''`..:&%.
`$#$:''''''''''''''''''''''''''''''''''''''''''''''''''''`...'''`''':::::'''''''''''''......`%#$:'''''''''''|!''''`..!#%.
.%#&!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''`......':!%&######@|:''''`.....'$#|''''''''''';!''''`..;@#;
;##%'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``....... `%###%''''`.....;@$:''''''''''';:'''`..|#|
|#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''...'%#########|'''''`....|&!''''''''''''''''`.:&$`
|#$:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..............'%###|'''''`...'$%''''''''''''''''.`%&'
;#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``...........!#@!''''''...;%;''''''''''''''`.!#;
`$#|'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.....`%&;''''''`..|$:'''''''''''''`;@|
;@@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`...!%:''''''`.'&#@!''''''''''':$@:
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..:!''''''''`;;'';;'''''''''%#$`
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..`''''''''::'''''''''''':$#|
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.`''''''''::''''''''''''|#!
.%#$:'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`'''''''''''''''''''''':$#@:
!#&;'''''''''''''''''''''''''''''''''''''''''''''''''':;||:'''''''''''''''''''''''''''''''''''''''!|$#%.
;#&;''''''''''''''''''''''''''''''''''''''''':|$@#######%''''''''''''''''''''''''''''''''''''''''''|##%.
!#$:''''''''''''''''''''''''''''''''';%@##############@!''''''''''''''''''''''''':::::'''''''''''':%##|
!#%''''''''''''''''''''''''''':!&####################&;''''''''''''''''''''''|#$!:'''''''''''''::;;%##!
.%@!''''''''''''''''''''':|@####$;'''!@##############$;''''''''''''''''''''';!:'''''''''''''''''''':|##|
`&&|!!;:::''''''':!%&###$;|$:.`''''''%##############$:'''''''''''''''''''':::'''''''''''''''''''''''!@#%.
.:!|$&@#######@$!' :@&:.`''''''':$#############$;'''''''''''''''''''''''''''''''''''''''''''''''|@#|
|##@;`''''''''';&############&;''''''''''''''''''''''''!@#####&!:''''''''''''':%#@:
.%####%'''''''''''!@###########@!''''''''''''''''''''':::|&$&####|:'''''''';!!!!;!@#! .|@$:
|#####&;'''''''''''|############%:'''''''''''''''''''''':!'.;&###@$!:'''''':!!$#####; ;@###@###!
!#######%:'''''''''''%############@|''''''''''''''''''''';|!::''''''''''''':!||$#########$;::||%#@:
'&########|''''''''''''%###############$;''''''''''''''''::'''''''''''''':|@#@$|;!@&;;$$%%&##|:'!@&'
;@#########|''''''''''':%###################%;''''''''''''''''''''''''''!|:';&#####|''''''''''':%#%.
`:'|#########%''''''''''':%#################%:'''''''''''''''''''''''''::'''%%:''!@%:'''''''''':;&#;
:;..!#########$:'''''''''':%###############&;''''''''''''''''''''''''''''':!;''';&$:''''''''''':|@&'
:;...:&#########|'''''''''''%##############%'''''''''''''''''''''''''''''::'''';$|'''''''''''':;$#!
:;....`|##########|''''''''''%#############%''''''''''''''''''''''''''''''''''!!'''''''''''''::%#&'
:;.....`:$##########$:''''''''|############$;'''''''''''''''''''''''''''''''''''''''''''''''::|@#!
';.....`'';&###########|:''''''!&###########@!'''''''';$&|!;:''''''''''''''''''''''''''''''':!@#%.
`%!....`'''':%###########@|:'''':$############$;''''';;:'|$;''''''''''''''''''''''''''''''::|@#&'
|##|`.`''''''';&###########@|:'''!@############$;''''''!@##%:''''''''''''''''''''''''''':;%##@:
:####$'`''''''''':%############|:'';$###########$;''':$######&;'''''''''''''''''''''''::;$##&'
`$######|:''''''''''':|@##########$;'|###########$:';&#########@|:'''''''''''''''''':;;%###|
;########@!'''''''''''''':|&##########@: '&#%:$#######@||@##&!::'''''''''''::;;%###%.
`$##########@!''''''''''''''''':;|&####@: '&#$;%&%%$%!!@#$'!@###@%!;;::;;;;!$####|
:##############&!:'''''''''''''''%#@&###% |####@&&###&' .|@#############$`
;!'$################&|:'''''''';&#@: |###|. `;|%|: ...
;:..`;@###################$|:'!@##| :$##%` .``````...``````...```````````````` .```````````````````````
:'...`'';$########################; |######|`|######|`;@#####$:!######$' .|######|'$#############$`
''...`'''''';%@###################| |######|`|######|`;@#####$''$#####@; `$#####&:`%#############$`
`:...`'''''''''''':!%$@#################@$!. |######|`|######|`;@#####$'.%######%. :&#####%``%#############$`
!&!`.`''''''''''''''''''''''%####! |######|`|######|`;@#####$' ;@#####$'.!######! `%######$!!!!!!;`
|###&!'''''''''''''''''''''!@###! |######|`|######|`;@#####$` '$#####@;`%#####$' `%######!
|######@$!:''''''''''''''';&###; |######@&@######|`;@#####$` |######%:$#####|. `%#########&;
:@############################&!' |###############|`;@#####$` :&#####@&#####@; `%#########@;
!###########################$;'`.. .!@@&&&&$$%||!;;:'`;@#####$` `%############$` `%#########@;
!@###############&%!:';&##################&!;!&###|`;@#####$` !############! `%#########@;
`!;`.`'''''''''''''''%###########&!;!$!`|######|`;@#####$` '&##########&: `%#####@;
'!;`.``''''''''`!@####&|:'|######|`|######|`;@#####$` .%##########%. `%#####@!```````
'|$&&$%$@@$|:`. |######|`|######|`;@#####$` ;@########@; `%#############&'
|######|`|######|`;@#####$` '$########$' .%#############&'
|######|`|######|`;@#####$` |########| `%#############&'
;%$$$$%;`;%$$$$%;.:%$$$$$|` '|$$$$$$|' .!$$$$$$$$$$$$$|`
:@##########&|'
;@#@|`......:!$######&;.
;@#%`................'|@#####%`
:@#@;.......................`;&####|.
'&##$'.............................`!@###%` .`:::'`
`$##@!''''''''''``.......................'%####$` '&##@%|!|%@###@##&'
`$##@!''''''''''''''''''``.....................'%###&' .%#$:'''''''''''`...'$#$`
'%@$!;;|%@####&;'''''''''''''''''''''''''''`...................:$##@; .%#|:'''''''''''`.`''`..:&#$`
!##############&|:'''''''''''''''''''''''''''''''''`.................;&##&&##|'''''''''''''''`.':''`..;@#|
.%##&;'''''''''':!%@##@|:''''''''''''''''''''''''''''''''''`..............`|###@|:''''''''''''''`'$$:'`...!#&'
.%#@!''''''''''''''''''':|&@|:'''''''''''''''''''''''''''''''''''``............:&###%:''''''''''''`'$#|''`..`$#!
.%#&;''''''''''''''''''''''''';%$;''''''''''''''''''''''''''''''''''''''`..........:&##@|'''''''''''``|#%'''`..!#|
!#&;'''''''''''''''''''''''''''''':!!:''''''''''''''''''''''''''''''''''''''`.........|###%:''''''''''`;&%'''`..:&%.
:@@!''''''''''''''''''''''''''''''''''''''''''````'''''''''''''''''''''''''''''''`.......!###$:'''''''''`;&|''''..'$%.
|#$;'''''''''''''''''''''''''''''''''''''''''''''''`....``'''''''''''''''''''''''''`......`%##|''''''''''`|$:'''`..:&%.
`$#$:''''''''''''''''''''''''''''''''''''''''''''''''''''`...'''`''':::::'''''''''''''......`%#$:'''''''''''|!''''`..!#%.
.%#&!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''`......':!%&######@|:''''`.....'$#|''''''''''';!''''`..;@#;
;##%'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``....... `%###%''''`.....;@$:''''''''''';:'''`..|#|
|#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''...'%#########|'''''`....|&!''''''''''''''''`.:&$`
|#$:''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..............'%###|'''''`...'$%''''''''''''''''.`%&'
;#&;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''``...........!#@!''''''...;%;''''''''''''''`.!#;
`$#|'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.....`%&;''''''`..|$:'''''''''''''`;@|
;@@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`...!%:''''''`.'&#@!''''''''''':$@:
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..:!''''''''`;;'';;'''''''''%#$`
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`..`''''''''::'''''''''''':$#|
!#@!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`.`''''''''::''''''''''''|#!
.%#$:'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''`'''''''''''''''''''''':$#@:
!#&;'''''''''''''''''''''''''''''''''''''''''''''''''':;||:'''''''''''''''''''''''''''''''''''''''!|$#%.
;#&;''''''''''''''''''''''''''''''''''''''''':|$@#######%''''''''''''''''''''''''''''''''''''''''''|##%.
!#$:''''''''''''''''''''''''''''''''';%@##############@!''''''''''''''''''''''''':::::'''''''''''':%##|
!#%''''''''''''''''''''''''''':!&####################&;''''''''''''''''''''''|#$!:'''''''''''''::;;%##!
.%@!''''''''''''''''''''':|@####$;'''!@##############$;''''''''''''''''''''';!:'''''''''''''''''''':|##|
`&&|!!;:::''''''':!%&###$;|$:.`''''''%##############$:'''''''''''''''''''':::'''''''''''''''''''''''!@#%.
.:!|$&@#######@$!' :@&:.`''''''':$#############$;'''''''''''''''''''''''''''''''''''''''''''''''|@#|
|##@;`''''''''';&############&;''''''''''''''''''''''''!@#####&!:''''''''''''':%#@:
.%####%'''''''''''!@###########@!''''''''''''''''''''':::|&$&####|:'''''''';!!!!;!@#! .|@$:
|#####&;'''''''''''|############%:'''''''''''''''''''''':!'.;&###@$!:'''''':!!$#####; ;@###@###!
!#######%:'''''''''''%############@|''''''''''''''''''''';|!::''''''''''''':!||$#########$;::||%#@:
'&########|''''''''''''%###############$;''''''''''''''''::'''''''''''''':|@#@$|;!@&;;$$%%&##|:'!@&'
;@#########|''''''''''':%###################%;''''''''''''''''''''''''''!|:';&#####|''''''''''':%#%.
`:'|#########%''''''''''':%#################%:'''''''''''''''''''''''''::'''%%:''!@%:'''''''''':;&#;
:;..!#########$:'''''''''':%###############&;''''''''''''''''''''''''''''':!;''';&$:''''''''''':|@&'
:;...:&#########|'''''''''''%##############%'''''''''''''''''''''''''''''::'''';$|'''''''''''':;$#!
:;....`|##########|''''''''''%#############%''''''''''''''''''''''''''''''''''!!'''''''''''''::%#&'
:;.....`:$##########$:''''''''|############$;'''''''''''''''''''''''''''''''''''''''''''''''::|@#!
';.....`'';&###########|:''''''!&###########@!'''''''';$&|!;:''''''''''''''''''''''''''''''':!@#%.
`%!....`'''':%###########@|:'''':$############$;''''';;:'|$;''''''''''''''''''''''''''''''::|@#&'
|##|`.`''''''';&###########@|:'''!@############$;''''''!@##%:''''''''''''''''''''''''''':;%##@:
:####$'`''''''''':%############|:'';$###########$;''':$######&;'''''''''''''''''''''''::;$##&'
`$######|:''''''''''':|@##########$;'|###########$:';&#########@|:'''''''''''''''''':;;%###|
;########@!'''''''''''''':|&##########@: '&#%:$#######@||@##&!::'''''''''''::;;%###%.
`$##########@!''''''''''''''''':;|&####@: '&#$;%&%%$%!!@#$'!@###@%!;;::;;;;!$####|
:##############&!:'''''''''''''''%#@&###% |####@&&###&' .|@#############$`
;!'$################&|:'''''''';&#@: |###|. `;|%|: ...
;:..`;@###################$|:'!@##| :$##%` .``````...``````...```````````````` .```````````````````````
:'...`'';$########################; |######|`|######|`;@#####$:!######$' .|######|'$#############$`
''...`'''''';%@###################| |######|`|######|`;@#####$''$#####@; `$#####&:`%#############$`
`:...`'''''''''''':!%$@#################@$!. |######|`|######|`;@#####$'.%######%. :&#####%``%#############$`
!&!`.`''''''''''''''''''''''%####! |######|`|######|`;@#####$' ;@#####$'.!######! `%######$!!!!!!;`
|###&!'''''''''''''''''''''!@###! |######|`|######|`;@#####$` '$#####@;`%#####$' `%######!
|######@$!:''''''''''''''';&###; |######@&@######|`;@#####$` |######%:$#####|. `%#########&;
:@############################&!' |###############|`;@#####$` :&#####@&#####@; `%#########@;
!###########################$;'`.. .!@@&&&&$$%||!;;:'`;@#####$` `%############$` `%#########@;
!@###############&%!:';&##################&!;!&###|`;@#####$` !############! `%#########@;
`!;`.`'''''''''''''''%###########&!;!$!`|######|`;@#####$` '&##########&: `%#####@;
'!;`.``''''''''`!@####&|:'|######|`|######|`;@#####$` .%##########%. `%#####@!```````
'|$&&$%$@@$|:`. |######|`|######|`;@#####$` ;@########@; `%#############&'
|######|`|######|`;@#####$` '$########$' .%#############&'
|######|`|######|`;@#####$` |########| `%#############&'
;%$$$$%;`;%$$$$%;.:%$$$$$|` '|$$$$$$|' .!$$$$$$$$$$$$$|`
Time taken: 18.007 seconds
Have a good life with hive logo!
Copyright (c) 2013 Tsuyoshi Ozawa
Distributed under the Apache License, Version 2.