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

public class Solution {
	
	public static final long mod = (long)Math.pow(10, 9) + 7;
	
	public static void main (String[] args) throws IOException{
    	FastReader f=new FastReader();
    	int n = f.nextInt();
    	int k = f.nextInt();
    	song[] songs = new song[n];
    	for (int i=0;i<n;i++) songs[i] = new song(f.nextInt(),f.nextInt());
    	Arrays.sort(songs,new comp());
    	
    	long ans = 0;
    	long pqsum = 0;
    	PriorityQueue<Long> pq = new PriorityQueue<>();
    	
    	for (int i=0;i<n;i++) {
    		song curr = songs[i];
    		ans = Math.max(ans, (pqsum+curr.t)*curr.b);
    		if (k==1) continue;
    		if (pq.size()<k-1) {
    			pqsum+=curr.t;
    			pq.add((long)curr.t);
    		}else {
    			if (pq.peek()>=curr.t) continue;
    			pqsum-=pq.remove();
    			pqsum+=curr.t;
    			pq.add((long)curr.t);
    		}
    	}
    	
    	System.out.println(ans);
    	
    	
    	
    }
	
	public static class comp implements Comparator<song>{
		public int compare(song a,song b) {
			return b.b - a.b;
		}
	}
	
	public static class song{
		int t;
		int b;
		song(int t,int b){
			this.t = t;
			this.b = b;
		}
	}

	public static int binlog( int bits ){
        int log = 0;
        if( ( bits & 0xffff0000 ) != 0 ) { bits >>>= 16; log = 16; }
        if( bits >= 256 ) { bits >>>= 8; log += 8; }
        if( bits >= 16  ) { bits >>>= 4; log += 4; }
        if( bits >= 4   ) { bits >>>= 2; log += 2; }
        return log + ( bits >>> 1 );
    }

	static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
  
}