package nai5;

import java.io.*;
import java.util.*;

/**
 * @author Daniel "3ICE" Berezvai
 */
public class Nai5{
  static File in=new File("src/input8.txt");
  static File out=new File("src/output.txt");
  static BufferedReader r;
  static PrintWriter w;
  static ArrayList<Bridge> bridges=new ArrayList<>();
  static ArrayList<ArrayList<Bridge>> attempt=new ArrayList<>();
  static Integer[][] matrix;
  static int n;//3ICE: Shore points
  static int n2;//3ICE: Matrix size
  static int b;//3ICE: Bridge count
  static OrderedPowerSet<Bridge> p;
  static ArrayList<Cross> cross;

  public static void main(String[] args) throws IOException{
    r=new BufferedReader(new InputStreamReader(new FileInputStream(in)));
    w=new PrintWriter(out);
    //adott n, a partokon lévő pontok szám
    n=Integer.parseInt(r.readLine());
//    System.err.println("n = "+n);
    n2=n+2;
    //h a lehetséges hidak száma
    b=Integer.parseInt(r.readLine());
    matrix=new Integer[n2][n2];
    for(int i=0;i<n2;i++){
      for(int j=0;j<n2;j++){
        matrix[i][j]=0;
      }
    }
    for(int i=0;i<b;i++){
      //majd h sor, minden sorban 3 szám
      processOne(r.readLine());
    }
//    for(int i=0;i<n2;i++){
//      for(int j=0;j<n2;j++){
//        System.err.print(matrix[i][j]+" ");
//      }
//      System.err.println();
//    }
//    for(Bridge bridge : bridges){
//      System.err.println(bridge);
//    }

//    for(int x=1;x<=n;x++){
//      for(int y=1;y<=n;y++){
//        if(x<y){
//          //case 1
//        }else{
//          if(x>y){
//            //case 2
//          }else{
//            //if(x==y){
//            //case 3
//            //}
//          }
//        }
//      }
//    }

    p=new OrderedPowerSet<>(bridges);
    for(int i=1;i<=n;i++){
      for(LinkedHashSet<Bridge> l : p.getPermutationsList(i)){
        ArrayList<Bridge> tmp=new ArrayList<>();
        for(Bridge bridge : l){
          tmp.add(bridge);
        }
        attempt.add(tmp);
      }
    }
    int max=-1;
    for(ArrayList<Bridge> l : attempt){
      int tmp=process(l);
      if(tmp>max){
        for(Bridge bridge : l){
//          System.err.println("bridge = "+bridge);
        }
//        System.err.println("tmp = "+tmp);
        max=tmp;
      }
    }
    System.out.println(max);
    w.println(max);
    w.flush();
  }

  private static void processOne(String s){
    //az egyik part melyik pontjáról, a másik part melyik pontjára, mekkora haszonnal lehet hidat építeni
    String[] p=s.split("\\s+");
    int from=Integer.parseInt(p[0]);
    int to=Integer.parseInt(p[1]);
    int profit=Integer.parseInt(p[2]);
//    System.err.println("from = "+from);
//    System.err.println("to = "+to);
//    System.err.println("profit = "+profit);
    bridges.add(new Bridge(from, to, profit));
    matrix[from][to]=profit;
  }

  private static int process(ArrayList<Bridge> l){
    if(valid(l)){
      return total(l);
    }else{
      return 0;
    }
  }

  private static boolean valid(ArrayList<Bridge> l){
    //System.err.println("Valid called...");
    if(l.size()==1){
      return true;
    }
    for(int i=1;i<=n;i++){
      int f=0;
      int t=0;
      for(Bridge bridge : l){
        if(bridge.from==i){
          f++;
        }
        if(bridge.to==i){
          t++;
        }
      }
      if(f>1||t>1){
        return false;
      }
    }
    emptyCross();
    for(Bridge b : l){
      if(!tryAddCross(b.from, b.to)){
        return false;
      }
    }
    return true;
  }

  private static int total(ArrayList<Bridge> l){
    int sum=0;
    for(Bridge bridge : l){
      sum+=bridge.profit;
    }
    return sum;
  }

  private static void emptyCross(){
//    System.err.println("Emptied cross ");
    cross=new ArrayList<>();
  }

  private static boolean tryAddCross(int from, int to){
//    System.err.println("tryAddCross "+from+" "+to);
    for(Cross c : cross){
      if(c.from>=from&&c.to<=to){
//        System.err.println("Returned false.");
        return false;
      }else{
        if(c.from<=from&&c.to>=to){
//          System.err.println("Returned false.");
          return false;
        }else{
//          System.err.println("Adding "+new Cross(from, to));
        }
      }
    }
    cross.add(new Cross(from, to));
//    System.err.println("Returned true.");
    return true;
  }
//

  private static int T(int x, int y){
    return 0;
  }

  private static int C(int x, int y){
    return matrix[x+1][y+1];
  }

  private static int max(int a, int b){
    if(a>=b){
      return a;
    }else{
      return b;
    }
  }
}
