O(log n) space