https://medium.com/@maildeepikasivakumar/dynamic-programming-longest-increasing-subsequence-aa759dba64a7