#include <bits/stdc++.h>
using namespace std;
const int N = 105, MOD = 1e9 + 7;
int n, l, a[N], b[N], dp[N][3200][2];
inline void upd(int &x, int y) { x = (x + y) % MOD; }
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> l;
  for (int i = 1; i <= n; i++) {
    cin >> a[i] >> b[i];
    dp[i][a[i]][0]++;
    if (a[i] != b[i]) {
      dp[i][b[i]][1]++;
    }
  }
  for (int i = 1; i <= l; i++) {
    for (int prv = 1; prv <= n; prv++) {
      for (int cur = 1; cur <= n; cur++) {
        if (cur != prv) {
          if (a[cur] == b[prv]) {
            upd(dp[cur][i + a[cur]][0], dp[prv][i][0]);
          }
          if (a[cur] == a[prv]) {
            upd(dp[cur][i + a[cur]][0], dp[prv][i][1]);
          }
          if (a[cur] != b[cur]) {
            if (b[cur] == b[prv]) {
              upd(dp[cur][i + b[cur]][1], dp[prv][i][0]);
            }
            if (b[cur] == a[prv]) {
              upd(dp[cur][i + b[cur]][1], dp[prv][i][1]);
            }
          }
        }
      }
    }
  }
  int ans = 0;
  for (int i = 1; i <= n; i++) {
    upd(ans, dp[i][l][0]);
    upd(ans, dp[i][l][1]);
  }
  cout << ans;
}
