def longest_sum_k(nums, k):
    earliest = {0: 0}
    total = best = 0
    for right, value in enumerate(nums, 1):
        total += value
        if total - k in earliest:
            best = max(best, right - earliest[total - k])
        earliest.setdefault(total, right)
    return best
