#include using namespace std; typedef pair pii; typedef long long ll; const int N = 2000010, MOD = 1e9 + 7, INF = 0x3f3f3f3f; int n, m, w[N]; char s[N]; int c[N]; bool ask(const vector& v) { printf("? %d ", v.size()); for (auto u : v) printf("%d ", u); puts(""); fflush(stdout); scanf("%s", s + 1); return s[1] == 'Y'; } void ans(vector& v) { printf("! "); for (auto u : v) printf("%d ", u); puts(""); fflush(stdout); } int main() { cin >> n; for (int i = 1; i < n + 1; i++) while (c[i] != n && ask(vector(c[i] + 1, i))) c[i]++; vector v; for (int i = 1; i < n + 1; i++) { vector ne, t(v.size() + 1); int pr = v.size(); for (int j = c[i]; j; j--) { int l = 0, r = pr; while (l < r) { int mid = l + r + 1 >> 1; vector t; for (int k = 0; k < mid; k++) t.push_back(v[k]); for (int k = 0; k < j; k++) t.push_back(i); if (ask(t)) l = mid; else r = mid - 1; } pr = r; t[r]++; } ne.clear(); for (int j = 0; j <= v.size(); j++) { if (j) ne.push_back(v[j - 1]); for (int k = 0; k < t[j]; k++) ne.push_back(i); } swap(ne, v); } ans(v); return 0; }