N,M = map(int,input().split()) W = 10**5+10 X = [] C = [0,0,0,0,0,0] A = [[] for _ in range(W)] B = [[] for _ in range(W)] for n in range(N): x,a,b = map(int,input().split()) X.append(x+1)#A問題は全生徒が答えられる前提、すなわちA難易度0でスタートする、Bの難易度は最大 C[x+1] += 1 A[a].append(n) B[b].append(n) SA = 0; SB = W ans = W while True: if SA >= W: break if sum(C[2:])>=M and sum(C[3:]) 0 and sum(C[2:]) < M:#Aの難易度を上げすぎて、2完がM人以下になってしまったときBの難易度を下げる SB -= 1#難易度をさげて for b in B[SB]:#ボーダーにいた生徒は完答できるようになるので、それを反映 C[X[b]] -= 1 X[b] += 1 C[X[b]] += 1 print(ans)