#include <bits/stdc++.h>
using namespace std;
#define ll long long
class Player{
private:
int runs,balls,sixes,fours,position;
string id;
public:
Player(int runs,int balls,int sixes,int fours,string id,int position) {
this->runs=runs;
this->balls=balls;
this->sixes=sixes;
this->fours=fours;
this->id=id;
this->position=position;
}
void setRuns(int Runs) {
runs+=Runs;
if(Runs==6) sixes++;
if(Runs==4) fours++;
}
void dotBalls() {
balls++;
}
int getRuns() {
return runs;
}
string getId() {
return id;
}
int getPosition() {
return position;
}
int getSixes() {
return sixes;
}
int getfours() {
return fours;
}
int getballs() {
return balls;
}
};
class Cricket {
int overs;
int players;
public:
Cricket(int players,int overs) {
this->overs=overs;
this->players=players;
}
void printScorecard(vector<Player> players,int score,int over,int balls,int b1,int b2,int wickets) {
for(int i=0; i<players.size(); i++) {
Player item = players[i];
cout<<item.getId();
if(item.getPosition() == b1 || item.getPosition() == b2) {
cout<<"* ";
}else {
cout<<" ";
}
cout<<item.getRuns()<<" "<<item.getfours()<<" "<<item.getSixes()<<" "
<<item.getballs()<<endl;
}
cout<<"Total: "<<score<<"/"<<wickets<<endl;
if(balls==0) {
cout<<"Overs: "<<over<<endl;
}else {
cout<<"Overs: "<<over<<"."<<balls<<endl;
}
}
pair<long,int> innings() {
queue<Player> team;
long Score = 0;
vector<Player> scorecard;
vector<string> lineup(players);
for(int i=0; i<players; i++) cin>>lineup[i];
for(int i=0; i<lineup.size(); i++) {
team.push(Player(0,0,0,0,lineup[i],i));
scorecard.push_back(Player(0,0,0,0,lineup[i],i));
}
Player b1 = team.front();
team.pop();
Player b2 = team.front();
team.pop();
Player strike = b1;
int wickets = 0;
for(int over = 1; over<=overs; over++) {
int balls = 6;
cout<<"Over: "<<over<<endl;
while(balls>0) {
string ball;
cin>>ball;
string run = "0123456";
if(run.find(ball)!=string::npos) {
ll val = stoi(ball);
strike.setRuns(val);
strike.dotBalls();
Score+=val;
if(strike.getId()==b1.getId()) {
b1 = strike;
if(val%2) strike = b2;
}else {
b2 = strike;
if(val%2) strike = b1;
}
balls--;
}else if(ball=="W") {
wickets++;
strike.dotBalls();
scorecard[strike.getPosition()]=strike;
if(strike.getId()==b1.getId()) {
if(!team.empty()) {
b1=team.front();
team.pop();
strike=b1;
}else {
scorecard[b2.getPosition()]=b2;
printScorecard(scorecard,Score,over,(6-balls)+1,b2.getPosition(),-1,wickets);
return {Score,wickets};
}
}else {
if(!team.empty()) {
b2=team.front();
team.pop();
strike=b2;
}else {
scorecard[b1.getPosition()]=b1;
printScorecard(scorecard,Score,over,(6-balls)+1,b1.getPosition(),-1,wickets);
return {Score,wickets};
}
}
balls--;
}else if(ball=="Wd") {
Score++;
}
}
if(strike.getId()==b1.getId()) {
b1 = strike;
strike = b2;
}else {
b2 = strike;
strike = b1;
}
scorecard[b1.getPosition()]=b1;
scorecard[b2.getPosition()]=b2;
printScorecard(scorecard,Score,over,0,b1.getPosition(),b2.getPosition(),wickets);
}
return {Score,wickets};
}
};
int main() {
int t;
cin>>t;
while(t--) {
// TESTCASES
int players,overs;
cin>>players>>overs;
Cricket match(players,overs);
pair<long,int> team1 = match.innings();
pair<long,int> team2 = match.innings();
if(team1.first>team2.first) {
cout<<"Team 1 won the match by "<<team1.first-team2.first<<" runs!"<<endl;
}else {
cout<<"Team 2 won the match by "<<team2.second - players<<" wickets!"<<endl;
}
}
return 0;
}