O(Catalan(n))