
//package CodeForces;

import java.util.Arrays;
import java.util.Scanner;

public class sol {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		for (int t = 0; t < T; t++) {
			int n = sc.nextInt();
//			int k = sc.nextInt();
			int arr[] = new int[n];
			for (int i = 0; i < n; i++) {
				arr[i] = sc.nextInt();
			}
			double sum1 = maxSumOfAlternateSeq(arr);
			reverse(arr);
			double sum2 = maxSumOfAlternateSeq(arr);
			System.out.println(Math.max(sum1, sum2));
		}
		sc.close();
	}

	private static void reverse(int[] arr) {
		for (int i = 0; i < arr.length / 2; i++) {
			int temp = arr[i];
			arr[i] = arr[arr.length - i - 1];
			arr[arr.length - i - 1] = temp;
		}
	}

//	private static int minReplacements(int[] arr) {
//		int n = arr.length;
//		HashMap<Integer, Integer> hm = new HashMap<>();
//		for (int i = 0; i < n / 2; i++) {
//			if (!hm.containsKey(arr[i] + arr[n - i - 1])) {
//				hm.put(arr[i] + arr[n - i - 1], 1);
//			} else
//				hm.put(arr[i] + arr[n - i - 1], hm.get(arr[i] + arr[n - i - 1]) + 1);
//		}
//		int freq = -1;
//		for (int f : hm.values()) {
//			freq = Math.max(freq, f);
//		}
//		int sumFreq = 0;
//		for (int f : hm.values()) {
//			sumFreq += f;
//		}
//		sumFreq -= freq;
//		return sumFreq;
//	}

	private static double maxSumOfAlternateSeq(int arr[]) {
		int dp[] = new int[arr.length];
		Arrays.fill(dp, 1);
		double sum[] = new double[arr.length];
		for (int i = 0; i < arr.length; i++)
			sum[i] = arr[i];
		int max = -1;
		double finalSum = sum[0];
		for (int i = 1; i < arr.length; i++) {
			for (int j = 0; j < i; j++) {
				if (arr[i] * arr[j] < 0) {
					if (dp[i] < dp[j] + 1) {
						dp[i] = dp[j] + 1;
						sum[i] = sum[j] + arr[i];
					} else if (dp[i] == dp[j] + 1) {
						sum[i] = Math.max(sum[i], sum[j] + arr[i]);
					}
				}
			}
			if (max <= dp[i]) {
				if (max == dp[i]) {
					finalSum = Math.max(finalSum, sum[i]);
				} else {
					max = dp[i];
					finalSum = sum[i];
				}
			}
		}
//		System.out.println("LPS " + Arrays.toString(dp));
//		System.out.println("SUM " + Arrays.toString(sum));
//		System.out.println("Final sum " + finalSum);
		return finalSum;
	}

//	private static void generateArray(int n) {
//		if (n % 4 == 0) {
//			System.out.println("YES");
//			int num = 2;
//			for (int i = 0; i < n / 2; i++) {
//				System.out.print(num + " ");
//				if (i % 2 == 1) {
//					num += 2;
//				}
//				num += 2;
//			}
//			num = 2;
//			for (int i = 0; i < n / 2; i++) {
//				if (i % 2 == 0)
//					System.out.print(num - 1 + " ");
//				else
//					System.out.print(num + 1 + " ");
//				if (i % 2 == 1) {
//					num += 2;
//				}
//				num += 2;
//			}
//			System.out.println();
//		} else {
//			System.out.println("NO");
//		}
//	}

//	private static int getX(int n) {
//		int pro = 4;
//		while (n % (pro - 1) != 0) {
//			pro *= 2;
//		}
//		return n / (pro - 1);
//	}
}
