func_code_string: #include <bits/stdc++.h>   using namespace std;   long long mod = 1000000007;   int main() {     long long dp[3001][100][2] = {0};     long long n, l;     cin >> n >> l;     vector<long long> a(n), b(n);     for (long long i = 0; i < n; ++i) {       cin >> a[i] >> b[i];       dp[a[i]][i][0] = 1;       dp[b[i]][i][1] = 1;     }     for (long long i = 1; i <= l; ++i) {       for (long long j = 0; j < n; ++j) {         for (long long k = 0; k < n; ++k) {           if (j != k) {             if (a[j] == b[k] && i - a[j] >= 0) {               dp[i][j][0] = (dp[i][j][0] + dp[i - a[j]][k][0]) % mod;             }             if (a[j] == a[k] && a[k] != b[k] && i - a[j] >= 0) {               dp[i][j][0] = (dp[i][j][0] + dp[i - a[j]][k][1]) % mod;             }             if (b[j] == b[k] && a[j] != b[j] && i - b[j] >= 0) {               dp[i][j][1] = (dp[i][j][1] + dp[i - b[j]][k][0]) % mod;             }             if (b[j] == a[k] && a[j] != b[j] && a[k] != b[k] && i - b[j] >= 0) {               dp[i][j][1] = (dp[i][j][1] + dp[i - b[j]][k][1]) % mod;             }           }         }       }     }     long long res = 0;     for (long long i = 0; i < n; ++i) {       res = (res + dp[l][i][0]) % mod;       if (a[i] != b[i]) res = (res + dp[l][i][1]) % mod;     }     cout << res << endl;     return 0;   }   