#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010, MOD = 1e9+7;
int n,m;
int f[N],g[N];
int main()
{
int v,w;
cin>>n>>m;
for(int i=0;i<=m;i++)g[i]=1;
for(int i=1;i<=n;i++)
{
cin>>v>>w;
for(int j=m;j>=v;j--)
{
if(f[j]<f[j-v]+w) //以下四行用来求方案数
g[j]=g[j-v];
else if(f[j]==f[j-v]+w)
g[j] = (g[j]+g[j-v]) % MOD;
f[j]=max(f[j],f[j-v]+w);
}
}
cout<<g[m];
return 0;
}