#include <bits/stdc++.h>
using namespace std;
void solve() {
  string s;
  int n, i, sol1, sol2;
  cin >> n;
  cin >> s;
  i = 0;
  sol1 = 0;
  while (s[i] == '<') {
    i++;
    sol1++;
  }
  i = n - 1;
  sol2 = 0;
  while (s[i] == '>') {
    i--;
    sol2++;
  }
  cout << min(sol1, sol2) << "\n";
}
struct Song {
  int t;
  int b;
};
bool cmp(Song a, Song b) {
  if (a.b != b.b) return a.b > b.b;
  return a.t > b.t;
}
const int MAXN = 3e5;
Song a[1 + MAXN];
multiset<int> sat;
using ll = long long;
int main() {
  int n, k, i, nr;
  cin >> n >> k;
  for (i = 1; i <= n; i++) {
    cin >> a[i].t >> a[i].b;
  }
  sort(a + 1, a + n + 1, cmp);
  ll s = 0;
  ll sol = 0;
  nr = 0;
  for (i = 1; i <= n; i++) {
    nr++;
    sat.insert(a[i].t);
    s += a[i].t;
    if (nr > k) {
      nr--;
      int dada = *sat.begin();
      s -= dada;
      sat.erase(sat.begin());
    }
    sol = max(sol, s * a[i].b);
  }
  cout << sol;
  return 0;
}
