#include using namespace std; int *tab, *tab2, K = 0; long long int merge(int start_1, int koniec_1, int start_2, int koniec_2){ long long int inwersje = 0; for(int i = start_1; i <= koniec_2; i++){ tab2[i] = tab[i]; } int i = start_1; int j = start_2; int k = start_1; int l = start_1; while(i <= koniec_1 && j <= koniec_2){ while(tab2[l] + K >= tab2[j] && l <= koniec_1){ l++; } if(tab2[i] <= tab2[j]){ tab[k++] = tab2[j++]; inwersje += (koniec_1 - l + 1); }else{ tab[k++] = tab2[i++]; } } while(i <= koniec_1){ tab[k++] = tab2[i++]; } while(j <= koniec_2){ tab[k++] = tab2[j++]; } return inwersje; } long long int merge_sort(int start, int koniec){ if(start < koniec){ int m = (start + koniec) / 2; long long int a = merge_sort(start, m); long long int b = merge_sort(m + 1, koniec); long long int c = merge(start, m, m + 1, koniec); return a + b + c; } return (long long int)(0); } int main(){ ios_base::sync_with_stdio(false); int z; cin >> z; while(z--){ int n; cin >> n >> K; tab = new int[n + 1]; tab2 = new int[n + 1]; for(int i = 1; i <= n; i++){ cin >> tab[i]; } cout << merge_sort(1, n) << endl; delete [] tab; delete [] tab2; } return 0; }