#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define chmax(x, y) x = max(x, y) #define chmin(x, y) x = min(x, y) typedef long long ll; typedef uint64_t ull; typedef pair P; typedef pair Pid; typedef pair Pdi; typedef pair Pl; typedef pair Pll; typedef pair> PP; typedef pair PPi; constexpr double PI = 3.1415926535897932; // acos(-1) constexpr double EPS = 1e-9; constexpr int INF = 1001001001; constexpr int mod = 1e+9 + 7; // constexpr int mod = 998244353; bool used[1005]; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector a(n); for(int i = 0; i < n; ++i) used[i] = true; int k = 0; for(int i = 0; i < n; ++i){ vector output; for(int j = 0; j < n; ++j){ if(j == k) continue; if(!used[j]) continue; output.emplace_back(j); } int sz = output.size(); cout << "? " << sz << "\n" << flush; for(int j = 0; j < sz; ++j){ cout << output[j] + 1 << " " << flush; } int ans; cin >> ans; if(ans == 1) used[k] = false; ++k; } vector res; for(int i = 0; i < n; ++i){ if(used[i]) res.push_back(i + 1); } int sz = res.size(); cout << "! " << sz << "\n"; for(int i = 0; i < sz; ++i){ cout << res[i]; cout << ((i == sz - 1) ? "\n" : " "); } return 0; }