#include<bits/stdc++.h>
using namespace std;
#define ll long long
map<ll,ll> m1[100],m2[100];
ll n,k,s;
ll ans,flag,a[40],cnt1,cnt2,t1,t2;
ll fac[30];
void dfs1(ll idx,ll sum,ll cntk){
if(sum>s) return;
if(cntk>k) return ;
if(idx>n/2){
m1[cntk][sum]++;
return;
}
dfs1(idx+1,sum,cntk);
dfs1(idx+1,sum+a[idx],cntk);
if(cntk<=20)dfs1(idx+1,sum+fac[a[idx]],cntk+1);
}
void dfs2(ll idx,ll sum,ll cntk){
if(sum>s) return;
if(cntk>k) return ;
if(idx>n){
m2[cntk][sum]++;
return;
}
dfs2(idx+1,sum,cntk);
dfs2(idx+1,sum+a[idx],cntk);
if(cntk<=20)dfs2(idx+1,sum+fac[a[idx]],cntk+1);
}
int main(){
scanf("%lld%lld%lld",&n,&k,&s);
fac[1]=1;
for(ll i=2;i<=20;i++){
fac[i]=fac[i-1]*i;
}
fac[0]=0;
for(ll i=1;i<=n;i++)scanf("%lld",&a[i]);
dfs1(1,0,0);
dfs2(n/2+1,0,0);
for(ll i=0;i<=k;i++){
for(ll j=0;j<=s;j++){
for(ll ii=k-i;ii>=0;ii--) ans+=m1[i][j]*m2[ii][s-j];
}
}
cout<<ans<<endl;
return 0;
}