#include <bits/stdc++.h>
int const N = 55;
int const M = 205;
int const inf = 1000000000;
long long const mod = 1000000007;
using namespace std;
int n, k;
long long s;
long long ans;
long long a[N];
long long f[N];
map<long long, long long> cnt[N];
int L, R;
int totL, totR;
int b[N];
void ini1() {
  long long i;
  f[1] = 1;
  for (i = 2; i <= 20; i++) {
    f[i] = f[i - 1] * i;
  }
}
int pw(int x) {
  int re = 1;
  for (int i = 1; i <= x; i++) {
    re *= 3;
  }
  return re;
}
void ini() {
  int i;
  ans = 0;
  for (i = 0; i < n; i++) {
    scanf("%I64d", &a[i]);
  }
  for (i = 0; i <= k; i++) {
    cnt[i].clear();
  }
  L = n / 2;
  totL = pw(L);
  R = n - L;
  totR = pw(R);
}
void solve() {
  int o, j;
  int te;
  long long sum;
  int cou;
  int ff;
  for (o = 0; o < totL; o++) {
    te = o;
    for (j = 0; j < L; j++) {
      b[j] = te % 3;
      te /= 3;
    }
    sum = 0;
    cou = 0;
    ff = 1;
    for (j = 0; j < L; j++) {
      if (b[j] == 0)
        continue;
      else if (b[j] == 1) {
        sum += a[j];
      } else {
        if (a[j] >= 19) {
          ff = 0;
          break;
        } else {
          sum += f[a[j]];
          cou++;
        }
      }
      if (sum > s) {
        ff = 0;
        break;
      }
    }
    if (ff == 0 || sum > s) continue;
    cnt[cou][sum]++;
  }
  for (o = 0; o < totR; o++) {
    te = o;
    for (j = 0; j < R; j++) {
      b[j] = te % 3;
      te /= 3;
    }
    sum = 0;
    cou = 0;
    ff = 1;
    for (j = 0; j < R; j++) {
      if (b[j] == 0)
        continue;
      else if (b[j] == 1) {
        sum += a[j + L];
      } else {
        if (a[j + L] >= 19) {
          ff = 0;
          break;
        } else {
          sum += f[a[j + L]];
          cou++;
        }
      }
      if (sum > s) {
        ff = 0;
        break;
      }
    }
    if (ff == 0) continue;
    int leftk = k - cou;
    long long lefts = s - sum;
    if (leftk < 0) continue;
    if (lefts < 0) continue;
    for (int x = 0; x <= leftk; x++) {
      if (cnt[x].count(lefts) > 0) ans += cnt[x][lefts];
    }
  }
}
void out() { printf("%I64d\n", ans); }
int main() {
  ini1();
  while (scanf("%d%d%I64d", &n, &k, &s) != EOF) {
    ini();
    solve();
    out();
  }
}
