//P1036 [NOIP2002 普及组] 选数
#include<bits/stdc++.h>
using namespace std;
int a[25];
const int m=1e6+7;
int vis[m]={0};
int ans=0,sum=0;
int n,k;
bool prime(int k)
{
if(k<2)
{
return false;
}
for(int i=2;i*i<=k;i++)
{
if(k%i==0)
{
return false;
break;
}
}
return true;
}
void dfs(int t,int s,int sum)//当前位置,个数,和累加
{
if(s==k && prime(sum))//凑够k个数,并且答案加1,并返回
{
ans++;
return;//注意返回
}
for(int i=t;i<=n;i++)
{
if(!vis[i])
{
vis[i]=1;
dfs(i+1,s+1,sum+a[i]);
vis[i]=0;//已经被用过
}
}
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
dfs(1,1,0);
cout<<ans;
return 0;
}