mainly from Leetcode online judge