#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int N = 1e6 + 5;
const int INF = 0X3f3f3f3f;
int b[N];
long long dp[N];
pair<int, int> a[N];
long long add(long long x, long long y) {
  x += y;
  x %= mod;
  return x;
}
int main() {
  int n, k;
  int i, j;
  long long l;
  scanf("%d%lld%d", &n, &l, &k);
  for (i = 0; i < n; i++) scanf("%d", b + i);
  int m = n * k;
  for (i = 0; i < m; i++) {
    a[i].first = b[i % n];
    a[i].second = i;
    dp[i] = 0;
  }
  sort(a, a + m);
  long long ans = l % mod;
  int yu = l % n;
  for (i = 0; i < m; i++) {
    int id = a[i].second;
    if (id < n)
      dp[id / n] = add(dp[id / n], 1);
    else
      dp[id / n] = add(dp[id / n], dp[id / n - 1]);
    if (id < l && id >= n) {
      long long cnt = (l - 1) / n - id / n + 1;
      if (yu && (id % n) > yu - 1) cnt--;
      ans = add(ans, cnt % mod * dp[id / n - 1] % mod);
    }
  }
  printf("%lld\n", ans);
  return 0;
}
