from math import sqrt def solve(): N, L = map(int, input().split()) C = max(1, (int(sqrt(2 * (L * L) // N)))) ls = [[] for _ in range(L // C + 2)] for _ in range(N): x, y = map(int, input().split()) ls[y // C].append((x, y)) ans = [] for i in range(L // C + 2): if len(ls[i]) == 0: continue ls[i].sort() for x, y in ls[i]: # print(x, y) ans.append((x, y)) print(len(ans)) for x, y in ans: print(x, y) # total = 0 # for i in range(len(ans)): # total += abs(ans[i][0] - ans[(i + 1) % len(ans)][0]) # total += abs(ans[i][1] - ans[(i + 1) % len(ans)][1]) # print("deb", total < 1000 * L) T = int(input()) for _ in range(T): solve()