#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long lcm(long long a, long long b) { return a * b / gcd(a, b); }
long long pow_mod(long long x, long long n, long long mod) {
  long long res = 1;
  while (n) {
    if (n & 1) res = res * x % mod;
    x = x * x % mod;
    n >>= 1;
  }
  return res;
}
void exgcd(long long a, long long b, long long& d, long long& x, long long& y) {
  if (!b) {
    d = a;
    x = 1;
    y = 0;
  } else {
    exgcd(b, a % b, d, y, x);
    y -= x * (a / b);
  }
}
long long INV(long long a, long long p) {
  long long d, x, y;
  exgcd(a, p, d, x, y);
  return d == 1 ? (x + p) % p : -1;
}
inline long long read() {
  long long x = 0, y = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') y = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
  return x * y;
}
long long a[1005];
long long b[1005];
signed main() {
  long long n;
  cin >> n;
  for (long long i = 2; i <= n; i++) {
    cout << "? 1 " << i << endl;
    long long k;
    cin >> k;
    b[i] = k;
  }
  cout << "? 2 3" << endl;
  long long k;
  cin >> k;
  b[1] = b[3] - k;
  for (long long i = 1; i <= n; i++) {
    a[i] = b[i] - b[i - 1];
  }
  cout << "! ";
  for (long long i = 1; i <= n; i++) cout << a[i] << ' ';
}
