
#include<bits/stdc++.h>
using namespace std;
const int N=1e8;
vector<int>prime;
bool isprime[N]={1,1};
long long cnt = 0;
int a[21];
int Euler(long long n) {
cnt = 0;
for (long long i = 2; i < n+1; i++) {
isprime[i] = 0;
}
for (long long i = 2; i < n+1; i++)
{
if (isprime[i] == 0) {
prime.push_back(i);
cnt++;
}
for (long long j = 0; j < cnt ; j++)
{
if (i * prime[j] >n )break;
isprime[prime[j] * i] = 1;
if (i % prime[j] == 0)break;
}
}
if (!isprime[n])return 1;
return 0;
}
int n,k;
long long ans;
void dfs(int m, long long sum, int startx) {
if (m == k) {
if (Euler(sum))
ans++;
return;
}
for (int i = startx; i < n; i++)
dfs(m + 1, sum + a[i], i + 1);
return;
}
int main(){
scanf("%d%d", &n, &k);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
dfs(0, 0, 0);
printf("%lld", ans);
return 0;
}