1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
#define _USE_MATH_DEFINES
#include <bits/stdc++.h>
#ifdef LOC
#include "debuglib.h"
#else
#define deb(...)
#define DBP(...)
#endif
using namespace std;
using   ll         = long long;
using   Vi         = vector<int>;
using   Pii        = pair<int, int>;
#define pb           push_back
#define mp           make_pair
#define x            first
#define y            second
#define rep(i, b, e) for (int i = (b); i < (e); i++)
#define each(a, x)   for (auto& a : (x))
#define all(x)       (x).begin(), (x).end()
#define sz(x)        int((x).size())

int n;
vector<vector<Pii>> programs; // 0 = read&add, 1 = add, 2 = write

Vi pos;
vector<ll> vars;
ll globalVar;

ll solve(int remain) {
	if (remain == 0) {
		return globalVar;
	}

	ll ret = INT64_MAX;

	rep(i, 0, n) {
		if (pos[i] >= sz(programs[i])) continue;
		Pii inst = programs[i][pos[i]];
		pos[i]++;

		if (inst.x == 0) {
			ll old = vars[i];
			vars[i] = globalVar + inst.y;
			ret = min(ret, solve(remain-1));
			vars[i] = old;
		} else if (inst.x == 1) {
			ll old = vars[i];
			vars[i] += inst.y;
			ret = min(ret, solve(remain-1));
			vars[i] = old;
		} else {
			ll old = globalVar;
			globalVar = vars[i];
			ret = min(ret, solve(remain-1));
			globalVar = old;
		}

		pos[i]--;
	}

	return ret;
}

void run() {
	cin >> n;
	programs.assign(n, {});
	int total = 0;

	each(prog, programs) {
		int l; cin >> l;
		while (l--) {
			string t; cin >> t;
			if (t == "W") {
				while (!prog.empty() && prog.back().x != 2) {
					prog.pop_back();
				}
				prog.pb({0, 0});
			} else if (t == "Z") {
				prog.pb({2, 0});
			} else {
				int k; cin >> k;
				if (t == "-") k = -k;
				if (!prog.empty() && prog.back().x != 2) {
					prog.back().y += k;
				} else {
					prog.pb({1, k});
				}
			}
		}
		while (!prog.empty() && prog.back().x != 2) {
			prog.pop_back();
		}
		total += sz(prog);
	}

	pos.assign(n, 0);
	vars.assign(n, 0);
	globalVar = 0;
	cout << solve(total) << '\n';
#ifdef LOC
	cout << flush;
#endif
}

int main() {
	cin.sync_with_stdio(0); cin.tie(0);
	cout << fixed << setprecision(10);
	int t; cin >> t;
	while (t--) run();
	return 0;
}