#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = 2e5 + 5;
struct BIT {
  long long sum[MAXN];
  long long n;
  void init(long long _n) {
    n = _n;
    memset(sum, 0, sizeof(sum));
    ;
  }
  long long lowbit(long long x) { return x & -x; }
  void update(long long x, long long num) {
    while (x <= n) {
      sum[x] += num;
      x += lowbit(x);
    }
    return;
  }
  long long query(long long x) {
    long long ans = 0;
    while (x) {
      ans += sum[x];
      x -= lowbit(x);
    }
    return ans;
  }
} bit[15];
long long a[MAXN];
long long n, k;
int main() {
  cin >> n >> k;
  k++;
  for (int i = (1); i <= (n); i++) cin >> a[i];
  for (int i = (1); i <= (k); i++) bit[i].init(n);
  for (int i = 1; i <= n; i++) {
    bit[1].update(a[i], 1);
    for (int cnt = 2; cnt <= k; cnt++) {
      bit[cnt].update(a[i], bit[cnt - 1].query(a[i] - 1));
    }
  }
  printf("%lld\n", bit[k].query(n));
  return 0;
}
