#include <bits/stdc++.h>
using namespace std;
const long long md = 1e9 + 7;
int main() {
  int n, k, a;
  long long l;
  scanf("%d%lld%d", &n, &l, &k);
  map<int, int> kr;
  map<int, int> late;
  int gr = l % n == 0 ? n : l % n;
  for (int i = (0); i < int(n); ++i) {
    scanf("%d", &a);
    ++kr[a];
    if (i >= gr) ++late[a];
  }
  vector<int> flat, lfl;
  for (auto par : kr) {
    flat.push_back(par.second);
    lfl.push_back(late[par.first]);
  }
  int f = flat.size();
  vector<vector<long long> > dp(k, vector<long long>(f));
  for (int i = (0); i < int(f); ++i) dp[0][i] = flat[i];
  long long bnum = (1 + (l - 1) / n);
  long long ans = l % md;
  for (int i = (1); i < int(min((long long)k, bnum)); ++i) {
    long long bef = 0;
    for (int j = (0); j < int(f); ++j) {
      bef = (bef + dp[i - 1][j]) % md;
      dp[i][j] = bef * flat[j] % md;
      ans = (ans + (bnum % md - i) * dp[i][j] - bef * lfl[j]) % md;
    }
  }
  printf("%lld\n", (ans + md) % md);
}
