from __future__ import print_function
import os,sys,atexit

if sys.version_info[0] < 3:
    range = xrange
    from cStringIO import StringIO as BytesIO
    sys.stdout = BytesIO()
else:
    from io import BytesIO
    sys.stdout = BytesIO()
    _write = sys.stdout.write
    sys.stdout.write = lambda s: _write(s.encode())
atexit.register(lambda: os.write(1, sys.stdout.getvalue()))

input = BytesIO(os.read(0, os.fstat(0).st_size)).readline

######################################
import heapq


n,k = [int(x) for x in input().split()]

T = []
B = []
for _ in range(n):
    t,b = [int(x) for x in input().split()]
    T.append(t)
    B.append(b)

order = sorted(range(n),key = lambda i: B[i])
T = [T[i] for i in order]
B = [B[i] for i in order]

picked = []
l = 0
score = 0
i = n-1
for b in reversed(B):
    while i>=0 and B[i]>=b:
        t = T[i]
        if len(picked)<k:
            l += t
            heapq.heappush(picked,t)
        elif picked[0]<t:
            l += t
            t = heapq.heappushpop(picked,t)
            l -= t
        i -= 1
    score = max(score,l*b)
print(score)
