reading list
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+-----------------::::-::::::::::::::::::::::::::::::::::::::::-+*####=-+*===++====*@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@*===+*++=++=*+-..............................................-+*###%+--++*====*****************+++++**
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+-----:--:::::-::::::::::::::::::::::::::::::::::::::::::::::::-+*####=-++====+====+#@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@#+====*++=+++*+-..............................................-+*####+:-+++===-=+++++++++++++++++++++++
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+------:--:::::::::::::::::::::::::::::::::::::::::::::::::::::-=*####=-+*====+-====+#@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@%+===-=*++=++=*+-..............................................-+*###%+--+++==++++*+++++++++++++++++++++
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=*####=-+*====+--=====#@%***#@@@@@@@@@@@@@@@@@@@@@@@@@@%+====-=*++=++=*+-..............................................-+*###%+:-++******#**********************
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=*####=-+*====+==--====******%%%@@@@@@@@@@@@@@@@@@@@@@#==-===-=*++=++=*+-..............................................-+*###%+:-+++**++**++******************#*
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+------::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=*####=-++=====----=-===+*##***#%%@@@@@@@@@@@@@@@@@@@*======--=*++=+++*+:..............................................-+*####+::-===================+++++++++++
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+-----:::::::::::::::::::::::::::::::::::::::::::::::::::::::::-=*####=-+*====+-----===-=+*##*##%@@@@@@@@@@@@@@@@@@#+===-===--=*++=++=*+-..............................................-+++****++++++++++++=====================
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+----:::::::::::::::::::::::::::::::::::::::::::.........:.::::-=*####=-+*=====------==-=-=+*%%%%@@@@@@@@@@@@@@@%*+========---=*++=+++*+-..............................................:++++++++++++++++++++++++++++++++++***+++
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+----:::::::::::::::::::::::::::::::::::::::::................:-+*####=-+*=====---------====-=+*%@@@@@@@@@@@@%#+==========----=+++=+++*+-..............................................:++++++++++++++++++++++++++++++++++++++++
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+---::::::::::::::::::::::::::::::::::::::::::...............::-=*####=-++=====------------=======++******++======-=-===---=--=*++=+++*+:...............................................::::---------------------------=========
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+--:::::::::::::::::::::::::::::::::::::::::..................:-+*####=-++=====----------------======---==--===-=-------------=*++=++=*+-.......................................................................................
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+--::::::::::::::::::::::::::::::::::::::.....................:-+*####=-++=====----------------========-=====---=-------------=+++=+++*+-.......................................................................................
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+--::::::::::::::::::::::::::::::::::..........................:+*####=-++=-=++-----------------------------------------------=+++=++=*+-.......................................................................................
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+--::::::::::::::::::::::::::::::::::..........................:=*####=-++===+*++++++++++++=+=+=====++++++++++=+++++++++======++++++++*+:.......................................................................................
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+--::::::::::::::::::::::::::::::::............................:=*###*=-++====+++++======================+==========++++++++++++++=+++*+:.......................................................................................
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#+-::::::::::::::::::::::::::::::::::::.........................:=*####=-+**+************************************+*********+++++++++++=*+:.......................................................................................
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+-::::::::::::::::::::::::::::::::::...........................:=*####=-=+**+*******************************************************+**+-.......................................................................................
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+-::::::::::::::::::::::-===-=-:::::::.........................:=+****=--============================================================++=:........................ ..............................................................
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+-::::::::::::::::::-==+**####*+=-:::.::.......................:=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++========-:......................... ..............................................................
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#+-::::::::::::::::+#%%%#**#####****+-:..........................-=============+++++++++++++++++++++++++++++++++++++++++++++++++++++++=:.........................................................................................
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%%#+-::::---::-+++--*#%@@@%###****+++###=:.:::........ ..................:::...........::::::..:.:::::::::::::::::::::::::::::::::::::::........................................................... ..............................
@%@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@@%%%#+---=****+*##**#*%%%%##%%%%%%%%###**#%==#*+-::::::::....:::::::-::--:-:-===+-...................................................................................................................................................
@%%@@@@@@%@%@@@@@@@@@@@@@%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@%%%#+--=####**%%##%%%%=..----=##########*=-. . .:::-+: -:.................................................................................................................................................
%%%@@@@@@%%%%%%%%%%%@@@%%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@%%%#+-+#%%%%%%%%%#*#= -::-:+=.:+#*#%+:::: .:::. :::. :=................................................................................................................................................
%%%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%@@@@%%%######%@%%%%###= .=#::+*-.... ::. .-: .+...............................................................................................................................................
%%%@@@@@%%%%%%%%%%%%%%%%%%%@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@%%%%%#****#%%###%- .-=%*+*: .::::: :-. .:. :- .:..............................................................................................................................................
%%%@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@%%@@@@@%###%%%%%: .==-:.=-:---::::. .-: :: : --+ .............................................................................................................................................
%%%@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@%%%%%@%#+*#%%%%. -+-. =-+ -: ... :::. . :-.............................................................................................................................................
%%%@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@%@@@@@@@@@@@@%%%%%%%%@@@%#**+***###%%@@@%##. .=+: -%.* =. -- .. ... : :: -:........................................... .............................................................................................
%%%@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@%@@@@@@@@@@%%@%%%%@@@%%#*++====+**#%%@@@@# ==. =#: +: :- :- .: :.. .. - :=.......................................... ........................................... ..................................................
%%%@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@@%@@@@@@@@%%%%%%%%@@%%#**+++====+*####%@@@. +=. +:* .+ -:-: :. :: :*. =. =.........................................................................................................................................
%%%@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@%%@@@@@@@@%%%%%%@@%%##****++*#**####%#%%%: ==: =:*= =. -: -.:: : .. . - .=........................................................................................................................................
%%%@@@@@%%%%%%%%%%%%%%%%%%%%@@@@@@@%%@@@@@%%%@@@@%%%%%%%@@%%%#********#####%%%%%%%= .#- -:+.- = -- :.: .- .. : .- - =.......................................................................................................................................
%%%@@@@@%%%%%%%%%%%%%%%%%#%%@@@@@@@%%@@@@@%%%%%@@@%%%%@@%%%#*+******####%%%%%%%@%# *- :::- = --: :-- :. : : : - =......................................................................................................................................
%%%@@@@@%%%%%%%%%%%%%%%%%#%%@@@@@@@%%@@@@@%%%%%%%%%%@@%%%#*+++**#######%%%@@@@@@# .* = = = .- :=: .:.:. : : .: .=.....................................................................................................................................
@@@@@@@@%%%%%%%%%%%%%%%%%##%@@@@@@@%%@@@@@%%%%%%%%@@@%%%#+++**#########%%@%%%@@@. +. -. = :- + * ::.: .. .: : .:.............................................................-==:...................................................................
@@@@@@@@%%%%%%%%%%%%%%%%###%@@@@@@@%%@@@@@%%%%%%%@@@%%%*+++***###%%%%%%%@@@%#%%+ .= .+ - + -. - .. :::: -. :. : -.............................................:=++=-:...:=++=+*##**++=-:.:-+**###***++=-.............................................
@@@@@@@@%#####%%#%#########%@@@@@@@%%@@@@@%%%%@@@@%%%#+++++*###%%%%#***++*#%#+#. =. +. .: :: .: : .:.:. =+=-. .. - : -:...........................................+%###*+===-+#%%%%##%%%#%#*+#@@%%########**++=:..........................................
##%%%#%%%##################%%@@@@@@%%@@@@@%%@@@@%%%##+++++**##%@%#**#####*++#%= - + .: = + : : ::::-===-.+ .:.*- = =............................................#@@%@%#*+=+#%%%++*####%##*#@@%%%@%%##*##%%%##*=:.......................................
###########################%%@@@@@@%%@@@@@@@@%%%##**++++***###%@%###%%%%##*++# :: .- - .#: + = -+=:. :=-+.-+-:+ =.............................................#@@%@%#****#%%%%%%%%%%%%%@@@@@%#****+++**##%%%#+-.........................:-==++===-..
###########################%%@@@@@@@%@@@@@%%%%##*+==++*####%%%@@%##%@@%@%#*+++ =. :: = + =: + .:-=. -. ::+=*==+ :::............................................=@@#@@*+%###%@@%##%%@@@@@@@@@%%%%%######*#####%%%*-.....................:#%%#*+++**#%*
###########################%%@@@@@@@@@@%%%%##**+==+*###%%#%%%%@@%#%@@*::-+*===::::::--*::+-. -. .= + :=:::.:--:.:::=:. ---=. : =............................................*@@@@%%**%#%#%@@@@@@@@@@@@%%%%%%%%%%%%%%%######*##%*=:..................:*@@@@%#*+=+*%
###########################%%@@@@@@@%%%##***+++*####%%%%%%%%%%@@@%%%@%- :==-::: ..::---::-- . - =: . : :. :. .-%. .. . *==================------:::--::::::::::::::=@@@%%%#**##%#%@@@@@@@@@@@#%@@@@@@@%%%%#@@%#%%##****###+-..................-%@@@%#**+*#
###########################%@@@@@%%%###******###%%%%%%@@@@@@@%%@@%%%%%%%= =. .:-+-:-=::-:: +: + - +: .++=*+-:-- . + .. : **++#*****###********************++*+++++++*%@%%%##***##%#@%%@@@%%%%@@%%@@@@@%%@%@@%@@%%@@%%%##*****##+============---::+@@@@%#***%
#######################%%%@@@%%%%###*****###%%%%@@@%#####%%%%%@@@@%###%@@%=. .- = :-:::*: = = = +=:=#@@##@@@@@+= .:#==*:-: + : - - -##%%%%%%@%@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#**#**####%%%%#@@@%##%@@@@@%@@@@@%%@@%%%%%%%%@@@%###******#****************%@@@@%####%
+*################%%%@%%%%%########****#####%%@@@%##########***######%@##@%%=- -. - =: - + -..##@@*. -*+++*.-#- :*%%@*#@@%. = - : - *#****################################%%%###**#%%###%%@%%@@@@%##%@@@@@@@@@%**#%%##%%%%@@@@@@%@%%#***++**##%%%%@@@@@@@@@@@%%####%%
*+++++****###############*********#*######%%@@@%##%%%%###%%%%%#**++*%%@%%%%- ::-: =. :- : +..= -- +- :*+@@%=: .. .*-=+**+.:*@+-=- .. * #%######################################%%#*#%#**@%#%%@@@@@@%%%##**#%%##@@@@%%%%%%%@@@@@%%%%%%%##%%%%##********###%%%%%%%%%#####%%@
###*+====+==++++++++*************##%%%%%%#%@@@%#%%%%%####%%@@@%%#**%%%%%%## .::: -- + : := + = . :: =+:. =*@@+-. ==:= : =+.@@@%%%%%####%%#####################%%###***#%@#*#@@@@@@@@@@@@%%%####*+%##%%%%%@@@@%%@@%%%@@@@@%%@@@@@@@%%%%%####**#*##*#########%@@
%####**++++++++++****************#%@@%%@@@@@@%#%@%#**####%%@@@%%%%%%%@%%%%= .*=: .--. * = # :- + .::=-=- :::.:+-*- - : .. +*%-@@@@%@@@%%########***********###**#*+++*#%@@%%#*@@@@@@@@%%%@@@@@@@%%%@@@%#%%%%@@@@@@%%@%%@%@@@@@@%%%@@%#%@@@@@%%%%%#####%####%%@@@@
@@%%%###***+++++**##########***#%%@@@@@@@@@@@@%@@@%####%%%%%%%%%%@@%%%##@@. . .+.+= ::::. :++. #- = :. --==. :-=-- - .- -%%%@%%@@@@@@@@@%##########**+++++==+==++++*#%%%%##%@@@@@@@@@@@%#%@@@@@%%%@@@##%@%#%@@@@@%@%%%@@@@@@@%##@%#####%%%@@@@%%%%%%%%%%@@@@@@@@
@@@@@@%%%#####*****#####%%%##%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@%#%@@%%##**##%# .+ =..--=. :---=#+# += := = ==--. .-== : -#%@@@%%@@@@@@@@@@@#*#########******++++++*####%%%%@@@@@@@@@@@@@@%#@@@@@@@%%%###%@@@@@#@@%@@%%%%%%%#*#@@@%#*#%%@%%%%%@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@%%%%%%%%%@@@@@@@@%%%@@@@@@@@@@@@@@%@@@@@@@@@@@%%@@@@%%%%%%%%%+ -= - = :-: .**#+- =.+.*=-: -=-:. = =:-:.:-=***#%@@@@@@@@@@%#####%#%%###****+****#%%%%%@@@@@@@@%%@@@@@@@%%@@@@@@@@@@@%%##%@@@@%%%##%%#%%%####%%@@%######*%@%@%@@@@@@@@@@@@@@@@@@@
####%%%%%%%@@@@@@@@@%%%%%%###%%%%%%%%%%%%%%%@@@@@@@@@@@%%%@@@@@@@@@@@@@@@- +- -::. *=::=*=*%+- =..==-=-. =-:. =-- .-: ..::------=*@%%%%%%%%%%####*######%%%@@@@@@@@@@@@@@@%@@@%@@%%@@@%%%%%@@%%*+*#####@@%##@@%%@@%@%%@@@%#%%%##%@@@@@@@@@@@@@@@@@@@%%%%@
@@@@@@@%%%%%%%##############%%%%%@%%%%%%%%%@@@@%%%%%%%%%%@@@@@@@%%%%@@%#%. == +.+ + .:#*=-= -. .=+.-*. =-. -+: :- .:-:.. .... =%%@%%%@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@%#@@@@@%%%%%%@@@@%@%%@@%%%%%%%%@@@@@@@@@@@@%%@@@%@@@@@%%@@@@@@@
%@@@@@@@@@@@@@@@@@@%%%%%@@@@@%%%@@%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@%##*+=-*. .+ =:+ :: .@:=..= :: =* : :=. --.=: :-: ::::::.:.... ########%%%%%@@@@@@@%%%%%%#%%%#######%@@@@@@@@@@%%%####**+++=======++++++***##%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@%%##*****
====+**##%%@@@@@@@@@@@@@@@@%%%%%%#########%%@@%%%%%@@@@@@@@%##*+======-:*: + .+-: = -@* ...+. .- -* =- -%= :=..--. .. +%%%######%%%###%%%%%%%@@@@@@@@@@@@@@@@%%#**++++=====----:::::::::--=+===--==----==++*###%%%%@@@@@@%%##*+=--::::::----
::::::::::---===++**###%%%%@@@@@@@@@@@@@@@@@@%%%%###**++==-------::::==:*= -. :==. .+ +%%...::+=.*. . -. =----:-: . .::::. .%#%%%@@@@@@@@@@@@@@@@@@@@@@%%%###*++====----::::::...............::-==--::::::::::::::::::::--===+==--:::::..........
.... .....:::::::--==+======-------:::::::::::::::........:-=-=+ - =%. .- %%@...::+@--:-: -: ::::::-:: ##*#+*-+#-:-. +::. =#%%%@@@%%%%###***++==========--===-:::::........... .........::-=--::....... ...::---:::....
.. .......:--+=---:::::::..... .. ..:===:: :: =# :+@%@:..+*@@%*+--=-: :- -:::::-:::--=++++--= =. = *++===-------:::::::::::::::::--==-::::..... .......::-=--::.... ..:::--:::..
.. ........:-==---::::..... .. ....:=+= = :- :#: :%%@-..*+*##%@@@@%@%*=. -: =-- *#-. .: : -. - -==---:::::..............::::::-=+=-::..... .........:--==-::... ..:::-::::..
.. ......::-==---:::...... ..:-=+- .= :: +: .%*:..#*++===++*%#####*=: .=: :%- ---- - .. - - *--::::.... .....::::::-+=-::..... .......::-===--::.. ..::::--::....
.. .....:::--====--::...... .......:-=== := :- -= :=::.* .:---=-%++++++++**++-. .+*@+-::..::---. + : = = =----:.. .....:::::-===-::.... .....::--===--::... ..::-----:::.... ..
... ....::::-======-:::..... ......::-==== :- =. :-. +::+ #++#-:*#%%*+ .::::::::- --*-:::::::. -. . :+ -. ==...--- .....::---====-::... ...::-======--:::... ....::---==---:..........
.... .....::--=---===--::...... .......::=====* := :- .-: +== %+=#.%#@@@@** .#=== = = .. =-=. .= .-=*...--: ....::--======-::... ...::-=++====--:::.... .....::--==++=--::........
:.... .....::---=======--::::...... .....::--==-:-+= =. -- ---#=--:. .%+++=#@@@@@#% =::**+ .- - . :-.----= :#.....:=- .....:::-===:-==-:.... ....::--===:-===-:::.................::--===:-=--:::......
::..... .....:::---=======--::::.......... ......::---======*: -= =. -*#===+***#++= +*#%%##: :=-.. *-=- - : : ::-=:-=+= +==-....:+- .....:::--======--::... ......::---====+===--::...............:::---===-===-:::.....
:::...... ........:::::-=-------=--::::.................:::----=======+- -: :- .. -**+++=+%++++**#*#*=--====--:-:...=----=: = - : --: --=:#*. .+---==-... :=: ......::::::-======-:::.... ......::----========--:::.............:::----======---:::...
:::::.................:::--=---------==-:::::..............::::--===-----==-=+=: :-: --. :- :-:.:-=-=+++**+++++++++-:---=+-::-: .: .= :. : : :-..+#=*+. -:....=-==....-*:.....:::::-=--------:::..... ........:::---=------==---::::..........::::---===---==-:-:::::
-:::::..............::::-==--::::::----=-:::::::..........::::--===-------+**++*%*+===-+-: :: .-. .*++=-+:.#*:.:+....-: .- : = :.. :-*++==+: =----...:-==:. -.=-..::::::==---::::---:................::-:-==--:::::-==--:::::.....:..:::----=-------=--:::::
==-::::::..........::::-===-:::::::::---==-::::::.....::::::---===----:-+*++**+=+*=-: :-=-: .=. .-. ==...+..-=--..=-....= -. :: .: :+ +=====+= +:--:=-...:-==:- :=+-:::::-==-::::::::-=-:.............:::::-=--:::::::-==-::::::::..:::::----==--:::::--=--:::
-==--:::::........::::-===-:::......:::--==-:::::::::::::::---=+=---:-**++**+=*+: -- =. -: .=...+.. * ::..--... =. :- -. = :+ +======+#: +:...==.+-...-=+= :::==:::-==-:::.....::-=-::..........:::::-==-:::::.::::-=---::::::.:::::----+=--:::::::-=--::
:-=+-:::::::....:::::-=+=-:::........::::-==-:::::::::::::---=++---:=*+=**+=*=. -- -- .- + ..--. + .-..--... -. :. -. .- .: :+===+++==*++......==-=-...-=-*::. :=:-+=-::........::==-:.........:::::-+=-:::......::-+=--:::::::::::---=+=--::::::::-==-:
::-=+----:::::::::::-=++-:::... ....:::-=+--::::::::::---=++=--:++=*#+=+- -: .- :. + ..:=..--::=+..:=....-= .-. -: :: .:*++==++++++#++=:.....==:=-..:-+=+ -+=-:::... ....:-=-::......:::::-=+-:::.........:-++-::::::::::----++---::....:::-=+-
.:::=+=----::::::::-=+=-:::... ...:::-=+=-::::::::---=++=--=*++#+=*= .= .= :- - ...+..:. -...+.....= :: :: -. =%===++++++%++++++-.....==.=-..:=*: +=::... ....:==-:....::::::-+=:::..... ..::=+=--:::::::---=+=--:::.......::-=
...::=++-----:::::-=++-:::... ..::::--++-:::::----=++=--+*++#+++. .* .= : : ...+...: =...=:....+ :- :: - -*=+=+++++#+++++++++-:....=-:=:..-+=. :=.... ....-+=:..:::::::=+-:...... ...:-+=-:::::::--=++=--:::.... ...::-
....::-++---------=++-:::.... ...:::---++--:-----=++=--*+++#=*- = .- : :....+...- = ..+:... = -:-. .- +===++++=#++++++++++++=....=+.:+-#%*+: .+... ....-==::::::::-+=-:...... ..::++-:::::---=*=--:::... ...
.....::-++=-------++-::::...:-----------:.:::--=++------=++=--*++##=*: = -- - :....+.. = +...=:....= .-+ :: *=++++++#*++++++++++++++=:.= -=.=%**%=- =---:-:-. ....:==-::::::=+-:...... ...::=+-:------++=--:::... ..
....:::-++=--===++-::::..:-##*++++++*######**+++++=---=++=-+*++#+=*. .- -. .. :... +.. **########...+=....= :*. :. *=+++=+#*++++++++++++++++=#. = == =++.+ : ::-: ...:-=-:--:-==::..... . ..::-+=-----=++---::....
.....::-=+++===++=-::::.:-+###*+++++*##############*++*+==*+++#++* :: - .-.==-:.*.. #*#********.. -=... - -. =. .*==++=#*+++++++++++++++++*+ := =.--. :- - -. ....-==---=+=::..... ...::-==-=--++=--:::...
.....::-===-:=++=--:::::==#####+++++###################%##+++#+*- = -: :-+-====+==-*#######***%:..-=....= - =. :+++++#*=+++++++++++++++++* *+-* :- : = ..:-=====+=-:..... ....::-=+===++=--::...
.....::--===--=++=--::::===#####*++++*%###################+++%+*- .- + ++=:-==:::+=+#*==+=-::::-==+++*#==:=-....= - .+++=#+++++++++++++++=++=*. -*=#. - :. ..::-==-:-=-::..... ....:::-=+=--==--:::..
.....::---=++===++=--::===*######*++**#################%#+++#=*= =: :- -@%%%%#*++=::::-++-=+*+===+=:::::::--==----= .: .*=+#++++++++++++++++++++= *=+= - .: ...:::===-==--::....... . .....::--+=--===-:::..
.....::---++==---=+=--====########++++*###############%#+++#=*- + #: %@@@@@@@%%%%#**+======+**=-===-::::::::::::-=--:. :. #=+++++++++++++++++++++* .#+=* :. :.....:-=====+=--::...................:::=====++=--::..
...::::--=+=------=+==++++%#######*++*+*############%%%*+*#+*: .: -%. #@@%%%%%@%%@@@@@%%%%#*+=--=======-:::::::::::::::---::*: -*+++++++++++++++++++++ .*==#. - -....::==----=+=-::::.................::-==---=+=--::...
..:::---=+=--------+*#*++##########*+**+*%######%%@@@@*#*#=* = %* *@@@%%%%%%%%%%%%%%@@@@@%%%%#*++=::--::::::::::::::::::::-=--: =*++++++++++++++++*- :*+=*: : =..:::-+=------+=--:::................::=+=::::-=+-:::..
.:::---=+=-::::::--=*##*+###########+**+**######%@@@@+###=#. :: ==- :@@@%%%%%%%%%%%%%%%%%%%%@@@@@@%%%%#*+=-::::::::::::::::::::::-+==+*=+++++++++++*- -*+=*: = +..::=*++**===:-++---:::............:::-==-:.::::=+--::..
:::---=+=-::::::::-=**##*%#########%***+*+#####%@@@@*##*=*. + *+ #@@%%%%%%%%%%%%@@@%%%%%%%%%%%%@@@@@%%%%%**+=-::::::::::::::::::::==#*++++++++=- :++++*: =::--::--++**++:::::::-+*%%#*#**=::..........:::=+=:.....::=+=-::..
::---=+=-:::....::=+++###%###########*+****####%@%**#%*+#. =. ==*@@@%%%%%%%%%%%%@@@@@@@@@@@@@@@@%%%%%@@@@@%%%%%#*+==::::::::::::-======+**+=: :=*+=++- ::-----==-:==-======-:::-==++*##%%%%%%%%@%*=--::::----====+++==-------=+=:::...
:---=+=-:::......-=+++*##%############****+*###%#*#*#++*. :- :-@@@%%%%@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@%%%%%%*++=-::::::::-==**=*==++*++++=: .:---==::::::::::::::::-=++**#%%%%%%%@@@@@@%%@%*+++++**++++++++++++++++++++++++++++==--:. ..
---++=-:::......:=+++++*#%###########%#+****##%#**#*+*= ::...:::.+--@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%%%%#*+=-::-:-=-==**+**+: :---++==++-:--==::::-=++*#%%%%%%%@@@@@%%%%%%%%%%@@#++++++++++++++++++++++++++++++++++++++++++++==
--=+=--::.......-=++++++*#############%*+++*#%@#*+++*: :-: .@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%#%%#*+=-=++=-+**+*=. .-=====**++#**+====+*#%%%#%%%@@@@@@%%%%%%%%%%%%%%%%@@###*++++++++++++++++++++++++++++++++++++++++++++
+==--:::.......:===++++++#%#############*+*+%*+++*+- :::: - .%@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%@@@@%%%%%%#**+*+-===:-===-:::-+#*=***+*#%%%%%%%@@@@%%%%%%%%%@@@@@@@@@%%%%%@@%#######**++++++++++++++++++++++++++***+++++++++++
+*+--:::.......-===++++++*%##############*+*#==-- .::-::::=+-: =- #@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@%%%%%%#+---::--==-:=**%%%#%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@%%%%@@%############**+++++++++++++++++++++#=---#*+++++++++
++++=::.......:=====+++++*%###############*: --:...-+-: ::=@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@%%%##**+==+%%%%%%%@@%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@%%@@%#################*++++++++++++++++++++....:%+++++++++
+++++=:......:-======+++++%##############= .:-.....:: -+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%######################*++++++++++++++++#....+*++++++++*
++++++*:.....-========++++%############# .-===+++++==:. :=:.....:-+ :*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@%%@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%#########################*+++++++++++*+=+:-=:==++*+=++++
+++++*++:...:-========++++#%#########%%+**++++++++++=++*++=--: .=-.....:=++=+ .--. -*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@%%%%%@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%#%#############################*+++++=:. .:-=*+
++++++++*:..-=========++++*%#####%#%%*++++++++++++++++++++++=++*+==--::+:..:-=+******= +@#=: -*%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@@%%%%@@%%@@@@%%%%%%%%%%@@@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@**%###############################**-. -
+++++++++*--==========+++*+%###%##%#*******************++++++++++**+ =--=+***#***+++% -*%%*-. .=*@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@%%%@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#%%%%%%###%#+++++*#################=
++++++++++*===========+++++####%%#**+++++++++++++++++++**********.* :#+**#***++++++*@ ::. -*%@%+-. -+%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@%@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@%%################%%%#%: .###########%##%= .:::::: .....
+++++++++++*==========++++**%##%*++****+***++=++++++++++++++++*#.=* *####*+++++*#*++@. .--. +%@@@@%*+-. +@%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@%@@%%%%%@@@@@@%%#############%%%. .%########%=---=+=:=+----: .:----:. :----:
++++++++++++*=======++++++++%%%****#: ..:---==++**+++*+=-.+++@+*#***++++********%#. :--. .=*%@@%%%%%%%%%%%%@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%%##########%+ -######### .:-:. :
+++++++++++++*=====+++++++++%#*#++*: .::::::--: -##%#**++++********++++#. ::. .--: :-+#%%%%@@%%%%@@@@@@@%@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#######*% ########+
++++++++++++++*====+++++++*#@#++++*...::--:::.. .-+%%#*++++*#*******++++++++#=---. .::-:. .:-::. --*%%@@@@@%@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####*@ +#####*%.
++++++++++++++*+==+++++++*#*#**+==-:. -. .+#%@@@@+*#***#**+++++++++++++*#**+**+=--:. .--:. .:-:-::-::.-%@@@@@@@@@@@@@@@@%%%%%%%%%%%%%@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%##%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##*@ -######:
+++++++++++++++*++++++++*##*+-. = %=@@@@@%#***=:%+++++++++++++++++#+++++++==%*#%=%#- :---:. =-=+%@%@@@@@@@@%@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%#*++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%## .#*#*#.
.....:::---=+++*++++++*#*#: .- ...::----==+%##%%####%%++**++++****++********#*+******%**%#@@%%*=::::.:---=*+#*++==#@@@@@@@@@@@@@@@@@@@@@@%%%%%%%@@@@@@@@@@@@@@@%@@@@@@@@@@@@%#*++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* #**#:
.:=++++###*#---==+++##*##%###########%###*****+++++###%======-===-+%####%+-=-----########%=-*%#################%%%%%%%%%%%%%%%%%%%%%%%%@%@@%@@@@@@@@@@@@@@@%@@@@@@@@@@#@*++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- .+%.
:*%###%####%%###****+++++===---:::::::::::::::::*%#@==========-#%####%+=======%#######@=-##########################################%@@@@%@@@@@@@@@@@@@%@@@@@@@%#+*%*++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@# :.
................. .+#==---:::::::::::::::::::---===========-::::::%##@====-======@#####%-======########%#==%##########################################@@@@%@@@@@@@@@@@%@@@@@@*+++*#+++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- -
......................-+::::::::--==++===+==+===--::-==+=++=-:::-:::+%#@==========-%#####%-======*%#######%=-%##########################################%@@@@%@@@@@@@@@%@@#+-#++++*#+++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -
.......................-+::::==---::::-=========================-:::=%#%+=========-######%-======+@#######@==###########################################%@@@@@%@@@@@@@#+-. .*++++*#+++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% .:
::=+#%%@@%%%###*+=:.....+-:::::::::::--:::-========================-=%#%+==========#%####%=======+@#######@==############################################@@@@@@@@@%*-. =#+++++#+++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* =
#@@%%##*********##%#+-.:*::::::::::::::-===========================-#%#%*==========#%####%========@#######@+=*%##########################################@@@@@@*=: =*+++++#*++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+ :.
@%%#####%%%%%%%%%%##%%#+*::::::::::--:::::::::::-====-=============-@##%#++++++++++#%%%%#@=+++++++@%%%%#%#@+=#%##########################################@@%*- :*+++++#*+++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* -
%###%%%%%%@@@%%%%%%%%%%%%-===+++====+==-::=====++==+++++====+===---+%##%#******#***%@@@@@@*#######@@@@@@@@@#*@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#- #++++++#+++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@# :
##%%%%@@@@@@@@@@@%%%%%%#%:::-=======--::::::::::::::---------------%%##@##****#####@@@@@@%*#####*%@@@@@@@@@#*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% =++++++#++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- :
%%%@@@@@@@@@%%%%%%%@@@%@=:--==+++*****#####%%%%%%%%%%%%%%%%%%%%%%%%###@%*****####*%@@@@@@%#####%#@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@= *++++++%+++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@= -
%%@@@@@@@%#********#%%@%#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%####+==*+++++-*+++++*#+++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*. .:
@@@@@@@%######%%%%%%%%@%%%%@@@@@@@@@@@@@@@@@@%%%%%%%%#######********+*+++++++++++++=========------:::::::-*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+*@@@@@@++++++%++++++++@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+ -.
@@@@@@%###%%@@@%%%%%%%##%%%%%%+#-:::::::::::::::::::::::::::::::::::::::::::::::::::---====++++==++==-::----@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*+#@@@@@*+++++%+++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*=:*
@@@@@%###%@@@@%##**##%##%%%%%%#-*-:::::::::::::::::::::::::::::::::::::::-================================-:-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@***@@@@@@+++++%+++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#.
@@@@@%#%%@@@%#*++****####%%%%%%+-*::::::::::::::::::::::::::::::::::::::-===-========--:::::::::----=+++++++:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#**%@@@@@*+++*#+++++++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@=
@@@@%##%@@@%%*********###%%%%%%*-=:::::::::::::::::::::::::::::::::::::::::::::::::::::::::----============+=#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**%@@@@@%+++*#+++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%-
@@@@%#%%@@@%%#*********##%%%%%%#:+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::---------=========*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**%@@@@@%+++**+++++++%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%=
@@@@%#%%@@@%%#********#%%%%%%%%*:*::::::::::::::::::::::::::::::::::::::::::::::+===========-----::::::::::::*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**#@@@@@%+++#*++++++=%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*.
@@@@%#%%%@@%%###*****#%%%%%%%%%*=+:::::::::------------------------------=::::::::::::::::::-----------======@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%**#@@@@@%+++#*++++++=#%%%%%%%%%%##########********************+++++++++++++++++=+===========================-===-..
##***++*********++++*****#####*=*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::-===========----=@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##%@@@@@#=======================++===++=======+==================+==========================================+==# .:::::::::::.......::::::
++++++++++++++++++++++++++++++++#------------------------------------------------------------===============%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@+++++++++++++++++++=++++++++++++++===++===========================================================+====+=:.
++++++++++++++++++++++++++++++*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##%@@@@@#+++++++++++++++++=+++++++++++++++++==+===============+===================================+=+==++=+++=++===++*+++======--------======
+===--::-:::-----==============+*****##########%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%######*******+++++++++++++++========================------------------:::::::::::...::..::::::::::-::------------------------=================++++++
%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@%%%%%%%###***++=====-------==+++++++++++++++++++****************########%######*****+++++++==============+++++++++++++*********************#####################################################****+**+*##############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%@@@
%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%##*+===--::::::::::::::------==========+++++++++******#####%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#############****###*#############%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@
%%%%%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%#*+--=++**###############%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@%%%%@%%%%%%%%%%%%%%%%%%%%%%##########***#################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%@@@@@@@@@@@@
%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%#%########**###########%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%############################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@
@%@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%######################%#%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%###########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@
%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%###############%###%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@%%%%%%%%%%%%%%%%%%%%%%%########################%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%##################%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%###################%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%################%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%################%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@@@@@@%##%%@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#########%%@@@@@@%%%%%%@@%%%@@@@@@@@@@@@@@@@@@@%%%%%%@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%@@@@@@@@%%%@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#####%%@@@@@@@@@%@@@%###%%@@@@@@@@@@@@@@@@@@@@@@@@%###%@@@%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@##%%%%@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@%%##%%%%@@@@@%%%@@@%%####%@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@%##%@@@@@@@@@@@@@%%%%@@@@@@@@@@@@@@@@@@@@@@@@%##*#%%%%@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%%%@@@@@@%############%%@@@@@@@@@%%@@@@@@%%@@@@@@@@@@@@%%%@@@@@@@@@@@@@@##*#%@@@@@@@@@@@@@%#%%@@@@@@@@@@@@@@@@@@@@@@@@@%####%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@List of resources used (or actively using) to learn more about topics I'm interested in. Mainly CS, occassionally others. Includes articles and cool reads that I keep for reference or for sharing.
Not listed in order of interest or priority.
databases
distsys
- Designing Data Intensive Applications
- Notes on Distributed Systems for Young Bloods, Jeff Hodges
- DistSys design and lessons by Jeff Dean.
comparch / performance
- ETH Zurich, Computer Architecture
- ETH Zurich, Digital Design and Computer Architecture
- ETH Zurich, Seminar in Computer Architecture, 227-2211-00L
- ETH Zurich, Hands-on Acceleration on Heterogeneous Computing Systems
react
- You might not need an effect
- React antipatterns
- useRef, useMemo, mounting, useEffect
general
mlops, compilers, performance eng, hpc, transformer internals
would like to learn more: need to find more resources in these categories.