#include <bits/stdc++.h>
clock_t t_;
using namespace std;
template <class T>
void print(T s) {
  cout << s << "\n";
}
template <class T>
void emax(T &a, T b) {
  a = (a < b ? b : a);
};
template <class T>
void emin(T &a, T b) {
  a = (a > b ? b : a);
}
template <class T>
void printC(T s) {
  for (auto &x : s) {
    cout << x << " ";
  }
  cout << "\n";
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int main(int argc, const char *argv[]) {
  t_ = clock();
  long long n, k;
  cin >> n >> k;
  vector<pair<long long, long long> > a(n);
  for (int i = int(0); i < int(n); i++) {
    cin >> a[i].first >> a[i].second;
  }
  sort((a).begin(), (a).end(),
       [](pair<long long, long long> a, pair<long long, long long> b) {
         return a.second > b.second;
       });
  for (int i = int(0); i < int(n); i++) {
  }
  long long ans = 0;
  long long suma = 0;
  multiset<long long> act;
  for (int i = int(0); i < int(k - 1); i++) {
    suma += a[i].first;
    act.insert(a[i].first);
    emax(ans, suma * a[i].second);
  }
  for (int i = int(k - 1); i < int(n); i++) {
    emax(ans, (suma + a[i].first) * a[i].second);
    if (a[i].first > *act.begin()) {
      suma -= *act.begin();
      act.erase(act.begin());
      suma += a[i].first;
      act.insert(a[i].first);
    }
  }
  print(ans);
  t_ = clock() - t_;
  cerr << setprecision(9) << fixed << ((float)t_ / CLOCKS_PER_SEC) << endl;
  return 0;
}
