,+*^^*+___+++_
                      ,*^^^^              )
                   _+*                     ^**+_
                 +^       _ _++*+_+++_,         )
     _+^^*+_    (     ,+*^ ^          \+_        )
    {       )  (    ,(    ,_+--+--,      ^)      ^\
   { (@)    } f   ,(  ,+-^ __*_*_  ^^\_   ^\       )
  {:;-/    (_+*-+^^^^^+*+*<_ _++_)_    )    )      /
 ( /  (    (        ,___    ^*+_+* )   <    <      \
  U _/     )    *--<  ) ^\-----++__)   )    )       )
   (      )  _(^)^^))  )  )\^^^^^))^*+/    /       /
 (      /  (_))_^)) )  )  ))^^^^^))^^^)__/     +^^
(     ,/    (^))^))  )  ) ))^^^^^^^))^^)       _)
 *+__+*       (_))^)  ) ) ))^^^^^^))^^^^^)____*^
 \             \_)^)_)) ))^^^^^^^^^^))^^^^)
  (_             ^\__^^^^^^^^^^^^))^^^^^^^)
    ^\___            ^\__^^^^^^))^^^^^^^^)\\
         ^^^^^\uuu/^^\uuu/^^^^\^\^\^\^\^\^\^\
            ___) >____) >___   ^\_\_\_\_\_\_\)
           ^^^//\\_^^//\\_^       ^(\_\_\_\)
             ^^^ ^^ ^^^