#include <bits/stdc++.h>
using namespace std;
int n;
long long l;
int k;
int a[1000005];
int b[1000005];
int len;
int c[1000005];
long long way[1000005];
const int Mod = 1000000007;
int main() {
  cin >> n >> l >> k;
  for (int i = (int)(0); i < (int)(n); ++i) scanf("%d", a + i), b[i] = a[i];
  sort(b, b + n);
  auto pt = unique(b, b + n);
  len = pt - b;
  for (int i = (int)(0); i < (int)(n); ++i) a[i] = lower_bound(b, pt, a[i]) - b;
  for (int i = (int)(0); i < (int)(n); ++i) ++c[a[i]];
  for (int i = (int)(0); i < (int)(n); ++i) way[i] = 1;
  long long R = 0;
  for (int ttt = (int)(0); ttt < (int)(k); ++ttt) {
    for (long long i = (long long)(max((long long)0, l - n));
         i < (long long)(l); ++i) {
      if (i / n < ttt) continue;
      R += way[a[i % n]] * ((i / n - ttt + 1) % Mod);
      R %= Mod;
    }
    for (int i = (int)(0); i < (int)(len); ++i) way[i] = (way[i] * c[i]) % Mod;
    for (int i = (int)(1); i < (int)(len); ++i) {
      way[i] += way[i - 1];
      if (way[i] >= Mod) way[i] -= Mod;
    }
  }
  cout << R << endl;
  return 0;
}
