#include <bits/stdc++.h>
using namespace std;
class MinHeap {
  vector<long long int> arr;
  long long int size;

 public:
  MinHeap() { size = 0; }
  long long int parent(long long int i) { return (i - 1) / 2; }
  long long int lchild(long long int i) { return 2 * i + 1; }
  long long int rchild(long long int i) { return 2 * i + 2; }
  long long int minimum() { return arr[0]; }
  long long int length() { return size; }
  void insert(long long int i) {
    size++;
    arr.push_back(i);
    long long int index = size - 1;
    while (i != 0 && arr[parent(index)] > arr[index]) {
      swap(arr[parent(index)], arr[index]);
      index = parent(index);
    }
  }
  void minheapify_down(long long int i) {
    while (i < size) {
      long long int l = lchild(i);
      long long int r = rchild(i);
      long long int small = i;
      if (l < size) small = arr[small] < arr[l] ? small : l;
      if (r < size) small = arr[small] < arr[r] ? small : r;
      swap(arr[i], arr[small]);
      if (i == small) break;
      i = small;
    }
  }
  void minheapify_up(long long int i) {
    long long int index = i;
    while (i != 0 && arr[parent(index)] > arr[index]) {
      swap(arr[parent(index)], arr[index]);
      index = parent(index);
    }
  }
  void extractmin() {
    long long int min = arr[0];
    swap(arr[0], arr[size - 1]);
    arr.pop_back();
    size--;
    minheapify_down(0);
  }
  void changekey(long long int i, long long int value) {
    if (value > arr[i]) {
      arr[i] = value;
      minheapify_down(i);
    } else {
      arr[i] = value;
      minheapify_up(i);
    }
  }
  void deletekey(long long int i) {
    changekey(i, LLONG_MIN);
    extractmin();
  }
};
int main() {
  ;
  ios::sync_with_stdio(0);
  cin.tie(0);
  ;
  long long int n, k, t, b, ans = 0, count = 0, sum = 0;
  cin >> n >> k;
  vector<vector<long long int>> beauti(1000001);
  for (long long int i = 0; i < n; i++) {
    cin >> t >> b;
    beauti[b].push_back(t);
  }
  MinHeap length;
  for (long long int i = 1000000; i >= 1; i--) {
    if (beauti[i].size() != 0) {
      for (long long int j = 0; j < beauti[i].size(); j++) {
        sum += beauti[i][j];
        length.insert(beauti[i][j]);
        count++;
        if (count > k) {
          long long int ele = length.minimum();
          sum -= ele;
          length.deletekey(0);
          count--;
        }
      }
      ans = max(ans, i * sum);
    }
  }
  cout << ans;
  return 0;
}
