#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
inline long long add(long long a, long long b) {
  a += b;
  if (a >= mod) return a - mod;
  return a;
}
inline long long mul(long long a, long long b) {
  a *= b;
  if (a >= mod) return a % mod;
  return a;
}
inline long long power(long long a, long long b) {
  long long p = 1;
  while (b) {
    if (b & 1) p = mul(p, a);
    a = mul(a, a);
    b /= 2;
  }
  return p;
}
const int N = 230;
const int M = (1 << 15);
int n;
int a[20];
int g[20];
int dp[N][M][4];
int memo(int T, int msk, int last) {
  if (T < 0) return 0;
  if (T == 0) return 1;
  if (dp[T][msk][last] != -1) return dp[T][msk][last];
  int res = 0;
  for (int i = 0; i < n; i++) {
    if (T >= a[i] && g[i] != last && (msk & (1 << i)) == 0) {
      res = add(res, memo(T - a[i], msk | (1 << i), g[i]));
    }
  }
  return dp[T][msk][last] = res;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int T;
  cin >> n >> T;
  for (int i = 0; i < n; i++) {
    cin >> a[i] >> g[i];
  }
  memset(dp, -1, sizeof dp);
  cout << memo(T, 0, 0) << '\n';
  return 0;
}
