#include <bits/stdc++.h>
using namespace std;
long long segment_tree[12][(1 << 18)];
int n, k, a[100001];
void update(int j, int i, long long x) {
  i += (1 << 17);
  while (i) {
    segment_tree[j][i] += x;
    i /= 2;
  }
}
long long get_sum(int i, int j, int l, int r, int a, int b) {
  if (r < a || l > b) return 0;
  if (l >= a && r <= b) return segment_tree[j][i];
  return get_sum(i * 2, j, l, (l + r) / 2, a, b) +
         get_sum(i * 2 + 1, j, (l + r) / 2 + 1, r, a, b);
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> a[i];
  k++;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < k; j++)
      if (!j)
        update(j + 1, a[i], 1);
      else
        update(j + 1, a[i], get_sum(1, j, 0, (1 << 17) - 1, 0, a[i] - 1));
  cout << segment_tree[k][1] << endl;
  return 0;
}
