#include <bits/stdc++.h>
using namespace std;
const int T = 1e9 + 7;
long long f[1000100], sum[1000010];
int num[1000010], a[1000100];
long long n, L, k;
bool cmp(const int A, const int B) { return a[A] < a[B]; }
int main() {
  cin >> n >> L >> k;
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++) f[i] = 1;
  for (int i = 1; i <= n; i++) num[i] = i;
  k--;
  long long ans = L;
  ans %= T;
  sort(num + 1, num + 1 + n, cmp);
  for (int l = 1; l <= k; l++) {
    sum[0] = 0;
    for (int i = 1; i <= n; i++) {
      sum[i] = sum[i - 1] + f[num[i]];
      if (sum[i] >= T) sum[i] -= T;
    }
    int j = 1;
    for (int i = 1; i <= n; i++) {
      while (a[num[j]] <= a[num[i]] && j <= n) j++;
      j--;
      f[num[i]] = sum[j];
    }
    for (int i = 1; i <= n; i++) {
      long long len = L / n - l;
      if (L % n >= i) len++;
      len %= T;
      if (len <= 0) continue;
      ans += len * f[i] % T;
      ans %= T;
    }
  }
  cout << ans << endl;
  return 0;
}
