""" https://yukicoder.me/problems/no/818 2~K-1日目までは同じだろう 1 2 Last A A A 0 メリット無さそう - - - 絶対にWAにならないには... 8通りの状態を管理 """ N,M = map(int,input().split()) INF = float("inf") now = [-INF] * 8 now[0] = 0 ans = 0 ed = 1 fi = 0 if M==1 else 1 mid = M - ed - fi for i in range(N): A,B = map(int,input().split()) n2 = [-INF] * 8 cost = [ max(B, A*M, A*(M-1)+B), #000 max(B, A*(M-1), A*max(0,M-2)+B), #001 max(B, A*fi+B , A*fi+A), # 010 max(B, A*fi), #011 max(B, A*mid+B, A*mid+A), #100 max(B, A*mid, A*mid-1+B) if mid > 0 else 0, #101 max(B,A), # 110 0 #111 ] for j in range(8): for k in range(8): if j|k == k: n2[k] = max(n2[k], now[j] + cost[k]) now = n2 print (max(now))