#include <bits/stdc++.h>
using namespace std;
int s, sm[4][4], t, v, ans, tans, m[4][4], e[4][4], d[4], fa[4];
vector<int> odds;
const int S[] = {0, 0, 0, 1, 1, 2};
const int T[] = {1, 2, 3, 2, 3, 3};
bool cnt(int a, int b) {
  if (a > b) swap(a, b);
  return e[a][b];
}
int fd(int i) { return ~fa[i] ? fd(fa[i]) : i; }
void dfs(int i) {
  if (i == 6) {
    odds.clear();
    for (int i = 0; i < 4; ++i) {
      if (d[i] & 1) odds.push_back(i);
    }
    if (odds.size() > 2) return;
    if (odds.empty())
      for (int i = 0; i < 4; ++i)
        if (d[i]) {
          odds.push_back(i);
          break;
        }
    memset(fa, -1, sizeof fa);
    tans = 0;
    for (int i = 0; i < 4; ++i)
      for (int j = 0; j < i; ++j)
        if (e[j][i]) {
          if (fd(i) != fd(j)) fa[fd(i)] = fd(j);
        }
    for (int i = 0; i < 4; ++i)
      for (int j = 0; j <= i; ++j)
        if (fd(j) == fd(odds[0])) tans += sm[j][i];
    ans = max(ans, std::remove_reference<decltype(ans)>::type(tans));
    return;
  }
  dfs(i + 1);
  if (e[S[i]][T[i]]) {
    sm[S[i]][T[i]] -= m[S[i]][T[i]];
    --d[S[i]];
    --d[T[i]];
    --e[S[i]][T[i]];
    dfs(i + 1);
    sm[S[i]][T[i]] += m[S[i]][T[i]];
    ++d[S[i]];
    ++d[T[i]];
    ++e[S[i]][T[i]];
  }
}
int main() {
  int ___L___74;
  scanf("%d", &___L___74);
  while (___L___74--) {
    scanf("%d%d%d", &s, &v, &t);
    ++d[--s];
    ++d[--t];
    if (s > t) swap(s, t);
    ++e[s][t];
    sm[s][t] += v;
    if (m[s][t])
      m[s][t] = min(m[s][t], std::remove_reference<decltype(m[s][t])>::type(v));
    else
      m[s][t] = v;
  }
  dfs(0);
  printf("%d\n", ans);
}
