#include <bits/stdc++.h>
using namespace std;
#define ll long long 
struct typ{
    int a,b;
    long long c;
};
bool comon(typ a,typ b){
    return a.a==b.a || a.a==b.b || a.b==b.a || a.b==b.b;
}
void solve(){
    int n;
    cin>>n;
    typ g[n];
    for(int i=0;i<n;i++){
        int a,b,c;
        cin>>a>>b>>c;
        g[i]={a,b,c};
    }
    if(n==1){
        cout<<g[0].c<<'\n';
        return; 
    }
    // if(n==2){
    //     if(comon(g[0],g[1])){
    //         cout<<g[0].c+g[1].c<<'\n';
    //     }
    //     else{
    //         cout<<max(g[0].c,g[1].c)<<'\n';
    //     }
    //     return;
    // }
    // if(n==3){
    //     ll mx=max(g[0].c,max(g[1].c,g[2].c));
    //     if(comon(g[0],g[1])&&comon(g[0],g[2])&&comon(g[1],g[2])){
    //         mx=max(mx,g[0].c+g[1].c+g[2].c);
    //     }
    //     if(comon(g[0],g[1])){
    //         mx=max(mx,g[0].c+g[1].c);
    //     }
    //     if(comon(g[1],g[2])){
    //         mx=max(g[0].c+g[2].c,mx);
    //     }
    //     if(comon(g[2],g[0])){
    //         mx=max(mx,g[2].c+g[0].c);
    //     }
    //     cout<<mx;
    //     return;
    // }
    vector<int> gr[2*n+10];
    set<int> grs[2*n+10];
    for(int i=0;i<n;i++){
        auto t=g[i];
        gr[t.a].push_back(i);
        grs[t.a].insert(i);
        grs[t.b].insert(i);
        gr[t.b].push_back(i);
    }
    map<pair<int,int>,int> grsg;
    for(int i=0;i<n;i++){
        grsg[{g[i].a,g[i].b}]=g[i].c;
    }
    ll mx=-1;
    for(ll i=0;i<2*n+10;i++){
        ll s=0;
        for(auto j:gr[i]){
            s+=g[j].c;
        }
        if(mx<s){
            mx=s;
        }
    }
    // cout<<"first :"<<mx<<'\n';
    for(int i=0;i<n;i++){
        typ t=g[i];

        for(int i2:gr[t.b]){
            if(i2<=i){
                continue;
            }
            typ t2=g[i2];
            ll other;
            if(t.b==t2.a)
                other=t2.b;
            else
                other=t2.a;
            if(other<t.a){
                if(grsg.count({other,t.a})){
                    mx=max(mx,t.c+t2.c+grsg[{other,t.a}]);
                }
            }
            else{
                if(grsg.count({t.a,other})){
                    mx=max(mx,t.c+t2.c+grsg[{t.a,other}]);
                }
            }
        }
    }
    cout<<mx<<'\n';
}
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    ll t;
    cin>>t;
    for(;t>0;t--){
        solve();
    }
}
