#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=200005;
int T,n,p[maxn],s[maxn],pre[maxn],nxt[maxn],ans[maxn],hep_size;
struct BNS{
int x,y,Tim;
bool operator<(const BNS &B)const{return Tim<B.Tim;}
}hep[maxn];
int read(){
int ret=0,f=1;char ch=getchar();
while(!isdigit(ch)) f^=!(ch^'-'),ch=getchar();
while( isdigit(ch)) ret=(ret<<3)+(ret<<1)+(ch&15),ch=getchar();
return ret*(f?1:-1);
}
int CALC(int x,int y){return ((p[y]-p[x]-1)/(s[x]+s[y])+1)*2-x%2;}
void del(int x,int y){nxt[pre[x]]=nxt[x],pre[nxt[x]]=pre[x];}
void put(int x,int y,int Tim){
hep[++hep_size]=(BNS){x,y,Tim};int son=hep_size;
while(son>1&&hep[son]<hep[son>>1]) swap(hep[son],hep[son>>1]),son>>=1;
}
BNS get(){
BNS now=hep[1];int fa=1,son;hep[1]=hep[hep_size--];
while((fa<<1)<=hep_size){
if((fa<<1|1)>hep_size||hep[fa<<1]<hep[fa<<1|1]) son=fa<<1;else son=fa<<1|1;
if(hep[son]<hep[fa]) swap(hep[son],hep[fa]),fa=son;else break;
}return now;
}
signed main(){
T=read();
while(T--){
n=read(),hep_size=0,memset(ans,0,sizeof ans);
for(int i=1;i<=n;i++) pre[i]=i-1,nxt[i]=i+1;
for(int i=1;i<=n;i++) p[i]=read();
for(int i=1;i<=n;i++) s[i]=read();
for(int i=1;i< n;i++) put(i,i+1,CALC(i,i+1));
while(hep_size){
BNS now=get();
if(ans[now.x]||ans[now.y]) continue;
ans[now.x]=ans[now.y]=now.Tim;
if(1<=pre[now.x]&&nxt[now.y]<=n) put(pre[now.x],nxt[now.y],CALC(pre[now.x],nxt[now.y]));
del(now.x,now.y);
}for(int i=1;i<=n;i++) if(i==n) printf("%lld\n",ans[i]);else printf("%lld ",ans[i]);
}
return 0;
}