#include <bits/stdc++.h>
char ch;
inline void read(int &x) {
  x = 0;
  ch = getchar();
  while (ch <= 32) ch = getchar();
  while (ch > 32) {
    x = x * 10 + ch - 48;
    ch = getchar();
  };
};
inline void read(long long &x) {
  x = 0;
  ch = getchar();
  while (ch <= 32) ch = getchar();
  while (ch > 32) {
    x = x * 10 + ch - 48;
    ch = getchar();
  };
};
struct line {
  long long k, b, l, r;
  long long mi, ma;
};
int n, i, j;
long long s;
int cnt;
long long a[200005], b[200005];
line aa[200005];
inline void qsort(int l, int r) {
  if (l > r) return;
  int i = l, j = r;
  int pos = l + (rand() * RAND_MAX + rand()) % (r - l + 1);
  long long mid = a[pos], mid2 = b[pos], p;
  while (i < j) {
    while (a[i] < mid || (a[i] == mid && b[i] < mid2)) ++i;
    while (a[j] > mid || (a[j] == mid && b[j] > mid2)) --j;
    if (i <= j) {
      p = a[i];
      a[i] = a[j];
      a[j] = p;
      p = b[i];
      b[i] = b[j];
      b[j] = p;
      ++i;
      --j;
    };
  };
  if (l < j) qsort(l, j);
  if (i < r) qsort(i, r);
};
inline void getmintime(long long ss, long long &rettime, long long &retss) {
  int l = 1, r = cnt, mid;
  while (l < r) {
    mid = (l + r) >> 1;
    if (aa[mid].ma < ss)
      l = mid + 1;
    else
      r = mid;
  };
  line *a = aa + l;
  long long t1 = (ss - a->b) / a->k;
  if (t1 * a->k < ss - a->b) ++t1;
  rettime = t1;
  retss = t1 * a->k + a->b;
};
int main() {
  read(n);
  read(s);
  cnt = 1;
  long long kkk = 0;
  for (i = 1; i <= n; i++) {
    read(a[i]);
    read(b[i]);
    if (b[i] == 0) {
      if (a[i] > kkk) kkk = a[i];
      --n;
      --i;
    };
  };
  long long tt = 10000000000000000LL / kkk + 1;
  aa[1] = (line){kkk, 0, 0, tt, 0, tt * kkk};
  qsort(1, n);
  for (i = 1; i <= n; i++) {
    if (a[i] <= kkk) continue;
    if (i > 1 && a[i] == a[i - 1]) continue;
    long long tk, tb;
    long long tt, ts;
    getmintime(b[i], tt, ts);
    tk = a[i];
    tb = ts - b[i] - tt * tk;
    for (j = cnt; j >= 1; j--) {
      if (tb + tk * aa[j].l < aa[j].mi) {
        long long t1 = (aa[j].b - tb) / (tk - aa[j].k);
        if (t1 * (tk - aa[j].k) < aa[j].b - tb) ++t1;
        aa[j].r = t1 - 1;
        aa[j].ma = aa[j].k * (t1 - 1) + aa[j].b;
        cnt = j + 1;
        aa[cnt].l = t1;
        aa[cnt].mi = t1 * tk + tb;
        aa[cnt].k = tk;
        aa[cnt].b = tb;
        aa[cnt].r = (10000000000000000LL - tb) / tk + 1;
        aa[cnt].ma = aa[cnt].r * tk + tb;
        break;
      };
    };
  };
  long long ans1, ans2;
  getmintime(s, ans1, ans2);
  printf("%I64d\n", ans1);
}
