#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline bool uax(T &x, T y) {
  return (y > x) ? x = y, true : false;
}
template <typename T>
inline bool uin(T &x, T y) {
  return (y < x) ? x = y, true : false;
}
template <typename T>
void kek(T ans) {
  cout << ans << endl;
  exit(0);
}
const int MOD = (int)1e9 + 7;
const long long INF = (long long)1e18 + 42;
int ask(int l, int r) {
  cout << "? " << 1 + l << ' ' << 1 + r << endl;
  int x;
  cin >> x;
  return x;
}
int main() {
  cin.tie(nullptr)->sync_with_stdio(false);
  int n;
  cin >> n;
  vector<int> a(n);
  int sum = ask(0, n - 1);
  int cur = 0;
  for (int i = 0; i < n - 2; ++i) {
    a[i] = sum - ask(i + 1, n - 1) - cur;
    cur += a[i];
  }
  a[n - 1] = sum - ask(0, n - 2);
  a[n - 2] = sum - accumulate(begin(a), end(a), 0);
  cout << "! ";
  for (int x : a) cout << x << ' ';
  cout << endl;
}
