#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define ll long long
#define ull unsigned long long
#define pll pair<ll,ll>
#define pb push_back
#define emb emplace_back
#define lg(x) __lg(x)
#define all(s) s.begin(),s.end()
#define name "test"
#define Mask(i) (1LL<<i)
#define testbit(mask, i) ((mask >> i) & 1LL)
#define onBit(mask, i) (mask | (1LL << i))
#define offBit(mask, i) (mask & ~(1LL << i))
#define flipBit(mask, i) (mask ^ (1LL << i))
#define showbit(mask, x) bitset<x>(mask)
const ll mod = 1e9 + 7;
void add(ll &a, ll b){
if((a += b) >= mod) a -= mod;
}
const ll inf = 1e18;
const ll lim = 1e7 + 5;
const ll N = 1e5 + 5;
ll a[N];
ll dp1[N], dp2[N];
ll bit[N];
void update(int u, ll val){
for(int i = u; i < N; i += i & -i)
bit[i] = (bit[i] + val) % mod;
}
ll get(int u){
ll res = 0;
for(int i = u; i > 0; i -= i & -i)
res = (res + bit[i]) % mod;
return res;
}
int main()
{
ios_base::sync_with_stdio(0);
cout.tie(0);cin.tie(0);
if(fopen(name".inp","r")){
freopen(name".inp","r",stdin);
freopen(name".out","w",stdout);
}
int n, k; cin >> n >> k;
vector<int> zip;
for(int i = 1; i <= n; i++){
cin >> a[i];
zip.pb(a[i]);
}
sort(all(zip));
zip.erase(unique(all(zip)), zip.end());
for(int i = 1; i <= n; i++) a[i] = lower_bound(all(zip), a[i]) - zip.begin() + 1;
for(int i = 1; i <= n; i++){
dp1[i] = 1;
}
for(int j = 2; j <= k; j++){
update(a[j - 1], dp1[j - 1]);
for(int i = j; i <= n; i++){
dp2[i] = get(a[i] - 1);
update(a[i], dp1[i]);
}
update(a[j - 1], -dp1[j - 1]);
for(int i = j; i <= n; i++){
update(a[i], -dp1[i]);
dp1[i] = dp2[i];
}
}
ll res = 0;
for(int i = k; i <= n; i++) res = (res + dp1[i]) % mod;
cout << res;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHVsbCB1bnNpZ25lZCBsb25nIGxvbmcKI2RlZmluZSBwbGwgcGFpcjxsbCxsbD4KI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBlbWIgZW1wbGFjZV9iYWNrCiNkZWZpbmUgbGcoeCkgX19sZyh4KQojZGVmaW5lIGFsbChzKSBzLmJlZ2luKCkscy5lbmQoKQojZGVmaW5lIG5hbWUgInRlc3QiCiNkZWZpbmUgTWFzayhpKSAoMUxMPDxpKQojZGVmaW5lIHRlc3RiaXQobWFzaywgaSkgKChtYXNrID4+IGkpICYgMUxMKQojZGVmaW5lIG9uQml0KG1hc2ssIGkpIChtYXNrIHwgKDFMTCA8PCBpKSkKI2RlZmluZSBvZmZCaXQobWFzaywgaSkgKG1hc2sgJiB+KDFMTCA8PCBpKSkKI2RlZmluZSBmbGlwQml0KG1hc2ssIGkpIChtYXNrIF4gKDFMTCA8PCBpKSkKI2RlZmluZSBzaG93Yml0KG1hc2ssIHgpIGJpdHNldDx4PihtYXNrKQpjb25zdCBsbCBtb2QgPSAxZTkgKyA3OwoKdm9pZCBhZGQobGwgJmEsIGxsIGIpewogICAgIGlmKChhICs9IGIpID49IG1vZCkgYSAtPSBtb2Q7Cn0KCgpjb25zdCBsbCBpbmYgPSAxZTE4Owpjb25zdCBsbCBsaW0gPSAxZTcgKyA1Owpjb25zdCBsbCBOID0gMWU1ICsgNTsKCmxsIGFbTl07CmxsIGRwMVtOXSwgZHAyW05dOwoKbGwgYml0W05dOwp2b2lkIHVwZGF0ZShpbnQgdSwgbGwgdmFsKXsKICAgICBmb3IoaW50IGkgPSB1OyBpIDwgTjsgaSArPSBpICYgLWkpCiAgICAgICAgICBiaXRbaV0gPSAoYml0W2ldICsgdmFsKSAlIG1vZDsKfQpsbCBnZXQoaW50IHUpewogICAgIGxsIHJlcyA9IDA7CiAgICAgZm9yKGludCBpID0gdTsgaSA+IDA7IGkgLT0gaSAmIC1pKQogICAgICAgICAgcmVzID0gKHJlcyArIGJpdFtpXSkgJSBtb2Q7CiAgICAgcmV0dXJuIHJlczsKfQppbnQgbWFpbigpCnsKICAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgIGNvdXQudGllKDApO2Npbi50aWUoMCk7CiAgICAgaWYoZm9wZW4obmFtZSIuaW5wIiwiciIpKXsKICAgICAgICAgIGZyZW9wZW4obmFtZSIuaW5wIiwiciIsc3RkaW4pOwogICAgICAgICAgZnJlb3BlbihuYW1lIi5vdXQiLCJ3IixzdGRvdXQpOwogICAgIH0KCiAgICAgaW50IG4sIGs7IGNpbiA+PiBuID4+IGs7CiAgICAgdmVjdG9yPGludD4gemlwOwogICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgICAgemlwLnBiKGFbaV0pOwogICAgIH0KICAgICBzb3J0KGFsbCh6aXApKTsKICAgICB6aXAuZXJhc2UodW5pcXVlKGFsbCh6aXApKSwgemlwLmVuZCgpKTsKICAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgYVtpXSA9IGxvd2VyX2JvdW5kKGFsbCh6aXApLCBhW2ldKSAtIHppcC5iZWdpbigpICsgMTsKCiAgICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgICAgZHAxW2ldID0gMTsKICAgICB9CiAgICAgZm9yKGludCBqID0gMjsgaiA8PSBrOyBqKyspewogICAgICAgICAgdXBkYXRlKGFbaiAtIDFdLCBkcDFbaiAtIDFdKTsKICAgICAgICAgIGZvcihpbnQgaSA9IGo7IGkgPD0gbjsgaSsrKXsKICAgICAgICAgICAgICAgZHAyW2ldID0gZ2V0KGFbaV0gLSAxKTsKICAgICAgICAgICAgICAgdXBkYXRlKGFbaV0sIGRwMVtpXSk7CiAgICAgICAgICB9CiAgICAgICAgICB1cGRhdGUoYVtqIC0gMV0sIC1kcDFbaiAtIDFdKTsKICAgICAgICAgIGZvcihpbnQgaSA9IGo7IGkgPD0gbjsgaSsrKXsKICAgICAgICAgICAgICAgdXBkYXRlKGFbaV0sIC1kcDFbaV0pOwogICAgICAgICAgICAgICBkcDFbaV0gPSBkcDJbaV07CiAgICAgICAgICB9CiAgICAgfQogICAgIGxsIHJlcyA9IDA7CiAgICAgZm9yKGludCBpID0gazsgaSA8PSBuOyBpKyspIHJlcyA9IChyZXMgKyBkcDFbaV0pICUgbW9kOwogICAgIGNvdXQgPDwgcmVzOwp9CgoKCgoKCgoK