'''
背包问题:体积V,i种物品,物品体积w(i)物品价值v,求背包能容纳下的物品最大价值。
f[i][j]=max{f[i-1][j],f[i-1][j-w(i)]+v(i)}
f[i][j]:从i个物品中选取,能放入体积为j的背包的最大价值
两种选择:第i个物品放不进体积为j的背包,最大价值为f[i-1][j]
         第i个物品放得进体积为j的背包(j>w(i)),最大价值为f[i-1][j-w(i)]+v(i)
最后简化到基准f[0][...]=0
            f[...][0]=0
'''

num=input().split()
N=int(num[0])
m=int(num[1])
main={}  #主件
annex={} #附件
for i in range(1,m+1):
    x,y,z=map(int,input().split())
    if z==0: # 主件
        main[i]=[x,y]
    else:    # 附件
        if z in annex:
            annex[z].append([x,y])
        else:
            annex[z]=[[x,y]]

m=len(main)

v=[[]] #价格
s=[[]] #满意度=价格*重要度
for key in main:
    v0,s0=[],[]  # 临时记录表
    v0.append(main[key][0])
    s0.append(main[key][0]*main[key][1])
    if key in annex.keys(): 
        # 附件对应的主件存在(主件、主件+附件1、主件+附件2、主件+附件1+附件2)
        v0.append(v0[0]+annex[key][0][0])  #主件+附件1
        s0.append(s0[0]+annex[key][0][0]*annex[key][0][1])
        if len(annex[key])>1:
            v0.append(v0[0]+annex[key][1][0])  #主件+附件2
            s0.append(s0[0]+annex[key][1][0]*annex[key][1][1])
            v0.append(v0[0]+annex[key][0][0]+annex[key][1][0]) #主件+附件1+附件2
            s0.append(s0[0]+annex[key][0][0]*annex[key][0][1]+annex[key][1][0]*annex[key][1][1])
    v.append(v0)
    s.append(s0)
#print(v)
#print(s)
# 状态转移方程
dp=[[0]*(N+1) for _ in range(m+1)]
#print(len(dp[0]))
for i in range(1,m+1):
    for j in range(10,N+1,10): 
        #每件物品的价格(都是 10 元的整数倍),N元以内的最大满意度,所构成的最终金额必定是10 的倍数
        max_i=dp[i-1][j]
        for k in range(len(v[i])):
            if j-v[i][k]>=0:
                max_i=max(max_i,dp[i-1][j-v[i][k]]+s[i][k])
        dp[i][j]=max_i

print(dp[m][N])
#print(dp)