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

public class CF_1110 {

    static long INF ;
     public static void main(String[] args) {
        FastReader scn = new FastReader() ;
        int n = scn.nextInt() , k = scn.nextInt() ; 
        ArrayList<int[]> al = new ArrayList<>() ;
        for(int i = 0 ; i < n ;i++){
            al.add(new int[]{scn.nextInt() , scn.nextInt()});
        }
        Collections.sort(al , (int[] a, int[] b) -> (a[1] - b[1])) ;
        long min = (int)1e7 , tot = 0 , x = 0;
        long[] ans = new long[n] ;
        PriorityQueue<Long> pq = new PriorityQueue<>();
        for(int i = n-1 ; i >=0 ; i--){
            if(x < k - 1){
                x++;
                tot += al.get(i)[0] ;
                pq.add((long)al.get(i)[0]) ;
            } else {
                if(!pq.isEmpty() && pq.peek() < al.get(i)[0]){
                    long r = pq.poll() ;
                    pq.add((long)al.get(i)[0]) ;
                    tot -= r ;
                    tot += al.get(i)[0] ;
                    x++ ;
                }
                
            }
            ans[i] = tot ;
        }
        long ans1 = 0 ;
        for(int i = 0 ; i < n-1 ; i++){
            ans1 = Math.max(ans1 , (long)al.get(i)[1] * (ans[i+1] + al.get(i)[0])) ;
        }
        ans1 = Math.max(ans1 , (long)al.get(n-1)[1] * al.get(n-1)[0]) ;
        System.out.println(ans1);

     }
     
     
     
     
     
     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; 
         } 
     } 
     
 }