import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;
import java.util.TreeMap;

public class C1140 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
		PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
		int n = in.nextInt(), k = in.nextInt();
		Song[] songs = new Song[n];
		int t, b;
		for (int i=0; i<n; i++) {
			t = in.nextInt(); b = in.nextInt();
			songs[i] = new Song(t, b);
		}
		Arrays.sort(songs);
		
		long ans = 0;
		int count = 0, minValue = (int)1e9;
		long sum = 0;
		
		TreeMap<Integer, Integer> tm = new TreeMap<Integer, Integer>();
		
		for (int i=n-1; i>=0; i--) {
			if (count < k) {
				count ++;
				if (tm.containsKey(songs[i].t)) {
					tm.put(songs[i].t, tm.get(songs[i].t) + 1);
				} else {
					tm.put(songs[i].t, 1);
				}
				minValue = Math.min(minValue, songs[i].t);
				sum += songs[i].t;
				ans = Math.max(ans, sum * songs[i].b);
			} else {
				if (songs[i].t > minValue) {
					sum += songs[i].t - minValue;
					ans = Math.max(ans, sum * songs[i].b);
					if (tm.get(minValue) > 1) {
						tm.put(minValue, tm.get(minValue) - 1);
					} else {
						tm.remove(minValue);
					}
					
					if (tm.containsKey(songs[i].t)) {
						tm.put(songs[i].t, tm.get(songs[i].t)+ 1 );
					} else {
						tm.put(songs[i].t, 1);
					}
					
					minValue = tm.firstKey();
				}
			}
		}
		
		out.println(ans);
		
		out.close();
	}

}

class Song implements Comparable<Song> {
	int t, b;
	public Song(int t, int b) {
		this.t = t;
		this.b = b;
	}
	
	@Override
	public int compareTo(Song o) {
		// TODO Auto-generated method stub
		if (this.b == o.b) {
			return this.t - o.t;
		}
		return this.b - o.b;
	}
}
