/*
TASK:lift
LANG:C
*/

#include <stdio.h>

typedef struct turist_t
{
    int l;
    int m;
} turist;

int n, t;
turist a[14];

void msort()
{
    int i, j;
    int h, max;

    for(i = 0; i < n - 1; i++)
    {
        max = i;
        for(j = i + 1; j < n; j++) if(a[j].m > a[max].m) max = j;

        h = a[i].m;
        a[i].m = a[max].m;
        a[max].m = h;

        h = a[i].l;
        a[i].l = a[max].l;
        a[max].l = h;
    }
}

turist grupa(turist* a, int n)
{
    int i = 0;
    turist r;

    r.l = 0;
    r.m = 0;
    while(i < n)
    {
        if(a[i].l > r.l) r.l = a[i].l;
        r.m += a[i].m;
        i++;
    }

    return r;
}

//zasega raboti
int smetni(turist* a)
{
    int i = 0;
    int min = 0, max = 0;
    turist b[14];
    turist r;

    msort();
    if(((a[n - 2].m + a[n - 1].m) > t) || (a[0].m > t)) return 0;

    while(i < n)
    {
        max += a[i].l;
        i++;
    }
    //max += (n - 1) * a[n - 1].l;

    return max;
}

int main(int argc, char* argv[])
{
    int i = 0;

    scanf("%d %d", &n, &t);
    while(i < n)
    {
        scanf("%d %d", &(a[i].l), &(a[i].m));

        i++;
    }

    printf("%d\n", smetni(a));

    return 0;
}
