Grokking Algorithms study notes