def solve(): n, k = map(int, input().split()) if n == 2: if k == 2: print("Yes") print("##") print("..") else: print("No") return if k <= 2 or 2*k > n*n: print("No") return print("Yes") if k <= n: print("#"*(k-1) + "."*(n-k+1)) print("#" + "."*(n-1)) for i in range(n - 2): print("."*n) return c = [["."] * n for i in range(n)] p, q = divmod(2*k, n) lim = [p+1] * q + [p] * (n-q) for i in range(n): if i & 1: for j in range(lim[i] - 2): c[i][j] = "#" c[i][lim[i]-2] = "#" if i != n-1: c[i][lim[i+1]-2] = "#" s = sum(c[i].count("#") for i in range(n)) for i in range(k - s): c[0][i] = "#" for i in range(n): print("".join(c[i])) return t = int(input()) for i in range(t): solve()