import java.io.PrintWriter
import kotlin.comparisons.compareByDescending
import kotlin.comparisons.thenByDescending

fun next() = readLine()!!
fun nextInt() = next().toInt()
fun nextLong() = next().toLong()
fun nextDouble() = next().toDouble()
fun nextList() = next().split(" ")
fun nextIntList() = nextList().map(String::toInt)
fun nextLongList() = nextList().map(String::toLong)
fun nextDoubleList() = nextList().map(String::toDouble)

val pw = PrintWriter(System.out)
fun print(s: Any = "") = pw.print(s)
fun println(s: Any = "") = pw.println(s)

fun <T> Iterable<T>.join(separator: CharSequence = ", ", prefix: CharSequence = "", postfix: CharSequence = "") = joinToString(separator, prefix, postfix)

fun main(args: Array<String>) {
    main()
    pw.flush()
}

fun main() {
    val (N, H) = nextIntList()
    val AB = Array(N) {
        val (a, b) = nextLongList()
        P(a, b)
    }.sortedWith(compareByDescending(P::a).thenByDescending(P::b))
    val top = AB.first()
    var ans = 1 + (H - top.b + top.a - 1) / top.a
    var h = top.b + top.a * ((H - top.b + top.a - 1) / top.a)
    val CD = AB.drop(1).sortedByDescending { it.b }
    for (p in CD) {
        val (a, b) = p
        val n = (h + b - H) / top.a
        if (n <= 0 || (n == 1L && top.a >= b)) break
        ans -= n - 1
        h += b - top.a * n
    }
    println(ans)
}

data class P(val a: Long, val b: Long)