def simulate(int n) {
def queue = new LinkedList([*'slprh'.split('')])
def last = null
while (n--) {
last = queue.poll()
queue.push(last)
queue.push(last)
}
return last
}
def solve(int n) {
def persons = 'slprh'.split('')
int count = persons.size()
--n
while (n >= count) {
n -= count
n >>= 1
}
return persons[n]
}
(1..1000).each {
assert simulate
(it
) == solve
(it
) }
ZGVmIHNpbXVsYXRlKGludCBuKSB7CiAgICBkZWYgcXVldWUgPSBuZXcgTGlua2VkTGlzdChbKidzbHByaCcuc3BsaXQoJycpXSkKICAgIGRlZiBsYXN0ID0gbnVsbAogICAgd2hpbGUgKG4tLSkgewogICAgICAgIGxhc3QgPSBxdWV1ZS5wb2xsKCkKICAgICAgICBxdWV1ZS5wdXNoKGxhc3QpCiAgICAgICAgcXVldWUucHVzaChsYXN0KQogICAgfQogICAgcmV0dXJuIGxhc3QKfQoKZGVmIHNvbHZlKGludCBuKSB7CiAgICBkZWYgcGVyc29ucyA9ICdzbHByaCcuc3BsaXQoJycpCiAgICBpbnQgY291bnQgPSBwZXJzb25zLnNpemUoKQogICAgLS1uCiAgICB3aGlsZSAobiA+PSBjb3VudCkgewogICAgICAgIG4gLT0gY291bnQKICAgICAgICBuID4+PSAxCiAgICB9CiAgICByZXR1cm4gcGVyc29uc1tuXQp9CgooMS4uMTAwMCkuZWFjaCB7CiAgICBhc3NlcnQgc2ltdWxhdGUoaXQpID09IHNvbHZlKGl0KQp9Cg==