#include <bits/stdc++.h>
using namespace std;
long long n, T;
long long md = 1e9 + 7;
long long len[20];
long long gen[20];
int Set(int N, int pos) { return N = N | (1 << pos); }
bool check(int N, int pos) { return (bool)(N & (1 << pos)); }
long long dp[1 << 15][4];
long long func(int mask, int prevgen, int totlen) {
  if (totlen == 0) return 1;
  if (totlen < 0) return 0;
  if (dp[mask][prevgen] != -1) {
    return dp[mask][prevgen];
  }
  long long ret = 0;
  for (int i = 0; i < n; i++) {
    if (check(mask, i) == 0 && prevgen != gen[i]) {
      ret += func(Set(mask, i), gen[i], totlen - len[i]);
      ret %= md;
    }
  }
  return dp[mask][prevgen] = ret;
}
int main() {
  memset(dp, -1, sizeof dp);
  cin >> n >> T;
  for (int i = 0; i < n; i++) {
    cin >> len[i] >> gen[i];
  }
  cout << func(0, 0, T);
}
