code:
#include<iostream>
using namespace std;
long long n,k;
long long x[100];
bool flag[100];
long long zx = 1,sum = 0,ans = 0;
bool pd(long long n){
if(n < 2) return 0;
else if(n==2) return 1;
else{
for(long long i = 2;i*i<=n;i++){
if(n%i == 0) return 0;
}
return 1;
}
}
void dfs(long long f){
if(f > k){
zx = 1;
if(sum%2!=0 && sum%3!=0 && sum%5!=0){
if(pd(sum)){
ans++;
}
}
return;
}else{
for(long long i = zx;i<=n;i++){
if(flag[i] == 0){
sum += x[i];
zx = i;
flag[i] = 1;
dfs(f+1);
sum -= x[i];
flag[i] = 0;
}
}
}
}
int main(){
cin >> n >> k;
for(long long i = 1;i<=n;i++) cin >> x[i];
dfs(1);
cout << ans;
return 0;
}