1. the array is read-only 2. not every number in 1...n need to appear 3. we are interested in finding just one duplicated number 4. constant memory