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)
}
