O(n lg^2 n)
900 following