#include <bits/stdc++.h>
using namespace std;
map<pair<int,int>, int> mapa;   
vector<vector<int>> graph;
vector<bool> visited;
// int dfs(int i, int n, int a){
//    if(i==1){
//     int maxi= 0 ;
//     for(auto u:graph[n]){
//         maxi = max(maxi,dfs(2,u,a));
//     }
    
//         return maxi;
//    }
//    if(i==2){
//     // if(count)
//    }
//     if( i == 3){

//         for(auto u:graph[n]){
//             if(mapa[{min(a,u)}].count()){
//                 return mapa[{min(a,u), max(a,u)}]+mapa[{min(a,n), max(a,n)}]+mapa[{min(n,u), max(n,u)}];
//             }
//         }
//     }
// }


int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int t;
    cin>>t;
    for(int uf=0;uf<t;uf++){
        int n;
        cin>>n;
        // vector<vector<int>((n+1)*2, vector<int>());
        vector<int> h((n+1)*2-1, 0 );
        graph.resize((n+1)*2-1, vector<int>());
        mapa.clear();     
        int maxi = 0;
        for(int i=0;i<n;i++){
            int a,b,c;
            cin>>a>>b>>c;   
            h[a]+=c;
            h[b]+=c;
            maxi = max({maxi,h[a],h[b]});
            mapa[{min(a,b),max(a,b)}]= c;
            graph[a].push_back(b);
            graph[b].push_back(a);
        }
        // for(auto u: graph[4]){
            // cout<<1;
        // }
            for(int i=1;i<=n*2;i++){
                for(auto u:graph[i]){
                    for(auto v:graph[u]){
                        if(u==i) continue;
                        for(auto g:graph[v]){
                            if(g==i){
                                maxi = max(maxi,
                                mapa[{min(i,u),max(i,u)}]+
                                mapa[{min(v,u),max(v,u)}]+
                                mapa[{min(i,v),max(i,v)}]
                                );
                            }
                        }
                    }
                }


            }

                // cout<<mapa[{5,4}]<<" ";
                cout<<maxi<<endl;
        

     
    }

}