#include <bits/stdc++.h>
using namespace std;
int n, k, a[30], lim, tot;
long long s, fac[30], ans, f[550010][30], d[550010];
struct epoch {
  long long x;
  int y;
} c[550010];
long long pow(int a, int b) {
  long long ans = 1;
  for (int i = 1; i <= b; ++i) ans *= a;
  return ans;
}
void dfs(int st, int num, long long sum) {
  if (st > lim) {
    ++tot;
    c[tot].x = sum, c[tot].y = num;
    return;
  }
  dfs(st + 1, num, sum);
  if (sum + a[st] <= s) dfs(st + 1, num, sum + a[st]);
  if (fac[st] != -1 && sum + fac[st] <= s && num + 1 <= k)
    dfs(st + 1, num + 1, sum + fac[st]);
}
bool cmp(epoch a, epoch b) { return a.x < b.x; }
int find(long long ave) {
  int l = 1, r = d[0];
  while (l <= r) {
    int mid = (l + r) / 2;
    if (d[mid] == ave) return mid;
    if (ave < d[mid])
      r = mid - 1;
    else
      l = mid + 1;
  }
  return 0;
}
void pre() {
  sort(c + 1, c + tot + 1, cmp);
  for (int i = 1, j; i <= tot; i = j) {
    d[++d[0]] = c[i].x;
    for (j = i; j <= tot && c[i].x == c[j].x; ++j) ++f[d[0]][c[j].y];
  }
  for (int i = 1; i <= d[0]; ++i)
    for (int j = 1; j <= k; ++j) f[i][j] += f[i][j - 1];
}
void _dfs(int st, int num, long long sum) {
  if (st > n) {
    ans += f[find(s - sum)][k - num];
    return;
  }
  _dfs(st + 1, num, sum);
  if (sum + a[st] <= s) _dfs(st + 1, num, sum + a[st]);
  if (fac[st] != -1 && sum + fac[st] <= s && num + 1 <= k)
    _dfs(st + 1, num + 1, sum + fac[st]);
}
int main() {
  scanf("%d%d%lld", &n, &k, &s);
  for (int i = 1; i <= n; ++i) scanf("%d", &a[i]);
  int mx = 1;
  for (long long fc = 1; fc * (mx + 1) <= s; fc *= mx) ++mx;
  for (int i = 1; i <= n; ++i)
    if (a[i] <= mx) {
      fac[i] = 1;
      for (int j = 2; j <= a[i]; ++j) fac[i] *= j;
    } else
      fac[i] = -1;
  long long tmp = 1000000000000007LL;
  lim = 1;
  for (int i = 1; i <= n; ++i) {
    long long res = pow(3, i) + pow(3, n - i) * pow(2, n - i);
    if (res < tmp) tmp = res, lim = i;
  }
  lim = min(lim, 12);
  tot = 0, dfs(1, 0, 0);
  pre(), ans = 0;
  _dfs(lim + 1, 0, 0);
  printf("%lld", ans);
  return 0;
}
