#include<bits/stdc++.h>
using namespace std;
const int N = 1e3+5;
int b[N];
int f[N];
int get(int t){
return f[t]==t?f[t]:f[t]=get(f[t]);
}
int main(){
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
f[i] = i;
}
for(int i=1;i<=k+1;i++){
printf("? ");
for(int j=1;j<=k;j++){
printf("%d ",(i+j-1)%(k+1)==0?(k+1):(i+j-1)%(k+1));
}
cout<<endl;
scanf("%d",&b[i]);
if(i >= 2){
if(b[i] == b[i-1]){
int xx = get(i-1);
int yy = get((i+k-1)%(k+1)==0?(k+1):(i+k-1)%(k+1));
if(xx != yy){
f[xx] = yy;
}
}
}
}
if(b[1] == b[k+1]){
int xx = get(k);
int yy = get(k+1);
if(xx != yy){
f[xx] = yy;
}
}
for(int i=k+2;i<=n;i++){
printf("? ");
for(int j=1;j<=k-1;j++){
printf("%d ",j);
}
printf("%d",i);
cout<<endl;
scanf("%d",&b[i]);
if(b[i] == b[1]){
int xx = get(k);
int yy = get(i);
if(xx != yy){
f[xx] = yy;
}
}
}
int cnt = 0;
for(int i=1;i<=k;i++){
if(get(i) == get(1)){
cnt ++;
}
}
printf("! ");
if(cnt%2 == b[1]){
for(int i=1;i<=n;i++){
printf("%d ",get(i) == get(1));
}
}else{
for(int i=1;i<=n;i++){
printf("%d ",get(i) != get(1));
}
}
}