#include <bits/stdc++.h>
using namespace std;
const int MX_SZ = 1e+5 + 42;
const int MX_LEN = 14;
long long tr[4 * MX_SZ][MX_LEN];
long long get(int v, int l, int r, int pos, int p) {
  if (l + 1 == r) {
    return tr[v][p];
  }
  int m = (l + r) / 2;
  if (m > pos) {
    return tr[v][p] + get(2 * v, l, m, pos, p);
  } else {
    return tr[v][p] + get(2 * v + 1, m, r, pos, p);
  }
}
void update(int v, int l, int r, int a, int b, int p, long long val) {
  if (a >= b) {
    return;
  }
  if (l == a and r == b) {
    tr[v][p] += val;
    return;
  }
  int m = (l + r) / 2;
  update(2 * v, l, m, a, min(m, b), p, val);
  update(2 * v + 1, m, r, max(m, a), b, p, val);
}
int main() {
  int n, k;
  cin >> n >> k;
  update(1, 1, n + 1, 1, n + 1, 0, 1);
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    int t;
    cin >> t;
    for (int j = 1; j < MX_LEN; j++) {
      long long c_sum = get(1, 1, n + 1, t, j - 1);
      update(1, 1, n + 1, t + 1, n + 1, j, c_sum);
      if (j == k + 1) {
        ans += c_sum;
      }
    }
  }
  cout << ans;
}
