#include <bits/stdc++.h>
#define lc x<<1
#define rc x<<1|1
const int N = 300005;
typedef long long LL;
const LL INF = 1085102592571150095;

using namespace std;

int n, k, pos[N], t[N];
LL tree[N << 2];
LL lz[N << 2];
LL a[N];
vector<LL> ans;

void Build(int x, int tl, int tr) {
    if (tl == tr) {
        tree[x] = a[tl];
        return ;
    }
    lz[x] = 0;
    int mid = tl + tr >> 1;
    Build(lc, tl , mid);
    Build(rc, mid + 1, tr);
    tree[x] = min(tree[lc], tree[rc]);
}

void push_down(int x, int tl, int tr) {
    if (lz[x]) {
        int mid = tl + tr >> 1;
        lz[lc] += lz[x];
        lz[rc] += lz[x];
        tree[lc] += lz[x];
        tree[rc] += lz[x];
        lz[x] = 0;
    }
}

void update_rang(int x, int tl, int tr, int l, int r, LL num) {
    if (l <= tl && r >= tr) {
        lz[x] += num;
        tree[x] += num;
        return ;
    }
    push_down(x, tl, tr);
    int mid = tl + tr >> 1;
    if (l <= mid) update_rang(lc, tl, mid, l, r, num);
    if (r >= mid + 1) update_rang(rc, mid + 1, tr, l, r, num);
    tree[x] = min(tree[lc], tree[rc]);
}

LL qurrey(int x, int tl, int tr, int l, int r) {
    if (l <= tl && tr <= r) return tree[x];
    push_down(x, tl, tr);
    int mid = tl + tr >> 1;
    LL now = 1e17;
    if (l <= mid) now = qurrey(lc, tl, mid, l, r);
    if (r >= mid + 1) now = min(now, qurrey(rc, mid + 1, tr, l, r));
    return now;
}

int main() {
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif
    int T;
    scanf("%d", &T);
    while(T--) {
        ans.clear();
        scanf("%d%d", &n, &k);
        memset(a + 1, 0xf, n * (sizeof(LL)));
        for (int i = 0; i < k; ++i) {
            scanf("%d", &pos[i]);
        }
        for (int i = 0; i < k; ++i) {
            scanf("%d", &t[i]);
        }
        for (int i = 0; i < k; ++i) {
            a[pos[i]] = t[i] + pos[i] - 1;
        }
        Build(1, 1, n);
        ans.push_back(qurrey(1, 1, n, 1, n));
        for (int i = 2; i <= n; ++i) {
            update_rang(1, 1, n, 1, i - 1, 1);
            update_rang(1, 1, n, i, n, -1);
            ans.push_back(tree[1]);
        }
        for (int i = 0; i < (int)ans.size(); ++i) {
            printf("%lld%c", ans[i], i == (int)ans.size() - 1 ? '\n' : ' ');
        }
    }
}