import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.*;

public class psykibaek {
    public static void main(String[] args) throws Exception{
        Scanner scanner = new Scanner(System.in);
        int totCase = scanner.nextInt();
        while(totCase-->0){
            int n = scanner.nextInt();
            List<Long> nums = new ArrayList<>();
            for (int i = 0; i < n; i++) {
                nums.add(scanner.nextLong());
            }

            long curNum = nums.get(0);
            long curSum = curNum;
            if(n == 1){
                System.out.println(curNum);
                continue;
            }

            List<Long> sums = new ArrayList<>();
            for (int i = 1; i < n; i++) {
                if(0 > curNum * nums.get(i)){
                    curSum += nums.get(i);
                    curNum = nums.get(i);
                } else {
                    sums.add(curSum);
                    curNum = nums.get(i);
                    curSum = nums.get(i);
                }

                if(i == n-1){
                    sums.add(curSum);
                }
                    // 이전넘버와 현재넘버곱이 음수라면
                    // 현재넘버의 합을 추가하고 이전넘버로 현재넘버를바꿔준다

                    // 이전넘버와 현재넘버곱이 양수라면
                    // 합을 합리스트에 추가하고, 현재넘버 초기화하고
                    // 합을현재넘버로바꾼다

                    //여기가 마지막이라면, 일단 합을 합리스트에 추가한다
            }
            Collections.sort(sums, Collections.reverseOrder());
            System.out.println(sums.get(0));
        }
    }
}
