import java.util.Scanner;

public class GFG {
    public static void main(String[] args) {
      Scanner s=new Scanner(System.in);
      int t=s.nextInt();
      while(t-->0) {
          int n=s.nextInt();
          long a[]=new long[n];
          for(int i=0;i<n;i++) {
              a[i]=s.nextLong();
          }
          long negkey=0;
          long negvalue=0;
          long poskey=0;
          long posval=0;
          long ans=Integer.MIN_VALUE,anslen=0;
          for(long i:a) {
              if(i<0) {
                  long x=posval+i;
                 // 
                  if(anslen<poskey+1) {
                      anslen=poskey+1;
                      ans=x;
                  }
                  else if(ans==poskey+1) {
                    ans=Math.max(ans,x);
                  }
                  if(poskey+1!=negkey) {
                     negvalue=x;
                     negkey=poskey+1;
                  }
                  else if(poskey+1==negkey) {
                      negvalue=Math.max(negvalue,x);
                  }
              }else {
                  long x=negvalue+i;
                  if(anslen<negkey+1) {
                    anslen=negkey+1;
                    ans=x;
                }
                else if(ans==negkey+1) {
                  ans=Math.max(ans,x);
                }
                  if(negkey+1!=poskey){
                    poskey=negkey+1;
                     posval=x;
                  }
                  else if(negkey+1==poskey) {
                      posval=Math.max(posval,x);
                  }
              }
          }
          System.out.println(ans);
      }
      s.close();
    }
}