import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        InputStream inp = System.in;
        OutputStream oup = System.out;
        InputReader in = new InputReader(inp);
        PrintWriter out = new PrintWriter(oup);
        probC solver = new probC();
        solver.solve(1, in, out);
        out.close();
    }

    static class probC {
        static class Node {
            long b;
            long l;
        }
        public void solve(int testNumber, InputReader in, PrintWriter out) {
            int n = in.nextInt();
            int k = in.nextInt();
            Node[] nodes = new Node[n];

            for (int i = 0; i < n; i++) {
                Node node = new Node();
                node.l = in.nextInt();
                node.b = in.nextInt();
                nodes[i] = node;
            }
            Arrays.sort(nodes, new Comparator<Node>() {
                @Override
                public int compare(Node o1, Node o2) {
                    Long x = o1.b;
                    Long y = o2.b;
                    return x.compareTo(y);
                }
            });
            PriorityQueue<Long> queue = new PriorityQueue<>();
            long sum =0;
            long res = 0;

            for (int i = n-1 ; i >= 0 ; i--) {
                if(queue.size() < k) {
                    sum += nodes[i].l;
                    queue.add(nodes[i].l);
                }
                else {
                    if(nodes[i].l > queue.peek()) {
                        long temp = queue.poll();
                        long l = nodes[i].l;
                        queue.add(l);
                        sum = sum - temp + l;
                    }
                }
                res = Math.max(res, sum * nodes[i].b);
            }
            out.println(res);

        }

    }
    static class InputReader {

        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }
    }
}