import java.util.*;

public class Main {
	static class Pair {
		int amount, nutrition;

		Pair(int amount, int nutrition) {
			this.amount = amount;
			this.nutrition = nutrition;
		}
	}

	
	public static void main(String args[]) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		int k = s.nextInt();
		
		Pair array[] = new Pair[n];   // Array of Pair type
		for (int i = 0; i < n; i++)
			array[i] = new Pair(s.nextInt(), s.nextInt());
		
		// Comparator used to sort the pairs on the basis of nutrition Value in descending order
		// Starting with maximum nutrition Value
		Arrays.sort(array, (a, b) -> (b.nutrition - a.nutrition));
        
		long max = Long.MIN_VALUE, sum = 0;
		
		PriorityQueue<Integer> pq_Of_Amounts = new PriorityQueue<>();
		// Min Priority Queue to sort the amounts in increasing order(with minimum amount on top) 
		for (int i = 0; i < n; i++) {

			Pair current=array[i];     // current.nutrition has the minimum nutrition value among all pairs considered till now as they are sorted in decreasing order of nutrition
			sum += current.amount;     // Adding the amount values to sum
			pq_Of_Amounts.add(current.amount);
			
			while (pq_Of_Amounts.size() > k)     //  Since at most K foods can be selected
				sum -= pq_Of_Amounts.remove();   // Removing minimum amount values(top values) from priority Queue , subtracting from sum to maximize pleasure and ensure that at most K values selected
    
			max = Math.max(max, sum * current.nutrition);     // comparing intermediate results to get the ans 
		}

		System.out.print(max);
		s.close();
	}
}