func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 100, mod = 1e9 + 7;   long long a[N], k, n;   struct mat {     int d[N][N];     mat() { memset(d, 0, sizeof d); }     mat operator*(const mat& o) {       mat p;       for (int i = 0; i < n; i++) {         for (int j = 0; j < n; j++) {           for (int k = 0; k < n; k++) {             p.d[i][j] = (p.d[i][j] + 1ll * d[i][k] * o.d[k][j]) % mod;           }         }       }       return p;     }     mat pw(long long k) {       mat result;       for (int i = 0; i < n; i++) result.d[i][i] = 1;       mat s = *this;       while (k) {         if (k & 1) {           result = result * s;         }         s = s * s;         k >>= 1;       }       return result;     }   };   int main() {     cin >> n >> k;     for (int i = 0; i < n; i++) cin >> a[i];     mat adj;     for (int i = 0; i < n; i++) {       for (int j = 0; j < n; j++) {         long long x = a[i] ^ a[j];         int cnt = 0;         while (x) {           if (x & 1) cnt++;           x >>= 1;         }         if (cnt % 3 == 0) adj.d[i][j] = 1;       }     }     mat r = adj.pw(k - 1);     int ans = 0;     for (int i = 0; i < n; i++) {       for (int j = 0; j < n; j++) {         ans = (ans + r.d[i][j]) % mod;       }     }     cout << ans << endl;     return 0;   }   