#include <bits/stdc++.h>
using namespace std;
long long D[3047][147][2];
int main() {
  int n, l;
  scanf("%d %d ", &n, &l);
  vector<pair<int, int> > A;
  for (int i = 0; i < n; i++) {
    int x, y;
    scanf("%d %d ", &x, &y);
    A.push_back(make_pair(x, y));
    if (x == y) D[x][i][1]--;
    D[y][i][0] += 1;
    D[x][i][1] += 1;
  }
  for (int i = 1; i <= l; i++) {
    for (int j = 0; j < n; j++) {
      for (int k = 0; k < n; k++) {
        if (j == k) continue;
        if (A[j].first != A[j].second) {
          if (i - A[j].second >= 0 && A[k].first == A[j].second)
            D[i][j][0] += D[i - A[j].second][k][0];
          if (i - A[j].second >= 0 && A[k].second == A[j].second)
            D[i][j][0] += D[i - A[j].second][k][1];
          if (i - A[j].first >= 0 && A[k].first == A[j].first)
            D[i][j][1] += D[i - A[j].first][k][0];
          if (i - A[j].first >= 0 && A[k].second == A[j].first)
            D[i][j][1] += D[i - A[j].first][k][1];
        } else {
          if (i - A[j].second >= 0 && A[k].first == A[j].second)
            D[i][j][0] += D[i - A[j].second][k][0];
          if (i - A[j].second >= 0 && A[k].second == A[j].second)
            D[i][j][0] += D[i - A[j].second][k][1];
        }
        D[i][j][0] %= 1000000007;
        D[i][j][1] %= 1000000007;
      }
    }
  }
  long long sum = 0;
  for (int i = 0; i < n; i++) {
    sum += D[l][i][0];
    sum += D[l][i][1];
    sum %= 1000000007;
  }
  cout << sum << endl;
  return 0;
}
