#include int main() { int N; std::cin >> N; struct id { int v; id &operator=(const id &x) { v = x.v; return *this; } }; auto comp = [&](id i, id j) { if (i.v == j.v) { return false; } std::cout << "? " << i.v << " " << j.v << "\n"; int T; std::cin >> T; return T == 1; }; std::vector c(N); for (int i = 0; i < N; i++) { c[i].v = i + 1; } std::stable_sort(c.begin(), c.end(), comp); std::cout << "!\n" << N - 1 << "\n"; for (int i = 0; i < N; i++) { std::cout << c[i].v << " \n"[i + 1 == N]; } }