func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long Base = 1e9 + 7;   struct Matrix {     int n, m;     long long cost[101][101];     Matrix() {}     Matrix(int n_, int m_) {       n = n_, m = m_;       for (int i = 0; i <= n; i++)         for (int j = 0; j <= m; j++) cost[i][j] = 0;     }     Matrix operator*(Matrix b) {       Matrix c = Matrix(n, b.m);       for (int i = 0; i <= n; i++)         for (int j = 0; j <= b.m; j++)           for (int k = 0; k <= m; k++)             c.cost[i][j] =                 (c.cost[i][j] + cost[i][k] * b.cost[k][j] % Base) % Base;       return c;     }   };   Matrix operator^(Matrix a, long long b) {     Matrix c = Matrix(a.n, a.m);     bool ok = false;     while (b > 0) {       if (b & 1) {         if (!ok)           c = a;         else           c = c * a;         ok = true;       }       a = a * a;       b >>= 1;     }     return c;   }   const long long N = 1e6 + 1;   long long n, l, m;   long long a[N], b[N], c[N], counts[N], counts_[N];   int main() {     scanf( %lld%lld%lld , &n, &l, &m);     for (int i = 1; i <= n; i++) {       scanf( %lld , &a[i]);       a[i] %= m;       counts[a[i]]++;     }     for (int i = 1; i <= n; i++) {       scanf( %lld , &b[i]);       b[i] %= m;       counts_[b[i]]++;     }     for (int i = 1; i <= n; i++) {       scanf( %lld , &c[i]);       c[i] %= m;     }     Matrix x = Matrix(m - 1, 0);     for (int i = 0; i <= m - 1; i++) x.cost[i][0] = counts[i];     if (l > 2) {       Matrix tmp = Matrix(m - 1, m - 1);       for (int i = 0; i <= m - 1; i++)         for (int j = 0; j <= m - 1; j++)           if (i < j)             tmp.cost[i][j] = counts_[i + m - j] % Base;           else             tmp.cost[i][j] = counts_[i - j] % Base;       tmp = tmp ^ (l - 2);       x = tmp * x;     }     for (int i = 1; i <= n; i++) c[i] = (c[i] + b[i]) % m;     long long ans = 0;     for (int i = 1; i <= n; i++)       if (c[i] == 0)         ans = (ans + x.cost[0][0]) % Base;       else         ans = (ans + x.cost[m - c[i]][0]) % Base;     cout << ans;   }   