#include <bits/stdc++.h>
using namespace std;
int get(int a, int b) {
  cout << "? " << a + 1 << " " << b + 1 << endl;
  cout.flush();
  int res;
  cin >> res;
  return res;
}
int main(int argc, const char* argv[]) {
  int n;
  cin >> n;
  vector<int> res(n);
  for (int i = 0; i < n - 2; i += 3) {
    int res1 = get(i, i + 1);
    int res2 = get(i, i + 2);
    int res3 = get(i + 1, i + 2);
    res[i] = (res1 + res2 - res3) / 2;
    res[i + 1] = res1 - res[i];
    res[i + 2] = res2 - res[i];
  }
  switch (n % 3) {
    case 1:
      res.back() = get(0, n - 1) - res.front();
      break;
    case 2:
      res[n - 2] = get(0, n - 2) - res.front();
      res.back() = get(0, n - 1) - res.front();
      break;
    default:
      break;
  }
  cout << "! ";
  for (int i = 0; i < n; i++) {
    cout << res[i] << " ";
  }
  return 0;
}
