#include <stdio.h>
#include <stdlib.h>
#define REP(i, n) for(int i = 0; i < (n); ++i)
#define FOR(i, a, b) for(int i = (a); i < (b); ++i)

void yes_or_no(char boolean){
    if(boolean){
        printf("Yes\n");
    }else{
        printf("No\n");
    }
}

int comp(const void *a, const void *b){
    return *(long long*)b - *(long long *)a > 0? 1 : -1;
}

int main(){
    long long N, H;
    long long i;
    scanf("%lld %lld", &N, &H);

    long long use[N], throw[N];
    long long max = 0;
    
    for(i = 0; i < N; ++i){
        scanf("%lld %lld", &use[i], &throw[i]);

        if(max < use[i]){
            max = use[i];
        }
    }

    qsort(throw, N, sizeof(long long), comp);

    long long count = 0;
    for(i = 0; i < N; ++i){
        if(throw[i] < max){
            break;
        }
        H -= throw[i];
        count++;
    }
    if(max > 1){
        count += H/max;

        if(H % max > 0){
            count++;
        }
    }else if(max == 1){
        count += H;
    }
    printf("%lld\n", count);
    return 0;
}