new added, two pointer