#include <iostream>  
#include <vector>  
#include<algorithm>
using namespace std; 

typedef vector<vector<int> > Matrix;

const int INF = 100000000;
Matrix d; // グラフの距離を格納した2次元配列（隣接行列）
          // d[u][v]は辺e=(u,v)のコスト（辺が存在しない場合はINF、ただしd[i][i]=0）

void warshall_floyd(int n) { // nは頂点数
  for (int i = 0; i < n; i++)      // 経由する頂点
    for (int j = 0; j < n; j++)    // 開始頂点
      for (int k = 0; k < n; k++)  // 終端
        d[j][k] = min(d[j][k], d[j][i] + d[i][k]);
}

int main() {
  int n;
  int ans_min = 100000;
  int ans[10];

  for(int i=0; i<10; i++){
      ans[i] = 0;
  }

  d = Matrix(10, vector<int>(10, INF));
  for (int i = 0; i < 10; i++) d[i][i] = 0;
  
  cin >> n;
  for (int i = 0; i < n; i++) {
    int from, to, cost;
    cin >> from >> to >> cost;
    d[from][to] = cost;
    d[to][from] = cost;
  }
  
  warshall_floyd(10);
  
  for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
      if (i != j && d[i][j] != INF)
        //cout << i << "から" << j << "へのコスト: " << d[i][j] << endl;
        ans[i] += d[i][j];
    }
    //cout<< ans[i]<<endl;
    if(ans_min>ans[i] &&ans[i] !=0){
        ans_min=ans[i];
    }
  }

  cout<<ans_min<<endl;
  return 0;
}