#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 105
#define mod 1000000007
ll n, k, i, j, x, res, tmp, ans;
ll freq[maxn];
struct matran
{
        ll a[101][101];
        void print()
        {
                for (ll i = 0; i < 101; i++)
                {
                        for (ll j = 0; j < 101; j++)
                                cout << a[i][j] << " ";
                        cout << '\n';
                }
        }
};
struct matran_1
{
        ll a[1][101];
        void print()
        {
                for (ll i = 0; i < 1; i++)
                {
                        for (ll j = 0; j < 101; j++)
                                cout << a[i][j] << " ";
                        cout << '\n';
                }
        }
};
matran mot, M;
matran_1 init, ress;
matran prod(matran A, matran B)
{
        matran C;
        for (ll i = 0; i < 101; i++)
                for (ll j = 0; j < 101; j++)
                        C.a[i][j] = 0;
        for (ll i = 0; i < 101; i++)
                for (ll j = 0; j < 101; j++)
                        for (ll k = 0; k < 101; k++)
                                C.a[i][j] = (C.a[i][j] + A.a[i][k] % mod * B.a[k][j] % mod) % mod;
        return C;
}
matran_1 prod1(matran_1 A, matran B)
{
        matran_1 C;
        for (ll i = 0; i < 1; i++)
                for (ll j = 0; j < 101; j++)
                        C.a[i][j] = 0;
        for (ll i = 0; i < 1; i++)
                for (ll j = 0; j < 101; j++)
                        for (ll k = 0; k < 101; k++)
                                C.a[i][j] = (C.a[i][j] + A.a[i][k] % mod * B.a[k][j] % mod) % mod;
        return C;
}
matran po(matran A, ll n)
{
        matran res = A, ans = mot;
        while (n)
        {
                if (n % 2)
                        ans = prod(ans, res);
                res = prod(res, res);
                n /= 2;
        }
        return ans;
}

int main()
{
      

        cin >> n >> k;
        for (i = 0; i < n; i++)
        {
                cin >> x;
                freq[x]++;
        }
        for (ll i = 0; i < 101; i++)
                for (ll j = 0; j < 101; j++)
                        if (i == j)
                                mot.a[i][j] = 1;
                        else
                                mot.a[i][j] = 0;
        for (ll i = 0; i < 101; i++)
                for (ll j = 0; j < 101; j++)
                {
                        if (j == 0 && (i <= 1))
                                M.a[i][j] = 1;
                        else if (j == 0 && (i > 1))
                                M.a[i][j] = 0;
                        if (j == 1 && i == 0)
                                M.a[i][j] = 0;
                        else if (j == 1 && i > 0)
                                M.a[i][j] = freq[i];
                        if (j >= 2)
                        {
                                if (j - i == 1)
                                        M.a[i][j] = 1;
                                else
                                        M.a[i][j] = 0;
                        }
                }
        for (i = 0; i < 1; i++)
                for (j = 0; j < 101; j++)
                {
                        if (j == 0)
                                init.a[i][j] = 0;
                        if (j == 1)
                                init.a[i][j] = 1;
                        if (j > 1)
                                init.a[i][j] = 0;
                }
        ress = prod1(init, po(M, k+1));
        cout << ress.a[0][0]<<'\n';
        // for(i=1;i<=5;i++) cout<<freq[i]<<" ";
        // cout<<'\n';
        // init.print();
        // cout<<"-----\n";
        // M.print();
        // cout<<"------\n";
        // po(mot,3).print();
        // cout<<'\n';
        return 0;
}