#include <iostream>
#include <cstdio>
#include <string>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
//英语 看博友分析
map<string,int> mp;//名字 年龄
struct nod{
string name;
int zhi;
};
map<string,vector<nod> > G;
vector<nod> ve;
bool cmp(nod a,nod b)
{
if(a.zhi==b.zhi)
{
return a.name<b.name;
}else
{
return a.zhi>b.zhi;
}
}
void dfs(string s)
{
for(int i=0;i<G[s].size();i++)
{
string ts=G[s][i].name;
int tz=G[s][i].zhi;
mp[ts]=mp[s]-tz;
ve.push_back((nod){ts,mp[ts]});
dfs(ts);
}
}
int main()
{
int T;
cin>>T;
for(int o=0;o<T;o++)
{
mp.clear();
ve.clear();
G.clear();
mp["Ted"]=100;
ve.push_back((nod){"Ted",100});
int m;
cin>>m;
for(int i=0;i<m;i++)
{
string fa,son;
int zhi;
cin>>fa>>son>>zhi;
G[fa].push_back((nod){son,zhi});
}
dfs("Ted");
sort(ve.begin(),ve.end(),cmp);
cout<<"DATASET "<<o+1<<endl;
for(int i=1;i<ve.size();i++)
{
cout<<ve[i].name<<" "<<ve[i].zhi<<endl;
}
}
return 0;
}