added o(n/logn) limit
merge