O(max(n)+n)