https://myecobook.life/youlibr-introduction-to-data-structures-and-algorithms-in-java-234219