#include <iostream>
#include <cmath>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;
const int N = 10010;
const long long M = 100000010;
int n, k, ans, cnt, prime1;
int arr[N];
int path[N];
bool st[N];
vector <int>anss;
void dfs(int u) {
if (u == k) {
anss.push_back(ans);
return;
}
for (int i = 0; i < n; i++) {
if (!st[arr[i]]) {
path[u] = arr[i];
st[arr[i]] = true;
ans += path[u];
dfs(u + 1);
st[arr[i]] = false;
ans -= path[u];
}
}
}
int main() {
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
dfs(0);
set<int>s;
for (int i = 0; i < anss.size(); i++) {
s.insert(anss[i]);
}
set<int>::iterator it;
for (it = s.begin(); it != s.end(); it++) {
for (int i = 2; i < *it; i++) {
if (*it % i == 0) {
prime1 = 1;
break;
}
else { prime1 = 0; }
}
if (prime1 == 0) {
cnt++;
}
}
cout << cnt;
return 0;
}