from sys import stdin input = stdin.readline from collections import defaultdict INF = 1<<60 N, X = map(int, input().split()) AB = [list(map(int, input().split())) for _ in range(N)] if X == 1: exit(print(max(b for _, b in AB))) D = defaultdict(int) for A, B in AB: D[B//X] += A D = sorted(D.items(), key=lambda x:x[0], reverse=True) costD = 0 SUM = 0 for n, c in D: SUM += c if X < SUM: costD = n break ans2 = INF for cost in range(costD-5, costD+6): if cost < 0: continue SUM = 0 AB2 = [] for i in range(N): A, B = AB[i] n = B//X if cost < n: SUM += A*(n-cost) B -= X*(n-cost) AB2.append([A, B]) AB2.sort(key=lambda x:x[1], reverse=True) AB2.append([0, 0]) ans = SUM+AB2[0][1] MAX = -1 for i, (A, B) in enumerate(AB2[:-1]): if B//X < cost: break SUM += A MAX = max(MAX, B-X) ans = min(ans, SUM+max(AB2[i+1][1], MAX)) ans2 = min(ans2, ans) print(ans2)