#include <iostream>
using namespace std;
int a[23], n, k, m;
int zs(int x){if(x<2) return 0; for(int i=2; i*i<=x; ++i) if(x%i==0) return 0; return 1;}
void dfs(int cs, int he, int id){
if(cs==k && zs(he)){
cout<<cs<<' '<<he<<'\n';
m++; return;
}
if(id>n) return;
for(int i=id; i<=n; ++i) dfs(cs+1, he+a[i], i+1);
dfs(cs, he, id+1);
}
int main(){
cin>>n>>k;
for(int i=1; i<=n; ++i) cin>>a[i];
dfs(0, 0, 1);
cout<<m;
}
16
初次手打 dfs 求助