#include <bits/stdc++.h>
using namespace std;
int inf_int = 2e9;
long long inf_ll = 2e18;
const double pi = 3.1415926535898;
long long binpow(long long a, long long n) {
  if (n == 0) {
    return 1;
  }
  long long res = 1;
  while (n) {
    if (n % 2 == 1) {
      res *= a;
    }
    a *= a;
    n /= 2;
  }
  return res;
}
int gcd(int a, int b) {
  while (b) {
    a %= b;
    swap(a, b);
  }
  return a;
}
const double EPS = 1e-7;
int siz(long long x) {
  if (x < 1e1) {
    return 1;
  } else if (x < 1e2) {
    return 2;
  } else if (x < 1e3) {
    return 3;
  } else if (x < 1e4) {
    return 4;
  } else if (x < 1e5) {
    return 5;
  } else if (x < 1e6) {
    return 6;
  } else if (x < 1e7) {
    return 7;
  } else if (x < 1e8) {
    return 8;
  } else if (x < 1e9) {
    return 9;
  } else if (x < 1e10) {
    return 10;
  }
}
int n;
vector<int> ans;
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  ans.resize(n + 1);
  int a12, a23, a13;
  cout << "? 1 2" << endl;
  cin >> a12;
  cout << "? 2 3" << endl;
  cin >> a23;
  cout << "? 1 3" << endl;
  cin >> a13;
  ans[2] = (a12 + a23 - a13) / 2;
  ans[1] = a12 - ans[2];
  ans[3] = a23 - ans[2];
  for (int i = 3, j = 4; j <= n; i++, j++) {
    int sum;
    cout << "? " << i << " " << j << endl;
    cin >> sum;
    ans[j] = sum - ans[i];
  }
  cout << "! ";
  for (int i = 1; i <= n; i++) {
    cout << ans[i];
    if (i != n) {
      cout << " ";
    }
  }
  cout << endl;
  return 0;
}
