#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, k;
  cin >> n >> k;
  set<int> indices;
  for (int i = (0); i < (n); i++) indices.insert(i);
  while (((int)(indices).size()) > k + 1) {
    vector<int> all;
    all.clear();
    for (auto x : indices) all.push_back(x);
    cout << '?';
    for (int i = (0); i < (k); i++) cout << " " << all[i] + 1;
    cout << endl;
    int ind, val;
    cin >> ind >> val;
    indices.erase(ind - 1);
  }
  vector<int> all;
  all.clear();
  for (auto x : indices) all.push_back(x);
  vector<int> pat;
  for (int i = (0); i < (k + 1); i++) {
    cout << '?';
    for (int j = (0); j < (k + 1); j++)
      if (j != i) cout << ' ' << all[j] + 1;
    cout << endl;
    int ind, val;
    cin >> ind >> val;
    pat.push_back(val);
  }
  sort(pat.begin(), pat.end());
  set<int> ans;
  for (int i = (0); i < (k + 1); i++) {
    if (i == 0 || pat[i] != pat[i - 1]) ans.insert(i);
  }
  for (int m = (1); m < (k + 1); m++) {
    set<int> cur;
    cur.clear();
    vector<int> pat;
    pat.clear();
    for (int i = (0); i < (k + 1); i++) pat.push_back(i >= m ? m - 1 : m);
    sort(pat.begin(), pat.end());
    for (int i = (0); i < (k + 1); i++)
      if (i == 0 || pat[i] != pat[i - 1]) cur.insert(i);
    if (ans == cur) {
      cout << "! " << m << endl;
      return 0;
    }
  }
  return 0;
}
