Implement nucleus sampling (top-p sampling) from scratch in Python, ensuring efficient token selection and probability normalization.
Implement sample_top_p(probabilities, p, seed), where probabilities is a non-empty list of nonnegative numeric token probabilities, p is in (0, 1], and seed makes sampling reproducible. Return the selected token index as an integer. Normalize inputs that do not already sum to one, retain the smallest highest-probability set whose cumulative normalized probability is at least p, renormalize that set, and sample one index from it.
def sample_top_p(probabilities, p, seed):