#include <bits/stdc++.h>
using namespace std;
struct FastIO {
  static const int S = 1310720;
  int wpos;
  char wbuf[S];
  FastIO() : wpos(0) {}
  inline int xchar() {
    static char buf[S];
    static int len = 0, pos = 0;
    if (pos == len) pos = 0, len = fread(buf, 1, S, stdin);
    if (pos == len) return -1;
    return buf[pos++];
  }
  inline int xuint() {
    int c = xchar(), x = 0;
    while (c <= 32) c = xchar();
    for (; '0' <= c && c <= '9'; c = xchar()) x = x * 10 + c - '0';
    return x;
  }
  inline int xint() {
    int s = 1, c = xchar(), x = 0;
    while (c <= 32) c = xchar();
    if (c == '-') s = -1, c = xchar();
    for (; '0' <= c && c <= '9'; c = xchar()) x = x * 10 + c - '0';
    return x * s;
  }
  inline long long xlongint() {
    long long s = 1, c = xchar(), x = 0;
    while (c <= 32) c = xchar();
    if (c == '-') s = -1, c = xchar();
    for (; '0' <= c && c <= '9'; c = xchar()) x = x * 10 + c - '0';
    return x * s;
  }
  inline void xstring(char *s) {
    int c = xchar();
    while (c <= 32) c = xchar();
    for (; c > 32; c = xchar()) *s++ = c;
    *s = 0;
  }
  inline void wchar(int x) {
    if (wpos == S) fwrite(wbuf, 1, S, stdout), wpos = 0;
    wbuf[wpos++] = x;
  }
  inline void wint(long long x) {
    if (x < 0) wchar('-'), x = -x;
    char s[24];
    int n = 0;
    while (x || !n) s[n++] = '0' + x % 10, x /= 10;
    while (n--) wchar(s[n]);
  }
  inline void wstring(const char *s) {
    while (*s) wchar(*s++);
  }
  ~FastIO() {
    if (wpos) fwrite(wbuf, 1, wpos, stdout), wpos = 0;
  }
} io;
const long long maxn = 1e6 + 111;
long long a[maxn], b[maxn];
int main(int argc, char const *argv[]) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, h;
  cin >> n >> h;
  for (int i = 0; i < n; ++i) cin >> a[i] >> b[i];
  long long max_a = a[0];
  int max_ai = 0;
  for (int i = 1; i < n; ++i)
    if (a[i] > max_a) {
      max_ai = i;
      max_a = a[i];
    }
  int tmp_b = b[max_ai];
  b[max_ai] = -1;
  sort(b, b + n, [](int vala, int valb) { return vala > valb; });
  long long ans = 0;
  for (int i = 0; i < n - 1; ++i) {
    if (b[i] > max_a) {
      h -= b[i];
      ++ans;
    }
    if (h <= 0) {
      goto nest;
    }
  }
  if (tmp_b > a[max_ai]) {
    ++ans;
    h -= tmp_b;
  }
  if (h > 0) {
    if (h % a[max_ai] == 0)
      ans += h / a[max_ai];
    else {
      ans += h / a[max_ai];
      ++ans;
    }
  }
nest:
  cout << ans << endl;
  return 0;
}
