#include <bits/stdc++.h>
using namespace std;
const int max_n = 2000 * 100 + 1000;
pair<long long, long long> p[max_n];
long long d[max_n], h, t, dp[max_n], inf;
inline long long when(int i, int j) {
  return (p[j].first - p[i].first - 1 + dp[i] - dp[j]) /
         (p[j].first - p[i].first);
}
inline long long hen(int i, int j) {
  return (dp[i] - dp[j]) / (p[j].first - p[i].first);
}
bool cmp(pair<long long, long long> i, pair<long long, long long> j) {
  return make_pair(i.second, i.first) < make_pair(j.second, j.first);
}
int main() {
  ios_base::sync_with_stdio(false);
  long long n, m;
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> p[i].first >> p[i].second;
  sort(p, p + n, cmp);
  memset(dp, 63, sizeof dp);
  inf = dp[0];
  for (int i = 0; i < n; i++) {
    if (t - h && p[d[t - 1]].first >= p[i].first) continue;
    while (t - h > 1 &&
           hen(d[h], d[h + 1]) * p[d[h]].first + dp[d[h]] < p[i].second)
      h++;
    if (p[i].second == 0)
      dp[i] = 0;
    else if (t - h) {
      long long time =
          (p[i].second - dp[d[h]] + p[d[h]].first - 1) / p[d[h]].first;
      long long rem = time * p[d[h]].first + dp[d[h]] - p[i].second;
      dp[i] = rem - time * p[i].first;
    } else
      continue;
    while (t - h > 1 && when(d[t - 2], d[t - 1]) >= when(d[t - 1], i)) t--;
    d[t++] = i;
  }
  long long ans = 1000 * 1000 * 1000 * 1LL * 1000 * 1000 * 1000;
  for (int i = 0; i < n; i++) {
    if (dp[i] == inf) continue;
    long long time = (m - dp[i] + p[i].first - 1) / p[i].first;
    ans = min(ans, time);
  }
  cout << ans << endl;
}
