#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); for (int j = 1; j <= c[i]; j++) { int l = 0, r = v.size(); while (l < r) { int mid = l + r + 1 >> 1; vector tt; for (int k = 0; k < mid; k++) tt.push_back(v[k]); for (int k = 0; k < j; k++) tt.push_back(i); if (ask(tt)) l = mid; else r = mid - 1; } t[r]++; } 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; }