p18 O(n)