#include <bits/stdc++.h>   #pragma GCC optimize(2)   #pragma GCC optimize(3)   #pragma GCC optimize( Ofast )   #pragma GCC optimize( inline )   #pragma GCC optimize( -fgcse )   #pragma GCC optimize( -fgcse-lm )   #pragma GCC optimize( -fipa-sra )   #pragma GCC optimize( -ftree-pre )   #pragma GCC optimize( -ftree-vrp )   #pragma GCC optimize( -fpeephole2 )   #pragma GCC optimize( -ffast-math )   #pragma GCC optimize( -fsched-spec )   #pragma GCC optimize( unroll-loops )   #pragma GCC optimize( -falign-jumps )   #pragma GCC optimize( -falign-loops )   #pragma GCC optimize( -falign-labels )   #pragma GCC optimize( -fdevirtualize )   #pragma GCC optimize( -fcaller-saves )   #pragma GCC optimize( -fcrossjumping )   #pragma GCC optimize( -fthread-jumps )   #pragma GCC optimize( -funroll-loops )   #pragma GCC optimize( -fwhole-program )   #pragma GCC optimize( -freorder-blocks )   #pragma GCC optimize( -fschedule-insns )   #pragma GCC optimize( inline-functions )   #pragma GCC optimize( -ftree-tail-merge )   #pragma GCC optimize( -fschedule-insns2 )   #pragma GCC optimize( -fstrict-aliasing )   #pragma GCC optimize( -fstrict-overflow )   #pragma GCC optimize( -falign-functions )   #pragma GCC optimize( -fcse-skip-blocks )   #pragma GCC optimize( -fcse-follow-jumps )   #pragma GCC optimize( -fsched-interblock )   #pragma GCC optimize( -fpartial-inlining )   #pragma GCC optimize( no-stack-protector )   #pragma GCC optimize( -freorder-functions )   #pragma GCC optimize( -findirect-inlining )   #pragma GCC optimize( -fhoist-adjacent-loads )   #pragma GCC optimize( -frerun-cse-after-loop )   #pragma GCC optimize( inline-small-functions )   #pragma GCC optimize( -finline-small-functions )   #pragma GCC optimize( -ftree-switch-conversion )   #pragma GCC optimize( -foptimize-sibling-calls )   #pragma GCC optimize( -fexpensive-optimizations )   #pragma GCC optimize( -funsafe-loop-optimizations )   #pragma GCC optimize( inline-functions-called-once )   #pragma GCC optimize( -fdelete-null-pointer-checks )   using namespace std;   const int N = 2e5 + 9;   int x[N], t, n, k;   char buf[1 << 21], *p1 = buf, *p2 = buf;   inline int getc() {     return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2)                ? EOF                : *p1++;   }   inline int read() {     int ret = 0, f = 0;     char ch = getc();     while (!isdigit(ch)) {       if (ch ==  - ) f = 1;       ch = getc();     }     while (isdigit(ch)) {       ret = ret * 10 + ch - 48;       ch = getc();     }     return f ? -ret : ret;   }   char Buf[1 << 21], out[20];   int P, Size = -1;   inline void flush() {     fwrite(Buf, 1, Size + 1, stdout);     Size = -1;   }   inline void write(int x, char ch) {     if (Size > 1 << 20) flush();     if (x < 0) Buf[++Size] = 45, x = -x;     do {       out[++P] = x % 10 + 48;     } while (x /= 10);     do {       Buf[++Size] = out[P];     } while (--P);     Buf[++Size] = ch;   }   inline int max(int a, int b) { return a > b ? a : b; }   int main() {     t = read();     while (t--) {       n = read(), k = read();       for (register int i = 0; i < n; i++) *(x + i) = read();       for (register int i = 0; i < n; i++) read();       sort(x, x + n);       int maxi = 0, opt = 0, fans = 0;       for (register int i = 0; i < n; i++) {         int curr = upper_bound(x + i, x + n, *(x + i) + k) - x - i;         if (i) opt = x + i - lower_bound(x, x + i - 1, *(x + i - 1) - k);         maxi = max(maxi, opt);         curr += maxi;         fans = max(fans, curr);       }       write(fans,   n );     }     flush();     return 0;   }