n,D = map(int,input().split()) PQ = [list(map(int,input().split())) for i in range(n)] inf = 10**8 def search(x): ldp = [0]*(n+1) rdp = [0]*(n+1) ldp[-1] = rdp[-1] = -inf for i in range(D): ndp = [-inf]*(n+1) for j,(p,q) in enumerate(PQ): nex = max(ldp[j-1],rdp[j+1]) if nex-p >= x: ndp[j] = nex-p+q for j in range(n): ldp[j] = max(ndp[j],ldp[j-1]) rdp[n-1-j] = max(ndp[n-1-j],rdp[n-j]) if rdp[0] != -inf: return True return False l = -inf r = 0 while r > l + 1: m = (r+l)//2 if search(m): l = m else: r = m print(l)