#include <iostream>
#include <vector>
#include <cstring>
#include <cmath>
using namespace std;
int n,k,num=0;
int DFS(int index, long long sum,int sumN,vector<long long> vec);
int isPrime(long long n);
int main()
{
long long temp,sum=0;
cin>>n>>k;
vector<long long> vec;
for(int i=0;i<n;i++)
{
cin>>temp;sum+=temp;
vec.push_back(temp);
}
DFS(0,0,0,vec);
cout<<num;
return 0;
}
int IfinSSB(int x,int* ssb)
{
return ssb[x]==1;
}
int DFS(int index, long long sum,int sumN,vector<long long> vec)
{
if(sumN>=k || index>=n) return 0;
if( sumN+1==k && isPrime( sum+vec[index] ) )
num++;
DFS(index+1,sum,sumN,vec);
DFS(index+1,sum+vec[index],sumN+1,vec);
return 0;
}
int isPrime(long long n)
{
if( n<=1 ) return 0;
long sqr=(long)sqrt(1.0*n);
for(long long i=2;i<sqr;i++)
if(n%i==0) return 0;
return 1;
}