#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long modularExponentiation(long long base, long long power) {
  long long ans = 1;
  while (power > 0) {
    if (power & 1) ans = (ans * base) % 1000000007;
    power = power >> 1;
    base = (base * base) % 1000000007;
  }
  return ans;
}
bool cmp(pair<long long, long long> a, pair<long long, long long> b) {
  return a.first > b.first;
}
void solve() {
  int n, k;
  cin >> n >> k;
  pair<long long, long long> arr[n];
  for (int i = 0; i <= n - 1; ++i) {
    cin >> arr[i].second >> arr[i].first;
  }
  sort(arr, arr + n, cmp);
  priority_queue<int, vector<int>, greater<int>> pq;
  long long ans = 0;
  long long sum = 0;
  for (int i = 0; i <= k - 2; ++i) {
    sum += arr[i].second;
    pq.push(arr[i].second);
    ans = max(ans, sum * arr[i].first);
  }
  for (int i = k - 1; i <= n - 1; ++i) {
    ans = max(ans, (sum + arr[i].second) * arr[i].first);
    if (!pq.empty() && arr[i].second > pq.top()) {
      long long tp = pq.top();
      pq.pop();
      pq.push(arr[i].second);
      sum = sum + arr[i].second - tp;
    }
  }
  cout << ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
