Cole-Vishkin algorithm