func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 15;   const int maxt = 235;   const int MOD = 1e9 + 7;   inline void upd(int &a, int b) {     a += b;     if (a >= MOD) a -= MOD;   }   int n, T;   int dp[maxt][1 << maxn][3], t[maxn], g[maxn];   int main() {     scanf( %d%d , &n, &T);     for (int(i) = (0); (i) <= ((n)-1); (i)++) {       scanf( %d%d , t + i, g + i);       g[i]--;     }     for (int(i) = (0); (i) <= ((n)-1); (i)++) dp[t[i]][1 << i][g[i]] = 1;     for (int(i) = (1); (i) <= (T - 1); (i)++)       for (int(mask) = (0); (mask) <= ((1 << n) - 1); (mask)++)         for (int(k) = (0); (k) <= ((n)-1); (k)++)           if ((mask & (1 << k)) == 0 && t[k] + i <= T)             for (int(j) = (0); (j) <= ((3) - 1); (j)++)               if (j != g[k])                 upd(dp[i + t[k]][mask | (1 << k)][g[k]], dp[i][mask][j]);     int ans = 0;     for (int(mask) = (0); (mask) <= ((1 << n) - 1); (mask)++)       for (int(i) = (0); (i) <= ((3) - 1); (i)++) upd(ans, dp[T][mask][i]);     printf( %d , ans);   }   