#include <iostream>
#include <vector>
#include <bits/stdc++.h>
using namespace std;
#define saleh \
ios_base::sync_with_stdio(false); \
cin.tie(nullptr);
#define ll long long
struct node
{
ll sum, pre, suff, mx;
node(ll x = 0)
{
sum = pre = suff = mx = x;
}
void change(ll x)
{
sum = pre = suff = mx = x;
}
};
struct segTree
{
int size;
vector<node> segData;
void build(int n)
{
size = 1;
while (size < n)
size *= 2;
segData.resize(2 * size);
}
node merge(node l, node r)
{
node res;
res.mx = max({l.mx, r.mx, l.suff + r.pre});
res.pre = max(l.pre, l.sum + r.pre);
res.suff = max(r.suff, r.sum + l.suff);
res.sum = l.sum + r.sum;
return res;
}
void build(vector<ll> &v, int x, int lx, int rx)
{
if (rx - lx == 1)
{
if (lx < (int)v.size())
{
segData[x] = node(v[lx]);
}
return;
}
int mid = (lx + rx) / 2;
build(v, 2 * x + 1, lx, mid);
build(v, 2 * x + 2, mid, rx);
segData[x] = merge(segData[2 * x + 1], segData[2 * x + 2]);
}
void build(vector<ll> &v)
{
build(v, 0, 0, size);
}
node range(int l, int r, int x, int lx, int rx)
{
if (lx >= r || rx <= l)
return node(0);
if (lx >= l && rx <= r)
return segData[x];
int mid = (lx + rx) / 2;
node lef = range(l, r, 2 * x + 1, lx, mid);
node right = range(l, r, 2 * x + 2, mid, rx);
return merge(lef, right);
}
ll range(int l, int r)
{
return range(l, r, 0, 0, size).mx;
}
node full_range(int l, int r)
{
return range(l, r, 0, 0, size);
}
};
void solve(
vector<ll> &c, vector<ll> &e, vector<pair<int, int>> &br, int k)
{
// c is b - a
// e is the (n-k) segments
int n = c.size() + 1;
segTree segment;
segment.build(n);
segment.build(c);
// zero based , right + 1
//(left to LeftStartIndForD)
//(RightEndIndForDPlus1 to right)
ll ans = LLONG_MIN;
for (int i = 0; i < e.size(); i++)
{
ll total_sum = segment.full_range(i, i + k).sum;
// cout << "Sum from " << LeftStartIndForD << " to " << RightEndIndForDPlus1 << " = " << total_sum << '\n';
ll tmp = total_sum;
ll maxPre = segment.full_range(br[i].first, i).suff;
// cout << maxPre << '\n';
tmp += maxPre;
ll maxSuff = segment.full_range(i + k, br[i].second + 1).pre;
// cout<<"suf"<<i+k<<" "<<br[i].second+1<<endl;
// cout << maxSuff << '\n';
tmp += maxSuff;
ans = max(ans, tmp - e[i]);
// cout<<i<<" to "<<i+k-1<<endl;
// cout<<"sum : "<<total_sum<<endl;
// cout<<"maxPre : "<<maxPre<<endl;
// cout<<"maxSuff : "<<maxSuff<<endl;
}
cout << ans << '\n';
}
int main()
{
saleh;
int t;
cin >> t;
while (t--)
{
int n, k;
cin >> n >> k;
vector<ll> a(n), b(n), c(n);
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
for (int i = 0; i < n; i++)
{
cin >> b[i];
c[i] = b[i] - a[i];
}
vector<ll> sumbk(n - k + 1);
ll bsum = 0;
int l = 0, r = 0;
while (r < k)
{
bsum += b[r++];
}
sumbk[0] = bsum;
while (r < n)
{
bsum -= b[l++];
bsum += b[r++];
sumbk[l] = bsum;
}
vector<pair<int, int>> br(n - k + 1);
stack<pair<ll, int>> s1, s2;
s1.push({sumbk[0], 0});
br[0].first = 0;
for (int i = 1; i < n - k + 1; i++)
{
while (!s1.empty() && s1.top().first <= sumbk[i])
s1.pop();
if (s1.empty())
{
br[i].first = 0;
}
else
{
br[i].first = s1.top().second + 1;
}
s1.push({sumbk[i], i});
}
s2.push({sumbk[n - k], n - k});
br[n - k].second = n - 1;
for (int i = n - k - 1; i >= 0; i--)
{
while (!s2.empty() && s2.top().first <= sumbk[i])
s2.pop();
if (s2.empty())
{
br[i].second = n - 1;
}
else
{
br[i].second = s2.top().second - 2 + k;
}
s2.push({sumbk[i], i});
}
solve(c, sumbk, br, k);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIHNhbGVoICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBcCiAgICBjaW4udGllKG51bGxwdHIpOwojZGVmaW5lIGxsIGxvbmcgbG9uZwoKc3RydWN0IG5vZGUKewogICAgbGwgc3VtLCBwcmUsIHN1ZmYsIG14OwogICAgbm9kZShsbCB4ID0gMCkKICAgIHsKICAgICAgICBzdW0gPSBwcmUgPSBzdWZmID0gbXggPSB4OwogICAgfQogICAgdm9pZCBjaGFuZ2UobGwgeCkKICAgIHsKICAgICAgICBzdW0gPSBwcmUgPSBzdWZmID0gbXggPSB4OwogICAgfQp9OwoKc3RydWN0IHNlZ1RyZWUKewogICAgaW50IHNpemU7CiAgICB2ZWN0b3I8bm9kZT4gc2VnRGF0YTsKCiAgICB2b2lkIGJ1aWxkKGludCBuKQogICAgewogICAgICAgIHNpemUgPSAxOwogICAgICAgIHdoaWxlIChzaXplIDwgbikKICAgICAgICAgICAgc2l6ZSAqPSAyOwogICAgICAgIHNlZ0RhdGEucmVzaXplKDIgKiBzaXplKTsKICAgIH0KCiAgICBub2RlIG1lcmdlKG5vZGUgbCwgbm9kZSByKQogICAgewogICAgICAgIG5vZGUgcmVzOwogICAgICAgIHJlcy5teCA9IG1heCh7bC5teCwgci5teCwgbC5zdWZmICsgci5wcmV9KTsKICAgICAgICByZXMucHJlID0gbWF4KGwucHJlLCBsLnN1bSArIHIucHJlKTsKICAgICAgICByZXMuc3VmZiA9IG1heChyLnN1ZmYsIHIuc3VtICsgbC5zdWZmKTsKICAgICAgICByZXMuc3VtID0gbC5zdW0gKyByLnN1bTsKICAgICAgICByZXR1cm4gcmVzOwogICAgfQoKICAgIHZvaWQgYnVpbGQodmVjdG9yPGxsPiAmdiwgaW50IHgsIGludCBseCwgaW50IHJ4KQogICAgewogICAgICAgIGlmIChyeCAtIGx4ID09IDEpCiAgICAgICAgewogICAgICAgICAgICBpZiAobHggPCAoaW50KXYuc2l6ZSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzZWdEYXRhW3hdID0gbm9kZSh2W2x4XSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpbnQgbWlkID0gKGx4ICsgcngpIC8gMjsKICAgICAgICBidWlsZCh2LCAyICogeCArIDEsIGx4LCBtaWQpOwogICAgICAgIGJ1aWxkKHYsIDIgKiB4ICsgMiwgbWlkLCByeCk7CiAgICAgICAgc2VnRGF0YVt4XSA9IG1lcmdlKHNlZ0RhdGFbMiAqIHggKyAxXSwgc2VnRGF0YVsyICogeCArIDJdKTsKICAgIH0KCiAgICB2b2lkIGJ1aWxkKHZlY3RvcjxsbD4gJnYpCiAgICB7CiAgICAgICAgYnVpbGQodiwgMCwgMCwgc2l6ZSk7CiAgICB9CgogICAgbm9kZSByYW5nZShpbnQgbCwgaW50IHIsIGludCB4LCBpbnQgbHgsIGludCByeCkKICAgIHsKICAgICAgICBpZiAobHggPj0gciB8fCByeCA8PSBsKQogICAgICAgICAgICByZXR1cm4gbm9kZSgwKTsKICAgICAgICBpZiAobHggPj0gbCAmJiByeCA8PSByKQogICAgICAgICAgICByZXR1cm4gc2VnRGF0YVt4XTsKCiAgICAgICAgaW50IG1pZCA9IChseCArIHJ4KSAvIDI7CiAgICAgICAgbm9kZSBsZWYgPSByYW5nZShsLCByLCAyICogeCArIDEsIGx4LCBtaWQpOwogICAgICAgIG5vZGUgcmlnaHQgPSByYW5nZShsLCByLCAyICogeCArIDIsIG1pZCwgcngpOwogICAgICAgIHJldHVybiBtZXJnZShsZWYsIHJpZ2h0KTsKICAgIH0KCiAgICBsbCByYW5nZShpbnQgbCwgaW50IHIpCiAgICB7CiAgICAgICAgcmV0dXJuIHJhbmdlKGwsIHIsIDAsIDAsIHNpemUpLm14OwogICAgfQoKICAgIG5vZGUgZnVsbF9yYW5nZShpbnQgbCwgaW50IHIpCiAgICB7CiAgICAgICAgcmV0dXJuIHJhbmdlKGwsIHIsIDAsIDAsIHNpemUpOwogICAgfQp9OwoKdm9pZCBzb2x2ZSgKICAgIHZlY3RvcjxsbD4gJmMsIHZlY3RvcjxsbD4gJmUsIHZlY3RvcjxwYWlyPGludCwgaW50Pj4gJmJyLCBpbnQgaykKewogICAgLy8gYyBpcyBiIC0gYQogICAgLy8gZSBpcyB0aGUgKG4taykgc2VnbWVudHMKICAgIGludCBuID0gYy5zaXplKCkgKyAxOwogICAgc2VnVHJlZSBzZWdtZW50OwogICAgc2VnbWVudC5idWlsZChuKTsKICAgIHNlZ21lbnQuYnVpbGQoYyk7CgogICAgLy8gemVybyBiYXNlZCAsIHJpZ2h0ICsgMQogICAgLy8obGVmdCB0byBMZWZ0U3RhcnRJbmRGb3JEKQogICAgLy8oUmlnaHRFbmRJbmRGb3JEUGx1czEgdG8gcmlnaHQpCiAgICBsbCBhbnMgPSBMTE9OR19NSU47CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGUuc2l6ZSgpOyBpKyspCiAgICB7CiAgICAgICAgbGwgdG90YWxfc3VtID0gc2VnbWVudC5mdWxsX3JhbmdlKGksIGkgKyBrKS5zdW07CiAgICAgICAgLy8gY291dCA8PCAiU3VtIGZyb20gIiA8PCBMZWZ0U3RhcnRJbmRGb3JEIDw8ICIgdG8gIiA8PCBSaWdodEVuZEluZEZvckRQbHVzMSA8PCAiID0gIiA8PCB0b3RhbF9zdW0gPDwgJ1xuJzsKICAgICAgICBsbCB0bXAgPSB0b3RhbF9zdW07CgogICAgICAgIGxsIG1heFByZSA9IHNlZ21lbnQuZnVsbF9yYW5nZShicltpXS5maXJzdCwgaSkuc3VmZjsKICAgICAgICAvLyBjb3V0IDw8IG1heFByZSA8PCAnXG4nOwogICAgICAgIHRtcCArPSBtYXhQcmU7CgogICAgICAgIGxsIG1heFN1ZmYgPSBzZWdtZW50LmZ1bGxfcmFuZ2UoaSArIGssIGJyW2ldLnNlY29uZCArIDEpLnByZTsKICAgICAgICAvLyBjb3V0PDwic3VmIjw8aStrPDwiICI8PGJyW2ldLnNlY29uZCsxPDxlbmRsOwogICAgICAgIC8vIGNvdXQgPDwgbWF4U3VmZiA8PCAnXG4nOwogICAgICAgIHRtcCArPSBtYXhTdWZmOwogICAgICAgIGFucyA9IG1heChhbnMsIHRtcCAtIGVbaV0pOwogICAgICAgIC8vIGNvdXQ8PGk8PCIgdG8gIjw8aStrLTE8PGVuZGw7CiAgICAgICAgLy8gY291dDw8InN1bSA6ICI8PHRvdGFsX3N1bTw8ZW5kbDsKICAgICAgICAvLyBjb3V0PDwibWF4UHJlIDogIjw8bWF4UHJlPDxlbmRsOwogICAgICAgIC8vIGNvdXQ8PCJtYXhTdWZmIDogIjw8bWF4U3VmZjw8ZW5kbDsKICAgIH0KCiAgICBjb3V0IDw8IGFucyA8PCAnXG4nOwp9CgppbnQgbWFpbigpCnsKICAgIHNhbGVoOwoKICAgIGludCB0OwogICAgY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIGludCBuLCBrOwogICAgICAgIGNpbiA+PiBuID4+IGs7CgogICAgICAgIHZlY3RvcjxsbD4gYShuKSwgYihuKSwgYyhuKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgIH0KICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGNpbiA+PiBiW2ldOwogICAgICAgICAgICBjW2ldID0gYltpXSAtIGFbaV07CiAgICAgICAgfQoKICAgICAgICB2ZWN0b3I8bGw+IHN1bWJrKG4gLSBrICsgMSk7CgogICAgICAgIGxsIGJzdW0gPSAwOwogICAgICAgIGludCBsID0gMCwgciA9IDA7CiAgICAgICAgd2hpbGUgKHIgPCBrKQogICAgICAgIHsKICAgICAgICAgICAgYnN1bSArPSBiW3IrK107CiAgICAgICAgfQogICAgICAgIHN1bWJrWzBdID0gYnN1bTsKCiAgICAgICAgd2hpbGUgKHIgPCBuKQogICAgICAgIHsKICAgICAgICAgICAgYnN1bSAtPSBiW2wrK107CiAgICAgICAgICAgIGJzdW0gKz0gYltyKytdOwogICAgICAgICAgICBzdW1ia1tsXSA9IGJzdW07CiAgICAgICAgfQoKICAgICAgICB2ZWN0b3I8cGFpcjxpbnQsIGludD4+IGJyKG4gLSBrICsgMSk7CiAgICAgICAgc3RhY2s8cGFpcjxsbCwgaW50Pj4gczEsIHMyOwoKICAgICAgICBzMS5wdXNoKHtzdW1ia1swXSwgMH0pOwogICAgICAgIGJyWzBdLmZpcnN0ID0gMDsKCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuIC0gayArIDE7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIHdoaWxlICghczEuZW1wdHkoKSAmJiBzMS50b3AoKS5maXJzdCA8PSBzdW1ia1tpXSkKICAgICAgICAgICAgICAgIHMxLnBvcCgpOwoKICAgICAgICAgICAgaWYgKHMxLmVtcHR5KCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJyW2ldLmZpcnN0ID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJyW2ldLmZpcnN0ID0gczEudG9wKCkuc2Vjb25kICsgMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzMS5wdXNoKHtzdW1ia1tpXSwgaX0pOwogICAgICAgIH0KCiAgICAgICAgczIucHVzaCh7c3VtYmtbbiAtIGtdLCBuIC0ga30pOwogICAgICAgIGJyW24gLSBrXS5zZWNvbmQgPSBuIC0gMTsKCiAgICAgICAgZm9yIChpbnQgaSA9IG4gLSBrIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgICAgewogICAgICAgICAgICB3aGlsZSAoIXMyLmVtcHR5KCkgJiYgczIudG9wKCkuZmlyc3QgPD0gc3VtYmtbaV0pCiAgICAgICAgICAgICAgICBzMi5wb3AoKTsKCiAgICAgICAgICAgIGlmIChzMi5lbXB0eSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBicltpXS5zZWNvbmQgPSBuIC0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGJyW2ldLnNlY29uZCA9IHMyLnRvcCgpLnNlY29uZCAtIDIgKyBrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHMyLnB1c2goe3N1bWJrW2ldLCBpfSk7CiAgICAgICAgfQogICAgICAgIHNvbHZlKGMsIHN1bWJrLCBiciwgayk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K