#include<cstdlib>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
#include<cstdio>
#include<iostream>
#include<vector>
#include<map>
#include<cmath>
#include<iomanip>
#include<string>
#include<stack>
#include<unordered_map>
#include<complex>
#define ll long long
#define ull unsigned long long
#define uint unsigned int
#define vl __int128
#define ld long double
#define INF 0x3f3f3f3f
#define eps 1e-9
#define ls rt<<1
#define rs rt<<1|1
#define fir first
#define sec second
#define lb(x) ((x)&(-(x)))
#define pb push_back
#define pii pair<int,int>
#define pdi pair<double,int>
#define forUp(i,a,b) for(int i=(a);i<=(b);++i)
#define forDown(i,a,b) for(int i=(a);i>=(b);--i)
template<typename T>inline void chkMax(T &x,T y){if(x<y)x=y;}
template<typename T>inline void chkMin(T &x,T y){if(x>y)x=y;}
template<typename T>inline void addMod(T &x,T y,T mod){if((x+=y)>=mod)x-=mod;}
template<typename T>inline void subMod(T &x,T y,T mod){if((x-=y)<0)x+=mod;}
using namespace std;
const int N=2000+10;
//#define use_file
#define more_test
//#define need_init
#ifdef more_test
int T;
#endif
int n,a[N],sgn[N];
int ask(int l,int r,bool flag=true){
int tmp=0;
cout<<"? "<<l<<" "<<r<<endl;
cin>>tmp;
if(flag)forUp(i,l,r)sgn[i]=-sgn[i];
return tmp;
}
void solve(int x){
forUp(i,1,n-1){
int sum=ask(i,i,false);
a[i]=x-sum;
x=sum;
}
a[n]=x;
cout<<"!";
forUp(i,1,n)cout<<" "<<a[i]*sgn[i];
cout<<endl;
}
void SOLVE(/*int TestID*/){
cin>>n;
forUp(i,1,n)sgn[i]=1;
int t1=ask(1,n);int t2=ask(1,n);
if(t1==0||t2==0){
if(t2==0)ask(1,n);
solve(max(t1,t2));
return;
}
int sum=t2,pos=0;
forUp(i,1,n){
int x=ask(max(i-1,1),i);
if(x>sum){
pos=i;
sum=x;
break;
}
}
int need=0;
forDown(i,pos-1,1){
int x=ask(i,i+need);
if(x>sum)sum=x,need=0;
else need=1;
}
if(need)sum=ask(1,1);
need=0;
forUp(i,pos+1,n){
int x=ask(i-need,i);
if(x>sum)sum=x,need=0;
else need=1;
}
if(need)sum=ask(n,n);
solve(sum);
}
/*
Input:
Output:
*/
int main(){
#ifdef use_file
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
#endif
#ifdef need_init
init();
#endif
#ifdef more_test
scanf("%d",&T);
for(int i=1;i<=T;++i)SOLVE(/*i*/);
#else
SOLVE();
#endif
return 0;
}