#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9;
const double PI = 2 * acos(0.0);
const double eps = 1e-9;
long long f[19];
long long fact(long long n) {
  if (f[n]) return f[n];
  long long ret = 1;
  for (int i = 1; i <= (int)(n); ++i) ret *= i;
  return f[n] = ret;
}
void gen(long long arr[], int siz, int k, map<long long, int>& cnt, int cur = 0,
         long long cum = 0) {
  if (cur == siz) {
    if (k) return;
    cnt[cum]++;
    return;
  }
  gen(arr, siz, k, cnt, cur + 1, cum);
  gen(arr, siz, k, cnt, cur + 1, cum + arr[cur]);
  if (k && arr[cur] < 19)
    gen(arr, siz, k - 1, cnt, cur + 1, cum + fact(arr[cur]));
}
int main() {
  ios_base::sync_with_stdio(false);
  long long n, k, s;
  cin >> n >> k >> s;
  long long arr[25];
  for (int i = 0; i < (int)(n); ++i) cin >> arr[i];
  long long n1 = n / 2, n2 = n - n1;
  long long ans = 0;
  map<long long, int> cnt22[n2 + 1];
  for (int k2 = 0; k2 <= min(k, n2); k2++) gen(arr + n1, n2, k2, cnt22[k2]);
  for (int k1 = 0; k1 <= min(k, n1); k1++) {
    map<long long, int> cnt1;
    gen(arr, n1, k1, cnt1);
    for (int k2 = 0; k2 <= min(k - k1, n2); k2++) {
      map<long long, int>& cnt2 = cnt22[k2];
      for (__typeof(cnt1.begin()) it = cnt1.begin(); it != cnt1.end(); ++it) {
        ans += cnt2[s - (*it).first] * (*it).second;
      }
    }
  }
  cout << ans << endl;
  return 0;
}
