#include <iostream>
#include <map>
#include <stack>
#define BIGNUM 1000000007
using namespace std;
typedef struct {
int index;
int val;
}entry;
int main()
{
int n, k;
unsigned long long soln;
int i,j;
int e;
stack<entry>sa;
int sacount;
int sacurrindex, sacurrval;
unsigned long long p;
entry se;
cin >> n;
cin >> k;
//the basic idea is as follows
//we need to keep indices only when seniority is increasing
//when seniority decreases we map all values to lower value found
soln = 1;
for(i=0;i<n;i++) {
cin >> e;
//Go over the array from high seniority to low
while(!sa.empty()) {
sacurrindex = sa.top().index;
sacurrval = sa.top().val;
if (e >= sacurrval) {
break;
}
else {
p = i - sacurrindex + 1;
soln = soln * p;
soln = soln % BIGNUM;
}
sa.pop();
}
//add to sa
se.index = i;
se.val = e;
sa.push(se);
}
cout << soln << '\n';
return 0;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDxtYXA+CiAgICAjaW5jbHVkZSA8c3RhY2s+CiAgICAjZGVmaW5lIEJJR05VTSAxMDAwMDAwMDA3CiAgICAgCiAgICB1c2luZyBuYW1lc3BhY2Ugc3RkOwogICAgIAogICAgIAogICAgdHlwZWRlZiBzdHJ1Y3QgewogICAgaW50IGluZGV4OwogICAgaW50IHZhbDsKICAgIH1lbnRyeTsKICAgICAKICAgIGludCBtYWluKCkKICAgIHsKICAgIGludCBuLCBrOwogICAgdW5zaWduZWQgbG9uZyBsb25nIHNvbG47CiAgICBpbnQgaSxqOwogICAgaW50IGU7CiAgICBzdGFjazxlbnRyeT5zYTsKICAgIGludCBzYWNvdW50OwogICAgaW50IHNhY3VycmluZGV4LCBzYWN1cnJ2YWw7CiAgICB1bnNpZ25lZCBsb25nIGxvbmcgcDsKICAgIGVudHJ5IHNlOwogICAgY2luID4+IG47CiAgICBjaW4gPj4gazsKICAgIC8vdGhlIGJhc2ljIGlkZWEgaXMgYXMgZm9sbG93cwogICAgLy93ZSBuZWVkIHRvIGtlZXAgaW5kaWNlcyBvbmx5IHdoZW4gc2VuaW9yaXR5IGlzIGluY3JlYXNpbmcKICAgIC8vd2hlbiBzZW5pb3JpdHkgZGVjcmVhc2VzIHdlIG1hcCBhbGwgdmFsdWVzIHRvIGxvd2VyIHZhbHVlIGZvdW5kCiAgICBzb2xuID0gMTsKICAgIGZvcihpPTA7aTxuO2krKykgewogICAgY2luID4+IGU7CiAgICAvL0dvIG92ZXIgdGhlIGFycmF5IGZyb20gaGlnaCBzZW5pb3JpdHkgdG8gbG93CiAgICB3aGlsZSghc2EuZW1wdHkoKSkgewogICAgc2FjdXJyaW5kZXggPSBzYS50b3AoKS5pbmRleDsKICAgIHNhY3VycnZhbCA9IHNhLnRvcCgpLnZhbDsKICAgIGlmIChlID49IHNhY3VycnZhbCkgewogICAgYnJlYWs7CiAgICB9CiAgICBlbHNlIHsKICAgIHAgPSBpIC0gc2FjdXJyaW5kZXggKyAxOwogICAgc29sbiA9IHNvbG4gKiBwOwogICAgc29sbiA9IHNvbG4gJSBCSUdOVU07CiAgICB9CiAgICBzYS5wb3AoKTsKICAgIH0KICAgIC8vYWRkIHRvIHNhCiAgICBzZS5pbmRleCA9IGk7CiAgICBzZS52YWwgPSBlOwogICAgc2EucHVzaChzZSk7CiAgICB9CiAgICBjb3V0IDw8IHNvbG4gPDwgJ1xuJzsKICAgIHJldHVybiAwOwogICAgfQo=