#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
template <typename T, typename U>
inline void amin(T &x, U y) {
  if (y < x) x = y;
}
template <typename T, typename U>
inline void amax(T &x, U y) {
  if (x < y) x = y;
}
template <typename T>
inline void write(T x) {
  int i = 20;
  char buf[21];
  buf[20] = '\n';
  do {
    buf[--i] = x % 10 + '0';
    x /= 10;
  } while (x);
  do {
    putchar(buf[i]);
  } while (buf[i++] != '\n');
}
template <typename T>
inline T readInt() {
  T n = 0, s = 1;
  char p = getchar();
  if (p == '-') s = -1;
  while ((p < '0' || p > '9') && p != EOF && p != '-') p = getchar();
  if (p == '-') s = -1, p = getchar();
  while (p >= '0' && p <= '9') {
    n = (n << 3) + (n << 1) + (p - '0');
    p = getchar();
  }
  return n * s;
}
class Debugger {
 public:
  Debugger(const std::string &_separator = " - ")
      : first(true), separator(_separator) {}
  template <typename ObjectType>
  Debugger &operator,(const ObjectType &v) {
    if (!first)
    std:
      cerr << separator;
    std::cerr << v;
    first = false;
    return *this;
  }
  ~Debugger() {
  std:
    cerr << endl;
  }

 private:
  bool first;
  std::string separator;
};
void solve() {
  int n;
  long long int sum = 0, cur, prev;
  scanf("%d", &n);
  if (n == 1) {
    cin >> sum;
    cout << sum << endl;
    return;
  }
  scanf("%lld", &prev);
  long long int curm = prev;
  for (int i = 0; i < n - 1; i++) {
    scanf("%lld", &cur);
    if ((prev > 0 and cur < 0) or (prev < 0 and cur > 0)) {
      sum += (int)curm;
      curm = LLONG_MIN;
    }
    curm = max(curm, cur);
    prev = cur;
  }
  printf("%lld\n", sum + curm);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i += 1) {
    solve();
  }
  return 0;
}
