https://medium.com/@mdsiaofficial/cp-2-mastering-data-structures-for-competitive-programming-6ead258b82d1