#include <bits/stdc++.h>
using namespace std;
template <typename T>
istream& operator>>(istream& I, vector<T>& v) {
  for (auto& i : v) I >> i;
  return I;
}
template <typename T>
ostream& operator<<(ostream& O, vector<T>& v) {
  for (auto& i : v) O << i << ' ';
  return O;
}
template <typename T>
istream& operator>>(istream& I, vector<vector<T>>& v) {
  for (auto& i : v)
    for (auto& x : i) I >> x;
  return I;
}
template <typename T>
ostream& operator<<(ostream& O, vector<vector<T>>& v) {
  for (auto& i : v) {
    for (auto& x : i) O << x << ' ';
    O << '\n';
  }
  return O;
}
template <typename T, typename U>
istream& operator>>(istream& I, pair<T, U>& p) {
  I >> p.first >> p.second;
  return I;
}
template <typename T, typename U>
ostream& operator<<(ostream& O, pair<T, U>& p) {
  O << p.first << ' ' << p.second;
  return O;
}
long long ask(long long i, long long j) {
  long long x;
  cout << "? " << i + 1 << " " << j + 1 << endl;
  cin >> x;
  return x;
}
void solve() {
  long long n;
  cin >> n;
  long long A, B, C;
  vector<long long> a(n);
  A = ask(0, 1), B = ask(1, 2), C = ask(0, 2);
  a[0] = (A + C - B) / 2;
  a[1] = A - a[0];
  a[2] = C - a[0];
  for (long long i = 3; i < n; i++) a[i] = ask(0, i) - a[0];
  cout << "! ";
  for (auto x : a) cout << x << " ";
  cout << endl;
}
int32_t main() {
  long long t = 1;
  while (t--) {
    solve();
  }
}
