#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void __f(const char *name, Arg1 &&arg1) {
  cerr << name << " : " << arg1 << endl;
}
template <typename Arg1, typename... Args>
void __f(const char *names, Arg1 &&arg1, Args &&...args) {
  const char *comma = strchr(names + 1, ',');
  cerr.write(names, comma - names) << " : " << arg1 << " | ";
  __f(comma + 1, args...);
}
int main() {
  int n;
  scanf("%d", &n);
  vector<int> a(n + 1, 0);
  int sum12, sum13, sum23;
  int i = 1, j = 2;
  printf("? %d %d\n", i, j);
  fflush(stdout);
  scanf("%d", &sum12);
  i = 1, j = 3;
  printf("? %d %d\n", i, j);
  fflush(stdout);
  scanf("%d", &sum13);
  i = 2, j = 3;
  printf("? %d %d\n", i, j);
  fflush(stdout);
  scanf("%d", &sum23);
  a[1] = (sum12 + sum13 - sum23) / 2;
  a[2] = sum12 - a[1];
  a[3] = sum13 - a[1];
  for (int j = 4; j <= n; j++) {
    int sum;
    i = 1;
    printf("? %d %d\n", i, j);
    fflush(stdout);
    scanf("%d", &sum);
    a[j] = sum - a[1];
  }
  printf("! ");
  fflush(stdout);
  for (int i = 1; i <= n; i++) {
    printf("%d ", a[i]);
    fflush(stdout);
  }
  return 0;
}
