#include<iostream>
#include<string>   // because of HR
#include<fstream>
#include<vector>
#include<numeric>  // accumulate
using namespace std;

int tallyRunning(ifstream&);
template<typename Iter> void printTeam(Iter, Iter);

int main(int argc, char* argv[]){
    ifstream file(argv[1]);
    vector<int> visitor;
    vector<int> home;

    char endChar;
    file >> endChar;
    while(endChar != '0'){
        file.putback(endChar);
        visitor.push_back(tallyRunning(file));
        home.push_back(tallyRunning(file));
        file >> endChar;
    }
    file.close();

    cout << "Team ";
    for(int i = 1; i <= visitor.size(); ++i)
        cout << i << ' ';
    cout << 'R' << endl;
    cout << "VISITOR ";
    printTeam(visitor.begin(), visitor.end());
    cout << "HOME ";
    printTeam(home.begin(), home.end());

    return 0;
}

int tallyRunning(ifstream& _file){
//  bases stores information relating to the configuration of players on bases
//  The four rightmost bits represent the bases: (third)(second)(first)(home)
//  A bitshift represents a cycle.  When bits move beyond third, they are tallied
    string run = "";
    _file >> run;
    int score = 0;
    int bases = 0;
    while(run != "#" && run != "%"){
        bases += 1;
        if(run == "S")
            bases <<= 1;
        else if(run == "D")
            bases <<= 2;
        else if(run == "T")
            bases <<= 3;
        else
            bases <<= 4;
        while(bases > 0x0F){
            score += (bases & 0x10) >> 4;
            bases = ((bases & 0xF0) >> 5) << 4 | bases & 0x0F;
        }
        _file >> run;
    }
    return score;
}

template<typename Iter>
void printTeam(Iter _begin, Iter _end){
    for(Iter it = _begin; it != _end; ++it)
        cout << *it << ' ';
    cout << accumulate(_begin, _end, 0) << endl;
}