#include <bits/stdc++.h>
using namespace std;
const int OO = 2e9;
const int MOD = 1e9 + 7;
const double Pi = 3.141592653589793;
const int N = 25 + 5;
map<long long, int> C[N];
int a[N], n, k;
long long factor[20], res = 0, maxf = 1, s;
void recur(int i, long long sum, int sticked) {
  if (i == n / 2) {
    for (int j = (int)sticked; j <= (int)k; j++) C[j][sum]++;
    return;
  }
  if (i == n + 1) {
    res += C[k - sticked][s - sum];
    return;
  }
  recur(i + 1, sum, sticked);
  if (sum + a[i + 1] <= s) recur(i + 1, sum + a[i + 1], sticked);
  if (a[i + 1] <= maxf && sum + factor[a[i + 1]] <= s && sticked < k)
    recur(i + 1, sum + factor[a[i + 1]], sticked + 1);
}
int main() {
  cin >> n >> k >> s;
  for (int i = (int)1; i <= (int)n / 2; i++) cin >> a[i];
  for (int i = (int)n / 2 + 2; i <= (int)n + 1; i++) cin >> a[i];
  factor[1] = 1;
  for (int i = (int)2; i <= (int)19; i++)
    if (factor[i - 1] * i <= s)
      factor[i] = factor[i - 1] * i;
    else {
      maxf = i - 1;
      break;
    }
  recur(0, 0, 0);
  recur(n / 2 + 1, 0, 0);
  cout << res;
}
