import java.util.*;
import java.io.*;
/*
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
Integer.parseInt(st.nextToken());
Long.parseLong(st.nextToken());
Scanner sc = new Scanner(System.in);


*/



public class answer{
    
    static class Node{
        long t;
        long b;
        Node(long t,long b){
            this.t = t;
            this.b = b;
        }
    }
    
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int k = Integer.parseInt(st.nextToken());
        PriorityQueue<Node> p = new PriorityQueue<Node>(new Comparator<Node>(){
            public int compare(Node n1,Node n2){
                if(n1.b-n2.b!=0) return (int)(n2.b-n1.b);
                else return (int)(n2.t-n1.t);
            }    
        });
        PriorityQueue<Node> q = new PriorityQueue<Node>(new Comparator<Node>(){
            public int compare(Node n1,Node n2){
                if(n1.t-n2.t!=0) return (int)(n1.t-n2.t);
                else return (int)(n1.b-n2.b);
            }    
        });
        long t,b;
        long max=0,val=0,minb =  (long) Math.pow(10,6);
        
        for(int i=0;i<n;i++){
            st = new StringTokenizer(br.readLine());
            t = Long.parseLong(st.nextToken());
            b = Long.parseLong(st.nextToken());
            p.add(new Node(t,b));
            
        }
        Node node;
        for(int i=0;i<k;i++){
            node = p.poll();
            val += node.t;
            minb = Math.min(minb,node.b);
            q.add(node);
            max = Math.max(max,val*minb);
        }
        
        
        Node two;
        while(!p.isEmpty()){
            node = p.poll();
            minb = Math.min(node.b,minb);
            two = q.poll();
            val -= two.t;
            val += node.t;
            max = Math.max(max,val*minb);
            q.add(node);
        }
        System.out.println(max);
    }
}