#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
#define INF 0x3f3f3f3f
#define N 505
int mp[N][N], vis[N], wage[N], combine[N], S, T, ans, mincut, m, n;

void search() {
    memset(vis, 0, sizeof(vis));
    memset(wage, 0, sizeof(wage));
    S = T = -1;
    int ma, index;
    for(int i = 0; i < n; i++) {
        ma = -INF;
        for(int j = 0; j < n; j++) {
            if(!vis[j] && !combine[j] && wage[j] > ma) {
                ma = wage[j]; index = j;
            }
        }
        if(T == index) return ;
        vis[index] = 1;
        S = T; T = index;
        mincut = ma;
        for(int j = 0; j < n; j++) {
            if(!vis[j] && !combine[j]) wage[j] += mp[T][j];
        }
    }
}

int Stoer_Wagner() {
    ans = INF;
    memset(combine, 0, sizeof(combine));
    for(int i = 0; i < n - 1; i++) {
        search();
        combine[T] = 1;
        if(ans > mincut) ans = mincut;
        for(int j = 0; j < n; j++) {
            mp[S][j] += mp[T][j];
            mp[j][S] += mp[j][T];
        }
    }
    return ans;
}

int main() {
    while(~scanf("%d%d", &n, &m)) {
        memset(mp, 0, sizeof(mp));
        for(int i = 1; i <= m; i++) {
            int u, v, w;
            scanf("%d%d%d", &u, &v, &w);
            mp[u][v] += w;
            mp[v][u] += w;
        }
        printf("%d\n", Stoer_Wagner());
    }
    return 0;
}