#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e5 + 5;
const int Mod = 1e9;
int a[N + 5], n, k, f[15][N];
void update(int k, int pos, int val){
while(pos <= n){
f[k][pos] = (f[k][pos] + val) % Mod;
pos += pos & -pos;
}
}
int get(int k, int pos){
int sum = 0;
while(pos > 0){
sum = (sum + f[k][pos]) % Mod;
pos -= pos & -pos;
}
return sum;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> k;
for(int i = 1; i <= n; i++){
cin >> a[i];
}
for(int i = 1; i <= n; i++){
update(1, a[i], 1);
for(int j = k; j >= 2; j--){
int cur = (get(j - 1, n) - get(j - 1, a[i]) + Mod) % Mod;
update(j, a[i], cur);
}
}
cout << get(k, n);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgaW50IGxvbmcgbG9uZwpjb25zdCBpbnQgTiA9IDFlNSArIDU7CmNvbnN0IGludCBNb2QgPSAxZTk7CmludCBhW04gKyA1XSwgbiwgaywgZlsxNV1bTl07CnZvaWQgdXBkYXRlKGludCBrLCBpbnQgcG9zLCBpbnQgdmFsKXsKICAgIHdoaWxlKHBvcyA8PSBuKXsKICAgICAgICBmW2tdW3Bvc10gPSAoZltrXVtwb3NdICsgdmFsKSAlIE1vZDsKICAgICAgICBwb3MgKz0gcG9zICYgLXBvczsKICAgIH0KfQppbnQgZ2V0KGludCBrLCBpbnQgcG9zKXsKICAgIGludCBzdW0gPSAwOwogICAgd2hpbGUocG9zID4gMCl7CiAgICAgICAgc3VtID0gKHN1bSArIGZba11bcG9zXSkgJSBNb2Q7CiAgICAgICAgcG9zIC09IHBvcyAmIC1wb3M7CiAgICB9CiAgICByZXR1cm4gc3VtOwp9CnNpZ25lZCBtYWluKCl7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgY2luID4+IG4gPj4gazsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgIH0KCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgICAgdXBkYXRlKDEsIGFbaV0sIDEpOwogICAgICAgIGZvcihpbnQgaiA9IGs7IGogPj0gMjsgai0tKXsKICAgICAgICAgICAgaW50IGN1ciA9IChnZXQoaiAtIDEsIG4pIC0gZ2V0KGogLSAxLCBhW2ldKSArIE1vZCkgJSBNb2Q7CiAgICAgICAgICAgIHVwZGF0ZShqLCBhW2ldLCBjdXIpOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGdldChrLCBuKTsKfQo=