#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
long long ask(long long a, long long b) {
  cout << "? " << a + 1 << " " << b + 1 << endl;
  long long k;
  cin >> k;
  return k;
}
vector<long long> sol(1010);
void solve(long long a, long long b) {
  vector<long long> k;
  long long tot = 0;
  for (long long i = a; i < b; i++) {
    k.push_back(ask(i, i + 1));
    if (i % 2 != a % 2) tot += k.back();
  }
  sol[a] = ask(a, b) - tot;
  for (long long i = a; i < b; i++) {
    long long y = k[i - a];
    sol[i + 1] = y - sol[i];
  }
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long N;
  cin >> N;
  if (N % 2)
    solve(0, N - 1);
  else {
    solve(0, 2);
    solve(3, N - 1);
  }
  cout << "! ";
  for (long long i = 0; i < N; i++) cout << sol[i] << " ";
  cout << endl;
}
