#include<bits/stdc++.h>
using namespace std;
const int mod=998244353;
int n,m,k;
__int128 ans;
int v[105];
vector<int>path;
void print(__int128 x){
if(x==0)return;
print(x/10);
cout<<(int)x%10;
}
__int128 p(int k){
__int128 x=1;
for(int i=1;i<=k;i++){
x*=2;
}
return x;
}
__int128 c;
__int128 solve(){
__int128 s=1;
for(int i=0;i<n;i++){
s*=v[path[i]];
s%=mod;
}
return s;
}
void dfs(__int128 x,int t){
if(t>n){
if(c!=x)return;
ans+=solve();
ans%=mod;
return;
}
for(int i=0;i<=m;i++){
path.push_back(i);
__int128 tmp=p(i);
c+=tmp;
dfs(x,t+1);
path.pop_back();
c-=tmp;
}
}
int check(__int128 x){
int cnt=0;
while(x){
if(x%2==1)cnt++;
x/=2;
}
return cnt;
}
int main(){
cin>>n>>m>>k;
for(int i=0;i<=m;i++){
cin>>v[i];
}
for(__int128 i=n;i<=p(m)*n;i++){
if(check(i)<=k){
dfs(i,1);
ans%=mod;
}
}
print(ans);
return 0;
}
CCF什么破数据,就不能给几个样例1这样的小数据吗,害得我的唐氏暴力一分都没有