/*
TASK:lift
LANG:C++
*/
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
#define MN 15
struct lift
{
    int v,t;
}a[MN];
int n,t,v[MN],br,brmax;
void solve()
{
    int i,j,min=5001,mini=1,ti=0,vi;
    int lamp =0;
    cin>>n>>t;
    for(i=1;i<=n;i++)
    {
        cin>>a[i].v>>a[i].t;
        if(min>a[i].v)
        {
            min=a[i].v;
            mini=i;
        }
    }
    ti=a[mini].t;
    vi=a[mini].v;
    v[mini]=1;
    for(i=1;i<=n;i++)
    {
        if(a[i].t+ti<=t&&!v[i])
        {v[i]=1;ti+=a[i].t;vi=max(a[i].v,vi);lamp=0;}
        else
        {
            br+=vi;
            ti=a[mini].t;
            vi=a[mini].v;
            br+=vi;
            i--;
            if(!lamp)
            lamp=1;
            else {br=0;break;}
        }
    }
    brmax=br;
    br=0;
    min=5000;
    for(i=1;i<=n;i++)
    {
        if(min>a[i].t)
        {
            min=a[i].t;
            mini=i;
        }
        v[i]=0;
    }
    ti=a[mini].t;
    vi=a[mini].v;
    v[mini]=1;
    for(i=1;i<=n;i++)
    {
        if(a[i].t+ti<=t&&!v[i])
        {v[i]=1;ti+=a[i].t;vi=max(a[i].v,vi);lamp=0;}
        else
        {
            br+=vi;
            ti=a[mini].t;
            vi=a[mini].v;
            br+=vi;
            i--;
            if(!lamp)
            lamp=1;
            else {br=0;break;}
        }
    }
    if(brmax<br)brmax=br;
    cout<<brmax<<endl;
}
int main()
{
    solve();
    system("pause");
    return 0;
    
}
