#include <bits/stdc++.h>
using namespace std;
namespace debug {
void __(short x) { cout << x; }
void __(unsigned x) { cout << x; }
void __(int x) { cout << x; }
void __(long long x) { cout << x; }
void __(unsigned long long x) { cout << x; }
void __(double x) { cout << x; }
void __(long double x) { cout << x; }
void __(char x) { cout << x; }
void __(const char* x) { cout << x; }
void __(const string& x) { cout << x; }
void __(bool x) { cout << (x ? "true" : "false"); }
template <class P1, class P2>
void __(const pair<P1, P2>& x) {
  __("("), __(x.first), __(", "), __(x.second), __(")");
}
template <class T>
void __(const vector<T>& x) {
  __("{");
  bool _ffs = 0;
  for (const auto& v : x) __(_ffs ? ", " : ""), __(v), _ffs = 1;
  __("}");
}
template <class T>
void __(const set<T>& x) {
  __("{");
  bool _ffs = 0;
  for (const auto& v : x) __(_ffs ? ", " : ""), __(v), _ffs = 1;
  __("}");
}
template <class T, class T2>
void __(const map<T, T2>& x) {
  __("{");
  bool _ffs = 0;
  for (const auto& v : x)
    __(_ffs ? ", " : ""), __(make_pair(v.first, v.second)), _ffs = 1;
  __("}");
}
void screm() { __("\n"); }
template <class T1, class... T2>
void screm(const T1& t1, const T2&... t2) {
  __(t1);
  if (sizeof...(t2))
    __(" | "), screm(t2...);
  else
    __("\n");
}
void pr() { __("\n"); }
template <class T1, class... T2>
void pr(const T1& t1, const T2&... t2) {
  __(t1);
  if (sizeof...(t2))
    __(" "), pr(t2...);
  else
    __("\n");
}
}  // namespace debug
using namespace debug;
const int MN = 2e5 + 5;
int t, n, k, i, x, y, w, sz[MN], dp[MN][2];
long long A, B;
vector<pair<int, int> > adj[MN];
void go(int n, int p) {
  sz[n] = 1;
  for (auto v : adj[n]) {
    if (v.first == p) continue;
    go(v.first, n);
    B += 1LL * v.second * min(sz[v.first], 2 * k - sz[v.first]);
    sz[n] += sz[v.first];
  }
}
void go2(int n, int p) {
  for (auto v : adj[n]) {
    if (v.first == p) {
      if (sz[n] & 1) A += v.second;
    } else
      go2(v.first, n);
  }
}
int main() {
  scanf("%d", &t);
  for (int q = (1); q <= (t); q++) {
    scanf("%d", &n);
    k = n;
    A = B = 0;
    for (int i = (1); i <= (2 * n); i++) adj[i].clear();
    for (int i = (1); i <= (2 * n - 1); i++) {
      scanf("%d%d%d", &x, &y, &w);
      adj[x].push_back({y, w});
      adj[y].push_back({x, w});
    }
    go(1, 0);
    go2(1, 0);
    printf("%lld %lld\n", A, B);
  }
  return 0;
}
