#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 4;
const int maxk = 12;
const int maxlog = 20;
const long long inf = 1e18;
const int mod = 1e9 + 7;
const long long base = 307;
long long seg[4 * maxn][maxk];
long long dp[maxn][maxk];
long long get(int ind, int l, int r, int x, int y, int k) {
  if (y <= l || r <= x || ind == -1) return 0;
  if (x <= l && r <= y) return seg[ind][k];
  int mid = (l + r) / 2;
  return get(2 * ind, l, mid, x, y, k) + get(2 * ind + 1, mid, r, x, y, k);
}
void update(int ind, int l, int r, int pl, int k) {
  seg[ind][k] = seg[ind][k] + dp[pl][k];
  int mid = (l + r) / 2;
  if (r - l < 2) return;
  if (pl < mid)
    update(2 * ind, l, mid, pl, k);
  else
    update(2 * ind + 1, mid, r, pl, k);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n, k;
  cin >> n >> k;
  k++;
  long long res = 0;
  for (int i = 0; i < n; i++) {
    int x;
    cin >> x;
    x--;
    dp[x][1] = 1;
    for (int j = 2; j < maxk; j++) dp[x][j] = get(1, 0, n, 0, x, j - 1);
    for (int j = 1; j < maxk; j++) update(1, 0, n, x, j);
    res = res + dp[x][k];
  }
  cout << res;
  return 0;
}
