#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 7;
const long long inf = 1e17 + 7;
pair<long long, long long> a[maxn];
pair<long long, long long> A[maxn];
pair<pair<long long, long long>, pair<long long, long long> > S[maxn];
int pos;
inline long long elf(pair<long long, long long> z, long long x) {
  return z.first * x + z.second;
}
inline long long earl(pair<long long, long long> z, long long v) {
  long long a = z.first, b = z.second;
  long long x = (v - b) / a;
  if (a * x >= v - b) return x;
  return x + 1;
}
inline long double intx(pair<long long, long long> l1,
                        pair<long long, long long> l2) {
  long long a1 = l1.first, a2 = l2.first, b1 = l1.second, b2 = l2.second;
  return (long double)(b2 - b1) / (long double)(a1 - a2);
}
void ins(long long a, long long b) {
  while (pos >= 2 && intx(S[pos].first, S[pos - 1].first) >=
                         intx(make_pair(a, b), S[pos].first))
    pos--;
  S[pos].second.second = ceil(intx(S[pos].first, make_pair(a, b))) - 1;
  pos++;
  S[pos] =
      make_pair(make_pair(a, b),
                make_pair(ceil(intx(S[pos - 1].first, make_pair(a, b))), inf));
}
int main() {
  int n;
  long long s;
  scanf("%d %lld", &n, &s);
  for (int i = 1; i <= n; i++) {
    scanf("%lld %lld", &a[i].first, &a[i].second);
  }
  sort(a + 1, a + n + 1);
  a[0].first = -1;
  long long cur = -1;
  long long best = inf;
  int idx = 0;
  for (int i = n; i >= 0; i--) {
    if (a[i].first != cur) {
      if (cur > 0) {
        idx++;
        A[idx] = make_pair(cur, best);
      }
      cur = a[i].first;
      best = inf;
    }
    best = min(best, a[i].second);
  }
  n = idx;
  for (int i = 1; i <= n; i++) a[i] = A[i];
  best = inf;
  idx = 0;
  for (int i = 1; i <= n; i++) {
    if (a[i].second >= best) continue;
    idx++;
    A[idx] = a[i];
    best = min(best, a[i].second);
  }
  n = idx;
  reverse(A + 1, A + n + 1);
  long long ans = inf;
  pos = 1;
  S[pos] = make_pair(make_pair(A[1].first, 0), make_pair(0, inf));
  int fp = 1;
  for (int i = 2; i <= n; i++) {
    while (fp < pos && elf(S[fp].first, S[fp].second.second) < A[i].second)
      fp++;
    long long cx = earl(S[fp].first, A[i].second);
    long long fcx = elf(S[fp].first, cx);
    ins(A[i].first, fcx - A[i].second - A[i].first * cx);
    fp = min(fp, pos);
  }
  for (int i = 1; i <= pos; i++) {
    ans = min(ans, earl(S[i].first, s));
  }
  printf("%lld\n", ans);
}
