#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int MOD = 5e6;
const int N = 1e4 + 5;
const int K = 55;
const int S = 1e5 + 5;
int n, k;
int a[N];
int dp[N][K]; // dp[i][k] = số dãy con tăng độ dài k mà kết thúc tại i
int ft[K][S];
int getSum(int len, int i) {
int ans = 0;
for (; i > 0; i -= i & (-i)) (ans += ft[len][i]) %= MOD;
return ans;
}
void update(int len, int i, int val) {
for (; i < S; i += i & (-i)) (ft[len][i] += val) %= MOD;
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n >> k;
for (int i = 1; i <= n; i++) cin >> a[i], ++a[i];
// for (int i = 1; i <= n; i++) {
// // a[i] đứng một mình
// dp[i][1] = 1;
// for (int len = 2; len <= k; len++) {
// int sum_dp = 0;
// for (int j = 1; j < i; j++) {
// // lấy tổng dp[j][len - 1] của những thằng j đằng trước
// // sao cho a[j] thuộc đoạn [1, a[i] - 1]
// if (a[j] < a[i]) (sum_dp += dp[j][len - 1]) %= MOD;
// }
// (dp[i][len] += sum_dp) %= MOD;
// }
// } // O(n^2 * k)
for (int i = 1; i <= n; i++) {
dp[i][1] = 1;
for (int len = 2; len <= k; len++) {
int sum_dp = getSum(len - 1, a[i] - 1);
(dp[i][len] += sum_dp) %= MOD;
}
for (int len = 1; len <= k; len++) update(len, a[i], dp[i][len]);
}
int ans = 0;
for (int i = 1; i <= n; i++) {
(ans += dp[i][k]) %= MOD;
}
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCmNvbnN0IGludCBNT0QgPSA1ZTY7IApjb25zdCBpbnQgTiA9IDFlNCArIDU7ICAKY29uc3QgaW50IEsgPSA1NTsgIApjb25zdCBpbnQgUyA9IDFlNSArIDU7ICAKCmludCBuLCBrOyAgCmludCBhW05dOyAKaW50IGRwW05dW0tdOyAvLyBkcFtpXVtrXSA9IHPhu5EgZMOjeSBjb24gdMSDbmcgxJHhu5kgZMOgaSBrIG3DoCBr4bq/dCB0aMO6YyB04bqhaSBpICAKCmludCBmdFtLXVtTXTsgCgppbnQgZ2V0U3VtKGludCBsZW4sIGludCBpKSB7CglpbnQgYW5zID0gMDsgICAKCWZvciAoOyBpID4gMDsgaSAtPSBpICYgKC1pKSkgKGFucyArPSBmdFtsZW5dW2ldKSAlPSBNT0Q7IAoJcmV0dXJuIGFuczsgCn0KCnZvaWQgdXBkYXRlKGludCBsZW4sIGludCBpLCBpbnQgdmFsKSB7Cglmb3IgKDsgaSA8IFM7IGkgKz0gaSAmICgtaSkpIChmdFtsZW5dW2ldICs9IHZhbCkgJT0gTU9EOyAgCn0KCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7ICAJCgljaW4gPj4gbiA+PiBrOyAgICAgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldLCArK2FbaV07IAoJCgkvLyBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCS8vIAkvLyBhW2ldIMSR4bupbmcgbeG7mXQgbcOsbmggCgkvLyAJZHBbaV1bMV0gPSAxOyAgCgoJLy8gCWZvciAoaW50IGxlbiA9IDI7IGxlbiA8PSBrOyBsZW4rKykgewoJLy8gCQlpbnQgc3VtX2RwID0gMDsgICAKCS8vIAkJZm9yIChpbnQgaiA9IDE7IGogPCBpOyBqKyspIHsKCS8vIAkJCS8vIGzhuqV5IHThu5VuZyBkcFtqXVtsZW4gLSAxXSBj4bunYSBuaOG7r25nIHRo4bqxbmcgaiDEkeG6sW5nIHRyxrDhu5tjIAoJLy8gCQkJLy8gc2FvIGNobyBhW2pdIHRodeG7mWMgxJFv4bqhbiBbMSwgYVtpXSAtIDFdCgkvLyAJCQlpZiAoYVtqXSA8IGFbaV0pIChzdW1fZHAgKz0gZHBbal1bbGVuIC0gMV0pICU9IE1PRDsKCS8vIAkJfQoJLy8gCQkoZHBbaV1bbGVuXSArPSBzdW1fZHApICU9IE1PRDsKCS8vIAl9CgkvLyB9IC8vIE8obl4yICogaykgIAoKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWRwW2ldWzFdID0gMTsgICAKCgkJZm9yIChpbnQgbGVuID0gMjsgbGVuIDw9IGs7IGxlbisrKSB7CgkJCWludCBzdW1fZHAgPSBnZXRTdW0obGVuIC0gMSwgYVtpXSAtIDEpOwoJCQkoZHBbaV1bbGVuXSArPSBzdW1fZHApICU9IE1PRDsgIAoJCX0KCgkJZm9yIChpbnQgbGVuID0gMTsgbGVuIDw9IGs7IGxlbisrKSB1cGRhdGUobGVuLCBhW2ldLCBkcFtpXVtsZW5dKTsgCgl9CgoJaW50IGFucyA9IDA7ICAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCShhbnMgKz0gZHBbaV1ba10pICU9IE1PRDsgCgl9CgoJY291dCA8PCBhbnMgPDwgJ1xuJzsgCn0K