#include <bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define Bit(mask , i) ((mask >> i) & 1)
#define fi first
#define se second
#define _LOG2(nl) 31 - __builtin_clz(nl)
#define c_bit(nl) __builtin_popcount(nl)
#define ii pair<long long , int>
#define lll pair<long long , pair<long long , long long>>
#define lii pair<long long , pair<long long , int>>
#define iii pair<int , pair<int , int>>
#define iiii pair<pair<int , int> , pair<int , int>>
#define llll pair<pair<__int128 , __int128> , pair<__int128 , __int128>>
#define li pair<long long , int>
#define db long double
#define onBit(mask , i) (mask | (1 << i))
#define offBit(mask , i) (mask & (~(1 << i)))

const int N = 2e5 + 7;
int n;
long long a[N];

void inp(){
    cin >> n;
}

long long ask(int i , int j){
    cout << "? " << i << " " << j << '\n';
    cout.flush();

    long long res;
    cin >> res;
    return res;
}

void solve(){
    long long x = ask(1 , 2) , y = ask(2 , 3) , z = ask(1 , 3);
    a[1] = (x - y + z) / 2;
    a[2] = (x + y - z) / 2;
    a[3] = (y + z - x) / 2;

    for (int i = 4 ; i <= n ; ++i){
        a[i] = ask(3 , i) - a[3];
    }
    cout << "! ";
    for (int i = 1 ; i <= n ; ++i){
        cout << a[i] << " ";
    }
    cout << '\n';
    cout.flush();
}

int main(){
//    freopen("difmax.inp" , "r" , stdin);
//    freopen("difmax.out" , "w" , stdout);
    faster;
    inp();
    solve();
    return 0;
}
