'''
解题思路:
动态规划:带条件的0-1背包问题
'''
#==========================================
# 读入原始数据,背包数除10
w_max,n = map(int,input().strip().split())
w_max = w_max//10
#print('w_max=',w_max,'n=',n)
T = []
for i in range(n):
v,w,q = map(int,input().strip().split())
T.append([v//10,w*v//10,q])
#print('T=',T)
#==========================================
# 处理主件
W = [[] for _ in range(n)]
V = [[] for _ in range(n)]
I = []
for i in range(n):
if T[i][2]==0:
W[i].append(T[i][0])
V[i].append(T[i][1])
I.append(i)
#print('W=',W)
#print('V=',V)
#print('I=',I)
#==========================================
# 处理附件
for i in range(n):
if T[i][2]>0:
ii = T[i][2]-1
W[ii].append(T[i][0])
V[ii].append(T[i][1])
#print('W=',W)
#print('V=',V)
#==========================================
# 附件的排列组合
for i in range(n):
if len(W[i])==2:
W[i] = [W[i][0], W[i][0]+W[i][1]]
V[i] = [V[i][0], V[i][0]+V[i][1]]
if len(W[i])==3:
W[i] = [W[i][0], W[i][0]+W[i][1], W[i][0]+W[i][2], W[i][0]+W[i][1]+W[i][2]]
V[i] = [V[i][0], V[i][0]+V[i][1], V[i][0]+V[i][2], V[i][0]+V[i][1]+V[i][2]]
#print('W=',W)
#print('V=',V)
#==========================================
DP = [[0]*(w_max+1) for _ in range(len(I)+1)]
for i in range(1,len(I)+1):
ii = I[i-1]
for j in range(1,w_max+1):
t_max = DP[i-1][j]
for k in range(len(W[ii])):
W_i = W[ii][k]
V_i = V[ii][k]
if j>=W_i:
t_max = max(t_max, DP[i-1][j-W_i]+V_i)
DP[i][j] = t_max
#print('DP=',DP)
print(DP[-1][-1]*10)
#=================================================================================
'''
# https://blog.csdn.net/qq_38410730/article/details/81667885
n = 4
w_max = 8
W = [0,2,3,4,5]
V = [0,3,4,5,6]
DP = [[0]*(w_max+1) for i in range(n+1)]
for i in range(1, n+1):
for j in range(1, w_max+1):
if j<W[i]:
DP[i][j] = DP[i-1][j]
else:
DP[i][j] = max(DP[i-1][j], DP[i-1][j-W[i]]+V[i])
print(DP[n][w_max])
select = []
j = w_max
for i in range(n,0,-1):
if DP[i][j]>DP[i-1][j]:
select.append(i)
j = j-W[i]
print(select)
'''
#===============================================================