#include <bits/stdc++.h>
using namespace std;
short t[16], g[16];
const int m = 1e9 + 7;
int dp[(1 << 15)][226][3];
int32_t main() {
  int n, T;
  cin >> n >> T;
  for (int i = 0; i < n; i++) {
    cin >> t[i] >> g[i];
    g[i]--;
  }
  for (int i = 0; i < n; i++) {
    dp[(1 << i)][t[i]][g[i]]++;
  }
  int ans = 0, bit;
  for (int mask = 1; mask < (1 << n); mask++) {
    for (short i = 0; i < n; i++) {
      bit = (1 << i);
      if (!(bit & mask)) {
        for (short j = 0; j <= T - t[i]; j++) {
          if (g[i] == 0) {
            dp[mask | bit][j + t[i]][g[i]] +=
                (dp[mask][j][1] + dp[mask][j][2]) % m;
          }
          if (g[i] == 1) {
            dp[mask | bit][j + t[i]][g[i]] +=
                (dp[mask][j][0] + dp[mask][j][2]) % m;
          }
          if (g[i] == 2) {
            dp[mask | bit][j + t[i]][g[i]] +=
                (dp[mask][j][1] + dp[mask][j][0]) % m;
          }
          dp[mask | bit][j + t[i]][g[i]] %= m;
        }
      }
    }
  }
  for (int mask = 0; mask < (1 << n); mask++) {
    ans += ((dp[mask][T][0] + dp[mask][T][2]) % m + dp[mask][T][1]) % m;
    ans %= m;
  }
  cout << ans;
  return 0;
}
