#include <bits/stdc++.h>
using namespace std;
int n;
long long s;
pair<int, int> l[200010], tl[200010];
class point {
 public:
  long long x, y, slp;
} stk[200010];
inline long long upperdiv(long long a, long long b) {
  if (!a) return 0;
  if (b < 0) a = -a, b = -b;
  if (a % b == 0) return a / b;
  return a / b + 1;
}
inline long long intersect(point a, point b) {
  if (a.slp == b.slp) return 0x3f3f3f3f3f3f3f3f;
  return upperdiv(a.slp * a.x - b.slp * b.x - a.y + b.y, a.slp - b.slp);
}
inline int cmp(const pair<int, int> &a, const pair<int, int> &b) {
  if (a.first ^ b.first) return a.first < b.first;
  return a.second > b.second;
}
int main() {
  scanf("%d%lld", &n, &s);
  for (int i = 1; i <= n; i++) scanf("%d%d", &l[i].first, &l[i].second);
  sort(l + 1, l + n + 1, cmp);
  int cnt = 0;
  for (int i = 1; i <= n; i++) {
    while (cnt && tl[cnt].second >= l[i].second) cnt--;
    tl[++cnt] = l[i];
  }
  copy(tl + 1, tl + cnt + 1, l + 1);
  n = cnt;
  cnt = 1;
  stk[1] = (point){0, 0, 0};
  for (int i = 1; i <= n; i++) {
    int L = 1, R = cnt, pos = 0;
    while (L <= R) {
      int mid = (L + R) >> 1;
      if (stk[mid].y <= l[i].second)
        pos = mid, L = mid + 1;
      else
        R = mid - 1;
    }
    long long vx, lft;
    vx = upperdiv(l[i].second - stk[pos].y, stk[pos].slp) + stk[pos].x,
    lft = (vx - stk[pos].x) * stk[pos].slp + stk[pos].y - l[i].second;
    if (pos != cnt && vx >= stk[pos + 1].x)
      vx = stk[pos + 1].x, lft = stk[pos + 1].y - l[i].second;
    long long slp = l[i].first;
    point cur = (point){vx, lft, slp};
    while (cnt) {
      if (intersect(cur, stk[cnt]) <= stk[cnt].x)
        cnt--;
      else
        break;
    }
    if (!cnt)
      stk[++cnt] = (point){0, 0, slp};
    else {
      long long vpos = intersect(cur, stk[cnt]);
      stk[++cnt] = (point){vpos, (vpos - cur.x) * slp + lft, slp};
    }
  }
  int L = 1, R = cnt, pos = 0;
  while (L <= R) {
    int mid = (L + R) >> 1;
    if (stk[mid].y <= s)
      pos = mid, L = mid + 1;
    else
      R = mid - 1;
  }
  long long vx = upperdiv(s - stk[pos].y, stk[pos].slp) + stk[pos].x;
  if (pos != cnt && vx >= stk[pos + 1].x) vx = stk[pos + 1].x;
  printf("%lld\n", vx);
  return 0;
}
