add dual pivot algo