https://plsmr1.github.io/posts/dynamic-programming-patterns/
Dynamic Programming Patterns