#include <bits/stdc++.h>
void xp(int a[], int l) {
  int i, j, xb, t;
  for (i = 0; i < l - 1; i++) {
    t = a[i];
    xb = i;
    for (j = i + 1; j < l; j++) {
      if (a[j] > t) {
        xb = j;
        t = a[j];
      }
    }
    a[xb] = a[i];
    a[i] = t;
  }
}
struct mcp {
  int a, b;
} x[100001], max;
int c[100001];
int main() {
  int i, n, h, j = 0;
  scanf("%d %d", &n, &h);
  scanf("%d %d", &x[0].a, &x[0].b);
  max = x[0];
  for (i = 1; i < n; i++) {
    scanf("%d %d", &x[i].a, &x[i].b);
    if (x[i].a > max.a) {
      max = x[i];
    }
  }
  for (i = 0; i < n; i++) {
    if (x[i].b <= max.a) {
      c[j++] = x[i].b;
    }
  }
  xp(c, j);
  for (i = 0; i < j; i++) {
    h -= c[i];
    if (h <= 0) {
      i++;
      printf("%d", i);
      return 0;
    }
  }
  if (h % i > 0) {
    i++;
  }
  i += h % max.a;
  printf("%d", i);
  return 0;
}
