#include <bits/stdc++.h>
using namespace std;
long long mod1 = 998244353;
long long mod = 1e9 + 7;
const long long N = 105;
vector<pair<long long, long long> > a;
long long n, l;
long long dp[3005][N][N];
void solve() {
  cin >> n >> l;
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    a.push_back(make_pair(min(x, y), max(x, y)));
  }
  memset(dp, 0, sizeof(dp));
  int n1 = 104;
  for (int i = 0; i < n; i++)
    dp[0][a[i].first][n1] = 1, dp[0][a[i].second][n1] = 1;
  for (int i = 1; i <= l; i++) {
    for (int j = 0; j < n; j++) {
      if (i - a[j].second >= 0) {
        dp[i][a[j].first][j] += mod + dp[i - a[j].second][a[j].second][n1] -
                                dp[i - a[j].second][a[j].second][j];
        dp[i][a[j].first][j] %= mod;
      }
      if (a[j].second != a[j].first && i - a[j].first >= 0) {
        dp[i][a[j].second][j] += mod + dp[i - a[j].first][a[j].first][n1] -
                                 dp[i - a[j].first][a[j].first][j];
        dp[i][a[j].second][j] %= mod;
      }
    }
    for (int j = 0; j < n; j++) {
      dp[i][a[j].second][n1] =
          (dp[i][a[j].second][n1] + dp[i][a[j].second][j]) % mod;
      if (a[j].second != a[j].first)
        dp[i][a[j].first][n1] =
            (dp[i][a[j].first][n1] + dp[i][a[j].first][j]) % mod;
    }
  }
  long long ans = 0;
  for (int j = 1; j < 102; j++) {
    ans = (ans + dp[l][j][n1]) % mod;
  }
  cout << ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
