#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  while (b ^= a ^= b ^= a %= b)
    ;
  return a;
}
const int maxn = 3e5 + 9;
const int mod = 1e9 + 7;
template <class T>
inline void sc(T &ret) {
  char c;
  ret = 0;
  while ((c = getchar()) < '0' || c > '9')
    ;
  while (c >= '0' && c <= '9') {
    ret = ret * 10 + (c - '0'), c = getchar();
  }
}
long long power(long long x, long long n) {
  long long ans = 1;
  while (n) {
    if (n & 1) ans = ans * x % mod;
    x = x * x % mod;
    n >>= 1;
  }
  return ans;
}
pair<int, int> a[maxn];
bool cmp(pair<int, int> a, pair<int, int> b) {
  if (a.second == b.second) return a.first > b.first;
  return a.second > b.second;
}
multiset<int> s;
int main() {
  int n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> a[i].first >> a[i].second;
  }
  sort(a, a + n, cmp);
  long long ans = 0;
  long long len = 0;
  for (int i = 0; i < n; i++) {
    int bt = a[i].second;
    len += a[i].first;
    ans = max(ans, len * bt);
    s.insert(a[i].first);
    if (s.size() >= k) {
      len -= *s.begin();
      s.erase(s.begin());
    }
  }
  cout << ans << endl;
  return 0;
}
