#include <bits/stdc++.h>
using namespace std;
int a[5010], b[5010], A[5010], B[5010], c[5010], i, j, k, n, m, p, x;
int main() {
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    printf("? %d 0\n", i);
    fflush(stdout);
    scanf("%d", &a[i]);
  }
  for (i = 0; i < n; i++) {
    printf("? 0 %d\n", i);
    fflush(stdout);
    scanf("%d", &b[i]);
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      B[j] = b[j] ^ i;
      if (B[j] >= n) break;
      A[B[j]] = j;
    }
    if (j < n) continue;
    for (j = 0; j < n; j++)
      if ((A[j] ^ B[0]) != a[j]) break;
    if (j == n) c[++m] = x = i;
  }
  printf("!\n%d\n", m);
  for (i = 0; i < n; i++) A[b[i] ^ x] = i;
  for (i = 0; i < n; i++) printf("%d ", A[i]);
  return 0;
}
