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)