#include <bits/stdc++.h>
using namespace std;
const long double PI = 3.14159265358979323846264338;
const long long INF = 1000000000000000000;
const long long INF1 = 1000000000;
const long long MOD = 1000000007;
long long mpow(long long a, long long b) {
  a %= MOD;
  if (!b) return 1;
  long long temp = mpow(a, b / 2);
  temp = (temp * temp) % MOD;
  if (b % 2) return (a * temp) % MOD;
  return temp;
}
long long _pow(long long a, long long b) {
  if (!b) return 1;
  long long temp = _pow(a, b / 2);
  temp = (temp * temp);
  if (b % 2) return (a * temp);
  return temp;
}
long long mod_in(long long n) { return mpow(n, MOD - 2); }
long long cl(long long a, long long b) {
  if (a % b) return 1 + a / b;
  return a / b;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int T;
  T = 1;
  while (T--) {
    long long n, k;
    cin >> n >> k;
    set<long long> s1, s2;
    cout << "? ";
    for (int i = 1; i <= k; i++) cout << i << " ";
    cout << "\n";
    cout.flush();
    long long pos, apos;
    cin >> pos >> apos;
    s1.insert(k + 1);
    for (int i = 1; i <= k; i++) {
      if (pos == i) continue;
      cout << "? ";
      for (int j = 1; j <= k + 1; j++) {
        if (i == j) continue;
        cout << j << " ";
      }
      cout << "\n";
      cout.flush();
      long long x, y;
      cin >> x >> y;
      if (y == apos)
        s1.insert(i);
      else
        s2.insert(i);
    }
    cout << "? ";
    for (long long x : s1) cout << x << " ";
    for (long long y : s2) cout << y << " ";
    cout << "\n";
    cout.flush();
    long long u, v;
    cin >> u >> v;
    long long p1 = -1, p2 = -1, c[2] = {};
    if (s1.count(u)) {
      if (v > apos) {
        p1 = 1;
        p2 = 0;
      } else {
        p1 = 0;
        p2 = 1;
      }
    } else {
      if (v > apos) {
        p1 = 0;
        p2 = 1;
      } else {
        p1 = 1;
        p2 = 0;
      }
    }
    for (int i = 1; i <= k; i++) {
      if (i == pos) continue;
      if (s1.count(i))
        c[p1]++;
      else
        c[p2]++;
    }
    cout << "! " << c[0] + 1 << "\n";
    cout.flush();
  }
}
