#include <bits/stdc++.h>
using namespace std;

using ll = int64_t;
void solve(){
	int N;
	cin >> N;
	vector<vector<pair<ll, ll> > > chips(2);
	for(int i = 0; i < N; i++){
		ll pos, cnt;
		cin >> pos >> cnt;
		char c;
		cin >> c;
		chips[c == 'R' ? 0 : 1].push_back({pos, cnt});
	}
	vector<ll> tcnt(2);
	for(int t = 0; t < 2; t++){
		for(auto [pos, cnt] : chips[t]){
			tcnt[t] += cnt;
		}
	}
	if(tcnt[0] == tcnt[1]){
		cout << "Draw " << 0 << ' ' << 0 << '\n';
		return;
	}
	ll INF = int(1e6) + int(1e5);
	if(tcnt[0] > tcnt[1]){
		bool can_draw = false;
		ll delta = 0;
		int ind = (int)chips[0].size() - 1;
		ll left = 0;
		for(int i = (int)chips[1].size() - 1; i >= 0; i--){
			auto [pos, cnt] = chips[1][i];
			delta += (INF - pos) * cnt;
			left += cnt;
			while(left > 0){
				ll take = min(left, chips[0][ind].second);
				delta -= (INF - chips[0][ind].first) * take;
				left -= take;
				chips[0][ind].second -= take;
				if(chips[0][ind].second == 0) ind--;
			}
			if(left == 0 && delta <= -2){
				can_draw = true;
			}
		}
		if(can_draw){
			cout << "Draw";
			cout << ' ';
			cout << (chips[0].back().first) << " +" << '\n';
		} else {
			cout << "First";
			cout << ' ';
			cout << (chips[0].back().first) << " +" << '\n';
		}
	} else {
		bool can_draw = false;
		ll delta = 0;
		int ind = (int)chips[1].size() - 1;
		ll left = 0;
		for(int i = (int)chips[0].size() - 1; i >= 0; i--){
			auto [pos, cnt] = chips[0][i];
			delta += (INF - pos) * cnt;
			left += cnt;
			while(left > 0){
				ll take = min(left, chips[1][ind].second);
				delta -= (INF - chips[1][ind].first) * take;
				left -= take;
				chips[1][ind].second -= take;
				if(chips[1][ind].second == 0) ind--;
			}
			if(left == 0 && delta <= -1){
				can_draw = true;
			}
		}
		if(can_draw){
			cout << "Draw";
			cout << ' ';
			cout << (chips[0].back().first) << " +" << '\n';
		} else {
			cout << "Second";
			cout << '\n';
		}
	}
}

int main(){
	ios_base::sync_with_stdio(false), cin.tie(nullptr);
	int T;
	cin >> T;
	while(T--) solve();
}
