#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){ int cnt = 0; for(int j = 0; j < n; ++j){ if(j == k) continue; if(!used[j]) continue; ++cnt; } if(cnt <= 1) break; cout << "? " << cnt << "\n" << flush; for(int j = 0; j < n; ++j){ if(j == k) continue; if(!used[j]) continue; cout << 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" << flush; for(int i = 0; i < sz; ++i){ cout << res[i] << " " << flush; } return 0; }