import java.util.*;

public class main{
	static int MAX = 100010;
	static long mod = 1000000007;
	static ArrayList<Integer>[] amp, bmp;
    static boolean b[];
    static Scanner sc = new Scanner(System.in);
	public static void main(String[] args){
		int n = sc.nextInt(), k = sc.nextInt();
        Pair p[] = new Pair[n];
        PriorityQueue<Integer> pq = new PriorityQueue<>();
        /*(new Comparator<Pair>(){
            public int compare(Pair p1, Pair p2){
                return Integer.compare(p1.x,p2.y);
            }
        });*/

        for(int i = 0;i < n; i++){
            p[i] = new Pair(sc.nextInt(), sc.nextInt());
        }
        Arrays.sort(p);;
        long sum = 0;
        long ans = 0;
        for(int i = 0; i < n; i++){
            sum += p[i].x;
            pq.add(p[i].x);
            if(pq.size()>k){
                int y = pq.poll();
                sum -= y;
            }
            ans = Math.max(p[i].y*sum, ans);
        }
        System.out.println(ans);
	}

    static int dfs(int x){
        b[x] = true;
        int ans = 1;
        for(int i : amp[x]){
            if(!b[i]){
                ans += dfs(i);
            }
        }
        return ans;
    }

    static void buildGraph(int n){
        for(int i=0; i<n; i++){
            int x = sc.nextInt(), y = sc.nextInt(), c = sc.nextInt();
            if (c == 1) {
                bmp[x].add(y);
                bmp[y].add(x);
            }
            else{
                amp[x].add(y);
                amp[y].add(x);
            }
        }
    }

	static long pow(long x, int y, long mod){
		long ans = 1;
		while(y>0){
			if(y%2==0){
				x *= x;
				x %= mod;
				y/=2;
			}
			else{
				y-=1;
				ans *= x;
				ans %= mod;
			}
		}
		return ans;
	}
	static class Pair implements Comparable<Pair>{
		int x, y;
		Pair(int a, int b){
			x = a; y = b;
		}
        public int compareTo(Pair p){
            return -Integer.compare(this.y, p.y);
        }
	}
	public static int[] radixSort(int[] f){ return radixSort(f, f.length); }
	public static int[] radixSort(int[] f, int n)
	{
		int[] to = new int[n];
		{
			int[] b = new int[65537];
			for(int i = 0;i < n;i++)b[1+(f[i]&0xffff)]++;
			for(int i = 1;i <= 65536;i++)b[i]+=b[i-1];
			for(int i = 0;i < n;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 < n;i++)b[1+(f[i]>>>16)]++;
			for(int i = 1;i <= 65536;i++)b[i]+=b[i-1];
			for(int i = 0;i < n;i++)to[b[f[i]>>>16]++] = f[i];
			int[] d = f; f = to;to = d;
		}
		return f;
	}

}