import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
// int a = in.nextInt();
// int b = in.nextInt();
// System.out.println(a + b);
int n = in.nextInt();
int m = in.nextInt();
n /= 10;
// 价格数组,从第1行开始
// 每行第一列为物品价格/10
// 第二列为附件1价格/10
// 第三列为附件2价格/10
int[][] ps = new int[m + 1][3];
// 满意度数组,从第1行开始
// 每行第一列为物品满意度(价格/10)
// 第二列为附件1满意度(价格/10)
// 第三列为附件2满意度(价格/10)
int[][] ws = new int[m + 1][3];
for (int i = 1; i <= m; i++) {
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
a /= 10;
b = b * a;
if (c == 0) {
// 物品
ps[i][0] = a;
ws[i][0] = b;
} else {
if (ps[c][1] == 0) {
// 附件1
ps[c][1] = a;
ws[c][1] = b;
} else {
// 附件2
ps[c][2] = a;
ws[c][2] = b;
}
}
}
int[][] arr = new int[m + 1][n + 1];
for (int i = 1; i <= m; i++) {
int a = ps[i][0];
int b = ws[i][0];
int c = ps[i][1];
int d = ws[i][1];
int e = ps[i][2];
int f = ws[i][2];
for (int j = 1; j <= n; j++) {
arr[i][j] = j >= a ? Math.max(arr[i - 1][j], arr[i - 1][j - a] + b) : arr[i - 1][j];
arr[i][j] = j >= (a + c) ? Math.max(arr[i][j], arr[i - 1][j - a - c] + b + d) : arr[i][j];
arr[i][j] = j >= (a + e) ? Math.max(arr[i][j], arr[i - 1][j - a - e] + b + f) : arr[i][j];
arr[i][j] = j >= (a + c + e) ? Math.max(arr[i][j], arr[i - 1][j - a - c - e] + b + d + f) : arr[i][j];
}
}
System.out.println(arr[m][n]*10);
}
}
}