#include <bits/stdc++.h>
using namespace std;
long long nxt() {
  long long x;
  cin >> x;
  return x;
}
vector<int> prime;
void generateP() {
  vector<bool> s(100000, 0);
  for (int i = 3; i < 1000; i += 2) {
    if (s[i] == 0) {
      for (int j = i * i; j < 100000; j++) {
        s[j] = 1;
      }
    }
  }
  prime.push_back(2);
  for (int i = 3; i < 100000; i += 2) {
    if (s[i] == 0) {
      prime.push_back(i);
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  vector<int> a;
  int total;
  cout << "? 1 " << n << '\n';
  cout.flush();
  cin >> total;
  int last = total;
  for (int i = 2; i < n; i++) {
    cout << "? " << i << " " << n << '\n';
    cout.flush();
    int tmp;
    cin >> tmp;
    a.push_back(last - tmp);
    last = tmp;
  }
  cout << "? 1 " << n - 1 << '\n';
  cout.flush();
  int le;
  cin >> le;
  le = total - le;
  int tmp = 0;
  for (int i = 0; i < a.size(); i++) {
    tmp += a[i];
  }
  a.push_back(total - tmp - le);
  a.push_back(le);
  cout << "! ";
  for (int x : a) {
    cout << x << " ";
  }
  cout.flush();
  return 0;
}
