def kadanes(a):
    max_so_far = -float('inf') - 1
    max_ending_here = 0
    start = 0
    end = 0
    s = 0
    for i in range(0,len(a)):
        max_ending_here += a[i]

        if max_so_far < max_ending_here:
            max_so_far = max_ending_here
            start = s
            end = i

        if max_ending_here < 0:
            max_ending_here = 0
            s = i+1

    return (max_so_far, start, end)


def sign(a, b):
    if (a > 0 and b > 0) or (a < 0 and b < 0):
        return True
    return False


t = int(input())
while t:
    max_len = 0
    sum_ = 0
    n = int(input())
    a = list(map(int, input().split()))
    i = 0
    while i < n:
        curr = a[i]
        j = i+1
        while j < n and sign(a[i], a[j]):
            curr = max(curr, a[j])
            j += 1
        sum_ += curr
        i = j
    print(sum_)
    t -= 1
