#include <iostream>
using namespace std;
bool flag[5000005] = {0};
int a[25], inArr[25];
int n, k, ans;
void dfs(int ip) {
if (ip > k) {
int sum = 0;
for (int i = 1; i <= k; i++) {
sum += a[i];
}
for (int i = 1; i <= n; i++) {
cout << flag[i] << ' ';
}
cout << endl;
bool fl = true;
for (int i = 2; i * i < sum; i++) {
if (sum % i == 0) fl = false;
}
if (fl) ans++;
return;
}
for (int i = 1; i <= n; i++) {
if (flag[i] == 1 or (i < a[ip - 1])) continue;
a[ip] = inArr[i];
flag[i] = 1;
dfs(ip + 1);
flag[i] = 0;
}
}
int main() {
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> inArr[i];
}
dfs(1);
cout << ans << endl;
return 0;
}