func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e2 + 5;   const int MOD = 1e9 + 7;   long long cnt[N], x;   int n, tmp;   vector<vector<long long> > matMul(vector<vector<long long> > &A,                                     vector<vector<long long> > &B) {     vector<vector<long long> > C(N, vector<long long>(N, 0));     for (int i = 0; i < N; i++) {       for (int j = 0; j < N; j++) {         for (int k = 0; k < N; k++) {           C[i][j] = (C[i][j] + (A[i][k] * B[k][j]) % MOD) % MOD;         }       }     }     return C;   }   vector<vector<long long> > matPow(vector<vector<long long> > &A, int b) {     if (b == 1) return A;     vector<vector<long long> > ans = matPow(A, b >> 1);     ans = matMul(ans, ans);     if (b & 1) ans = matMul(ans, A);     return ans;   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     cin >> n >> x;     for (int i = 0; i < n; i++) {       cin >> tmp;       cnt[tmp]++;     }     if (x == 0) {       cout <<  1 n ;       return 0;     }     vector<vector<long long> > res(N, vector<long long>(N, 0));     for (int i = 1; i <= 100; i++) {       res[0][i - 1] = cnt[i];       if (i < 100) res[i][i - 1] = 1;     }     res[0][100] = 1;     res[100][100] = 1;     res = matPow(res, x);     long long ans = (res[0][0] + res[0][100]) % MOD;     cout << ans <<   n ;     return 0;   }   