import java.util.*;
import java.lang.*;
import java.io.*;

/*
9
1 3 3 6 7 6 9 9 9
*/
public class Main{
	static class Node{
		long length;
		long beauty;
		Node(long length,long beauty){
			this.length=length;
			this.beauty=beauty;
		}
	}


	public static void main (String[] args)throws IOException{

		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		PrintWriter pw=new PrintWriter(new BufferedWriter (new OutputStreamWriter(System.out)));

		StringTokenizer st=new StringTokenizer(br.readLine());

		int n=Integer.parseInt(st.nextToken());
		int k=Integer.parseInt(st.nextToken());
		Node[] arr=new Node[n];
		for(int i=0;i<n;i++){
			st=new StringTokenizer(br.readLine());
			arr[i]=new Node(Long.parseLong(st.nextToken()),Long.parseLong(st.nextToken()));
		}

		Arrays.sort(arr,new Comparator<Node>(){
			public int compare(Node n1,Node n2){
				if(n1.beauty==n2.beauty){
					return (int)(n2.length-n1.length);
				}else{
					return (int)(n2.beauty-n1.beauty);
				}
			}
		});

        PriorityQueue<Node> queue=new PriorityQueue<Node>(new Comparator<Node>(){
        	public int compare(Node n1,Node n2){
        		if(n1.length==n2.length){
					return (int)(n1.beauty-n2.beauty);
				}else{
					return (int)(n1.length-n2.length);
				}
        	}
        });


		long ans=Integer.MIN_VALUE;
        long sum=0;

        for(int i=0;i<n;i++){
        	if(queue.size()<k){
        		sum+=arr[i].length;
        		queue.add(arr[i]);
        		ans=Math.max(ans,sum*arr[i].beauty);
        	}else{
        		Node nd=queue.peek();
        		sum+=arr[i].length-nd.length;
        		ans=Math.max(ans,sum*arr[i].beauty);
        		if(arr[i].length>nd.length){
        			queue.poll();
        			queue.add(arr[i]);
        		}else{
        			sum+=nd.length-arr[i].length;
        		}
				
        	}
        	
        }
        pw.println(ans);

		pw.close();
	}
}