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