#include <bits/stdc++.h>
using namespace std;
int vis[5000];
int q1 = 0, q2 = 0;
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  if (k == 1) {
    cout << "! 1" << endl;
    return 0;
  }
  printf("? ");
  for (int i = 1; i <= k; i++) printf("%d ", i);
  puts("");
  cout.flush();
  int op, x;
  int y;
  scanf("%d", &op);
  if (op == -1) {
    return 0;
  }
  scanf("%d", &x);
  y = x;
  for (int i = 1; i <= k; i++) {
    if (i == op) continue;
    x = i;
    break;
  }
  vis[x] = 1;
  for (int i = k + 1; i <= n; i++) {
    printf("? ");
    for (int j = 1; j <= k; j++) {
      if (j == x) continue;
      printf("%d ", j);
    }
    printf("%d\n", i);
    cout.flush();
    int p1, p2;
    scanf("%d", &p1);
    if (p1 == -1) return 0;
    scanf("%d", &p2);
    if (p1 == op) vis[i] = 1;
  }
  for (int i = 1; i <= k; i++) {
    if (i == op || i == x) continue;
    printf("? ");
    for (int j = 1; j <= k; j++) {
      if (j == i) continue;
      printf("%d ", j);
    }
    printf("%d ", k + 1);
    puts("");
    cout.flush();
    int p1, p2;
    scanf("%d", &p1);
    if (p1 == -1) return 0;
    scanf("%d", &p2);
    if (p1 == op)
      vis[i] = vis[k + 1];
    else
      vis[i] = !vis[k + 1];
  }
  printf("? ");
  for (int i = 1; i <= k + 1; i++) {
    if (i == op) continue;
    printf("%d ", i);
  }
  puts("");
  cout.flush();
  int p1, p2;
  int f = 0;
  scanf("%d", &p1);
  if (p1 == -1) return 0;
  scanf("%d", &p2);
  if (p2 < y)
    f = vis[p1];
  else
    f = !vis[p1];
  for (int i = 1; i <= k; i++) {
    if (i == op) continue;
    if (vis[i] == f) q1++;
  }
  cout << "! ";
  cout << q1 + 1 << endl;
}
