#include<bits/stdc++.h>
using namespace std;
int n,k;
long long s,a[26],cnt;
map<pair<long long,int>,int> mp;
long long jie(long long x){
long long res=1;
for(int i=1;i<=x;i++){
res*=i;
}
return res;
}
void dfs1(int w,int y,long long sum){
if(sum>s||y>k)return;
if(w==n/2){
mp[{sum,y}]++;
return;
}
dfs1(w+1,y,sum);
dfs1(w+1,y,sum+a[w]);
long long t=jie(a[w]);
if(t&&y<k){
dfs1(w+1,y+1,sum+t);
}
}
void dfs2(int w,int y,long long sum){
if(sum>s||y>k)return;
if(w==n){
for(int i=0;i+y<=k;i++){
if(mp.count({s-sum,i})){
cnt+=mp[{s-sum,i}];
}
}
return;
}
dfs2(w+1,y,sum);
dfs2(w+1,y,sum+a[w]);
long long t=jie(a[w]);
if(t&&y<k){
dfs2(w+1,y+1,sum+t);
}
}
int main(){
cin>>n>>k>>s;
for(int i=0;i<n;i++){
cin>>a[i];
}
dfs1(0,0,0);
dfs2(n/2,0,0);
cout<<cnt;
return 0;
}
(在vjudge测的)