#include int main() { int N; std::cin >> N; std::map, bool> memo; auto comp = [&](int i, int j) { if (i == j) { return false; } if (!memo.count({i, j})) { std::cout << "? " << i << " " << j << "\n"; int T; std::cin >> T; memo[{i, j}] = T; memo[{j, i}] = !T; } return memo[{i, j}]; }; std::vector v(N); std::iota(v.begin(), v.end(), 1); std::stable_sort(v.begin(), v.end(), comp); std::cout << "!\n" << N - 1 << "\n"; for (int i = 0; i < N; i++) { std::cout << v[i] << " \n"[i + 1 == N]; } }