#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
int n, k;
long long l;
pair<int, int> a[1000010];
int main() {
  cin >> n >> l >> k;
  for (int i = 0; i < n; i++) {
    cin >> a[i].first;
    a[i].second = i;
  }
  sort(a, a + n);
  vector<vector<int> > dp(k, vector<int>(n));
  for (int i = 0; i < n; i++) dp[0][i] = 1;
  for (int i = 1; i < k; i++) {
    int sum = 0;
    for (int j = 0, k = 0; j < n; j++) {
      while (k < n && a[k].first <= a[j].first)
        sum = (sum + dp[i - 1][k++]) % mod;
      dp[i][j] = sum;
    }
  }
  long long ans = 0;
  long long t1 = l / n, t2 = l % n;
  for (int i = 0; i < k; i++) {
    for (int j = 0; j < n; j++) {
      long long cnt = t1 + (a[j].second < t2);
      if (cnt <= i) continue;
      ans += ((cnt - i) % mod * dp[i][j] % mod) % mod;
      ans %= mod;
    }
  }
  if (ans < 0) ans += mod;
  cout << ans << endl;
  return 0;
}
