import java.util.*;
import java.math.*;
import java.io.*;

public class CF1140C {
	class Song implements Comparable <Song> {
		int len, b;
		public Song(int ll, int bb) {
			len = ll;  b = bb;
		}
		public String toString() { return String.format("%d;%d", len, b); }
		public int compareTo(Song s) {
			if(b == s.b) return -Integer.compare(len, s.len);
			return -Integer.compare(b, s.b);
		}
	}
	public CF1140C() {
		FS scan = new FS();
		int n = scan.nextInt(), k = scan.nextInt();
		Song[] s = new Song[n + 1];
		for(int i = 0 ; i < n ; i++)
			s[i] = new Song(scan.nextInt(), scan.nextInt());
		s[n] = new Song(Integer.MIN_VALUE, Integer.MIN_VALUE);
		Arrays.sort(s);
		PriorityQueue<Integer> pq = new PriorityQueue<>();
		long lowest = Long.MAX_VALUE;
		long sum = 0;
		long res = 0;
		int ind = 0;
		while(ind < n) {
			while(s[ind].b == lowest) {
				pq.add(s[ind].len);
				sum += s[ind].len;
				ind++;
			}
			while(pq.size() > k) sum -= pq.poll();
			res = Math.max(res, lowest * sum);
			lowest = s[ind].b;
		}
		System.out.println(res);
	}
	class FS {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer("");
		public String next() {
			while (!st.hasMoreTokens()) {
				try { st = new StringTokenizer(br.readLine()); }
				catch (Exception e) { e.printStackTrace(); }
			}
			return st.nextToken();
		}
		public int nextInt() { return Integer.parseInt(next()); }
	}
	public static void main(String[] args) { new CF1140C(); }
}