#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const double eps = 1e-6;
const int MAXN = 2e5 + 10;
const int MAXM = 2e6 + 10;
const long long mod = 1e9 + 7;
struct node {
  int type;
  long long attack;
} a[MAXN];
bool cmp(node x, node y) {
  if (x.attack != y.attack) return x.attack > y.attack;
  return x.type < y.type;
}
int main() {
  int n, m = 0;
  long long h;
  scanf("%d%lld", &n, &h);
  for (int i = 0; i < n; i++) {
    long long x, y;
    scanf("%lld%lld", &x, &y);
    a[m++] = {1, x};
    a[m++] = {2, y};
  }
  sort(a, a + m, cmp);
  long long ans = 0;
  for (int i = 0; i < m; i++) {
    if (a[i].type == 1) {
      ans += ceil((double)h / a[i].attack);
      break;
    } else if (a[i].type == 2) {
      h -= a[i].attack;
      ans++;
    }
  }
  printf("%lld\n", ans);
  return 0;
}
