#include <bits/stdc++.h>
using namespace std;
template <typename Arg1>
void prn(Arg1&& arg1) {
  cout << arg1 << endl;
}
template <typename Arg1, typename... Args>
void prn(Arg1&& arg1, Args&&... args) {
  cout << arg1 << " ";
  prn(args...);
}
template <typename Arg1>
void prs(Arg1&& arg1) {
  cout << arg1 << " ";
}
template <typename Arg1, typename... Args>
void prs(Arg1&& arg1, Args&&... args) {
  cout << arg1 << " ";
  prs(args...);
}
template <typename Arg1>
void read(Arg1&& arg1) {
  cin >> arg1;
  fflush(stdin);
}
template <typename Arg1, typename... Args>
void read(Arg1&& arg1, Args&&... args) {
  cin >> arg1;
  read(args...);
}
void solve() {
  int n;
  read(n);
  prn("?", 1, 2);
  int o2, t3, o3;
  read(o2);
  prn("?", 2, 3);
  read(t3);
  prn("?", 1, 3);
  read(o3);
  vector<int> ans(n + 1);
  ans[1] = o3 - t3;
  ans[3] = o3 - o2;
  ans[2] = o3 - ans[1] - ans[3];
  for (int i = 4; i <= n; ++i) {
    prn("?", i - 1, i);
    int val;
    read(val);
    ans[i] = val - ans[i - 1];
  }
  prs("!");
  for (int i = 1; i <= n; ++i) {
    prs(ans[i]);
  }
  prn("");
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1;
  for (int tc = 1; tc <= t; ++tc) {
    solve();
  }
  return 0;
}
