#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9 + 333;
const long long linf = 1e18 + inf;
const int N = 2e5 + 5;
int n;
long long s;
pair<int, int> a[N];
double intersect(pair<long long, long long> x, pair<long long, long long> y) {
  return (double)(x.second - y.second) / (y.first - x.first);
}
int ptr;
vector<pair<long long, long long> > trick;
void add(long long x, int a, int b) {
  long long m = a;
  long long n = -x * a + b;
  while (ptr + 1 < trick.size()) {
    pair<long long, long long> l1 = trick[trick.size() - 2];
    pair<long long, long long> l2 = trick[trick.size() - 1];
    if (intersect(l1, {m, n}) <= intersect(l1, l2)) {
      trick.pop_back();
    } else {
      break;
    }
  }
  trick.push_back({m, n});
}
long long get(long long x) {
  while (ptr + 1 < trick.size() and intersect(trick[ptr], trick[ptr + 1]) < x) {
    ptr++;
  }
  if ((double)trick[ptr].first * x + trick[ptr].second > 1e18) return 1e18;
  return trick[ptr].first * x + trick[ptr].second;
}
long long getFirst(long long x) {
  while (ptr + 1 < trick.size()) {
    long long p = intersect(trick[ptr], trick[ptr + 1]);
    if (get(p) >= x) break;
    ptr++;
  }
  long long l = 1, r = ptr + 1 < trick.size()
                           ? intersect(trick[ptr], trick[ptr + 1])
                           : 1e18;
  while (l < r) {
    long long m = (l + r) >> 1;
    if (get(m) >= x)
      r = m;
    else
      l = m + 1;
  }
  return l;
}
int main() {
  scanf("%d %lld", &n, &s);
  for (int i = 1; i <= n; i++) {
    scanf("%d %d", &a[i].first, &a[i].second);
  }
  sort(a + 1, a + n + 1, [&](pair<int, int> x, pair<int, int> y) {
    if (x.second != y.second) return x.second < y.second;
    return x.first > y.first;
  });
  int ptr = 1;
  for (int i = 2; i <= n; i++) {
    if (a[i].first > a[ptr].first and a[i].first < s) {
      a[++ptr] = a[i];
    }
  }
  n = ptr;
  for (int i = 1; i <= n; i++) {
  }
  add(0, a[1].first, 0);
  for (int i = 2; i <= n; i++) {
    long long x = getFirst(a[i].second);
    add(x, a[i].first, get(x) - a[i].second);
  }
  printf("%lld\n", getFirst(s));
  return 0;
}
