import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;
public final  class Main{
    public static boolean[] prime;
    public static class Job implements Comparable<Job>{
        int l;
        int b;
        public Job(int x,int y)
        {
            l=x;
            b=y;
        }
        public int compareTo(Job b)
        {
            return b.b-this.b;
        }
    }
    public static final class FastScanner {
        BufferedReader br;
        StringTokenizer st;

        public FastScanner() {
            try {
                br = new BufferedReader(new InputStreamReader(System.in));
                st = new StringTokenizer(br.readLine());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        public long nextLong() {
            return Long.parseLong(next());
        }
        public String next() {
            if (st.hasMoreTokens()) return st.nextToken();
            try {
                st = new StringTokenizer(br.readLine());
            } catch (Exception e) {
                e.printStackTrace();
            }
            return st.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }
        public String nextLine() {
            String line = "";
            if (st.hasMoreTokens()) line = st.nextToken();
            else try {
                return br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            while (st.hasMoreTokens()) line += " " + st.nextToken();
            return line;
        }
        public double nextDouble() {
            return Double.parseDouble(next());
        }
    }
    public static final class MathFunction{
        public static long gcd(long a, long b) {
            long var;
            while (a % b > 0) {
                var = b;
                b = a % b;
                a = var;
            }
            return b;
        }
        public static int nod(long x)
        {
            int i=0;
            while(x!=0)
            {
                i++;
                x=x/10;
            }
            return i;
        }
        public static int nob(long x)
        {
            return (int)Math.floor(Math.log(x)/Math.log(2))+1;
        }
        public static int[] FastradixSort(int[] f)
        {
            int[] to = new int[f.length];
            {
                int[] b = new int[65537];
                for(int i = 0;i < f.length;i++)b[1+(f[i]&0xffff)]++;
                for(int i = 1;i <= 65536;i++)b[i]+=b[i-1];
                for(int i = 0;i < f.length;i++)to[b[f[i]&0xffff]++] = f[i];
                int[] d = f; f = to;to = d;
            }
            {
                int[] b = new int[65537];
                for(int i = 0;i < f.length;i++)b[1+(f[i]>>>16)]++;
                for(int i = 1;i <= 65536;i++)b[i]+=b[i-1];
                for(int i = 0;i < f.length;i++)to[b[f[i]>>>16]++] = f[i];
                int[] d = f; f = to;to = d;
            }
            return f;
        }
        public static void Primesieve(int n) {
            for (int i = 0; i < n; i++)
                prime[i] = true;
            for (int p = 2; p * p < n; p++) {
                if (prime[p] == true) {
                    for (int i = p * p; i < n; i += p)
                        prime[i] = false;
                }
            }
        }
    }
    public static void main(String args[]) {
        FastScanner sc = new FastScanner();
        PrintWriter pw = new PrintWriter(System.out);
        int n,t, i, k, m, j;
        n=sc.nextInt();
        k=sc.nextInt();
        long sum=0,ans=0;
        List<Job> list=new ArrayList<Job>();
        for(i=0;i<n;i++)
        {
            t=sc.nextInt();
            m=sc.nextInt();
            list.add(new Job(t,m));
        }
        Collections.sort(list);
        PriorityQueue<Integer> pq=new PriorityQueue<Integer>();
        for(i=0;i<n;i++)
        {
            pq.add(list.get(i).l);
            sum+=list.get(i).l;
            if(pq.size()>k)
            {
                sum-=pq.poll();
            }
            ans=Math.max(ans,list.get(i).b*sum);
        }
        pw.print(ans);
        pw.close();
    }
}