#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const int N = 1000006;
long long int dp[2][N];
long long int F[N], IF[N];
int A[N];
long long int _pow(long long int a, long long int b) {
  if (!b) return 1;
  if (b == 1) return a;
  if (b == 2) return a * a % mod;
  if (b & 1) {
    return a * _pow(a, b - 1) % mod;
  }
  return _pow(_pow(a, b / 2), 2);
}
void pre() {
  F[0] = 1;
  for (int i = 1; i < N; i++) {
    F[i] = F[i - 1] * i % mod;
  }
  IF[N - 1] = _pow(F[N - 1], mod - 2);
  for (int i = N - 2; i >= 0; i--) {
    IF[i] = IF[i + 1] * (i + 1) % mod;
  }
}
void pre(long long int n, long long int r, long long int A[]) {
  if (n < 0) return;
  r = min(n, r);
  A[0] = 1;
  long long int tmp = 1;
  for (int i = 1; i < r + 1; i++) {
    tmp = tmp * ((n + 1 - i) % mod) % mod;
    A[i] = tmp * IF[i] % mod;
  }
}
long long int AA[N], BB[N];
int B[N];
int main() {
  int n;
  long long int l;
  long long int k;
  cin >> n >> l >> k;
  pre();
  long long int last = l % n;
  long long int full = l / n;
  pre(full, k, AA);
  pre(full - 1, k, BB);
  for (int i = 0; i < n; i++) {
    scanf("%d", &A[i]);
    B[i] = A[i];
  }
  sort(A, A + n);
  sort(B, B + last);
  A[n] = 1000000009;
  long long int ans = last;
  int a = 1, b = 0;
  for (int i = 0; i < n + 1; i++) dp[0][i] = 1;
  for (int i = 1; i < k + 1; i++) {
    int prev, cnt;
    for (int j = 0; j < n; j++) {
      if (!j) {
        dp[a][j] = dp[b][j];
        prev = 0;
        cnt = 1;
      } else {
        if (A[j] == A[j - 1]) {
          cnt++;
        } else {
          prev = j;
          cnt = 1;
        }
        dp[a][j] = dp[b][j] * cnt + (prev ? dp[a][prev - 1] : 0);
        dp[a][j] %= mod;
      }
    }
    if (last && i < k && i <= full) {
      int ida, idb;
      ida = idb = 0;
      while (idb < last) {
        while (ida < n && A[ida] <= B[idb]) ida++;
        ans += dp[a][ida - 1];
        ans %= mod;
        idb++;
      }
    }
    if (full + 1 - i > 0) {
      ans += ((full + 1 - i) % mod) * dp[a][n - 1];
      ans %= mod;
    }
    swap(a, b);
  }
  cout << ans << "\n";
}
