#include <bits/stdc++.h>
using namespace std;
long long t;
const long long M = 1e9 + 7;
const long long inf = INT64_MAX;
long long max(long long a, long long b, long long c) {
  return max(a, max(b, c));
}
long long min(long long a, long long b, long long c) {
  return min(a, min(b, c));
}
long long fspow(long long x, long long y) {
  long long ans;
  if (y == 0) return 1;
  ans = fspow(x, y / 2);
  if (y % 2 == 0) return ((ans * ans) % M);
  return (x * ((ans * ans) % M)) % M;
}
long long gcd(long long x, long long y) {
  if (x < y) swap(x, y);
  if (y == 0) return x;
  return gcd(x % y, y);
}
long long p2(long long x) {
  long long ans = 0;
  while (x > 1) {
    ans++;
    x /= 2;
  }
  return ans;
}
signed main() {
  t = 1;
  while (t--) {
    long long n;
    cin >> n;
    long long s[n + 1];
    for (long long i = n; i > 1; i--) {
      cout << "? " << 1 << " " << i << endl;
      long long v;
      cin >> v;
      s[i] = v;
    }
    cout << "? " << 2 << " " << n << endl;
    long long v;
    cin >> v;
    s[1] = s[n] - v;
    s[0] = 0;
    cout << "! ";
    for (long long i = 1; i <= n; i++) cout << s[i] - s[i - 1] << " ";
  }
}
