#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
void solve() {
  long long int n;
  cin >> n;
  cout << "? 1 2" << endl;
  long long int a;
  cin >> a;
  cout << "? 2 3" << endl;
  long long int b;
  cin >> b;
  cout << "? 1 3" << endl;
  long long int c;
  cin >> c;
  vector<long long int> ans(n);
  ans[1] = (a + b - c);
  ans[0] = a - ans[1];
  ans[2] = b - ans[1];
  for (long long int i = 3; i < n; i++) {
    cout << "? " << i << " " << i + 1 << endl;
    long long int x;
    cin >> x;
    ans[i] = x - ans[i - 1];
  }
  cout << "! ";
  for (long long int i = 0; i < n; i++) {
    cout << ans[i] << " ";
  }
  cout << endl;
}
int32_t main() {
  solve();
  cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC
       << "ms\n";
  return 0;
}
