def com_qikuang(N,price,inpot,my_fujian):
r = []
for i in range(N):
if my_fujian[i] == []:
r.append([[price[i], price[i]*inpot[i]]])
elif my_fujian[i] == False:
continue
else:
r.append([[price[i], price[i]*inpot[i]]])
if len(my_fujian[i]) == 1:
indx = my_fujian[i][0]
r[-1].append([price[i]+price[indx],\
price[i]*inpot[i]+price[indx]*inpot[indx]])
elif len(my_fujian[i]) == 2:
indx1,indx2 = my_fujian[i][0],my_fujian[i][1]
r[-1].append([price[i]+price[indx1],\
price[i]*inpot[i]+price[indx1]*inpot[indx1]])
r[-1].append([price[i]+price[indx2],\
price[i]*inpot[i]+price[indx2]*inpot[indx2]])
r[-1].append([price[i]+price[indx1]+price[indx2],\
price[i]*inpot[i]+price[indx1]*inpot[indx1]+price[indx2]*inpot[indx2]])
return r
s = list(map(int,input().strip().split()))
mymoney,N = s[0]//10,s[1]
my_fujian = [[] for i in range(N)]
price = [0]*N
inpot = [0]*N
for i in range(N):
s = list(map(int,input().strip().split()))
price[i] = s[0]//10
inpot[i] = s[1]
if s[2] == 0:
pass
else:
my_fujian[s[2]-1].append(i)
my_fujian[i] = False
qingkuang = com_qikuang(N,price,inpot,my_fujian)
#print(qingkuang)
N = len(qingkuang)
# dp[剩下前多少个][剩下多少钱] 的最大效益
dp = [[0]*(mymoney+1) for i in range(N)]
for j in range(mymoney+1):
for i in range(N):
# 情况 i 对应的钱
if i == 0:
ziqingkuang = qingkuang[i]
for qing in ziqingkuang:
if j >= qing[0]:
dp[i][j] = max(qing[1],dp[i][j])
else: # 容不下现在的,但是也不是就0了啊!!!
dp[i][j] = max(dp[i-1][j],dp[i][j])
else:
ziqingkuang = qingkuang[i]
for qing in ziqingkuang:
if j >= qing[0]:
dp[i][j] = max((dp[i][j], dp[i-1][j], dp[i-1][j-qing[0]]+qing[1]))
else:
dp[i][j] = max(dp[i-1][j],dp[i][j])
print(dp[len(dp)-1][len(dp[0])-1]*10)