function specialGrid(n: number): number[][] {
const size = 1 << n;
const grid: number[][] = Array.from({ length: size }, () =>
new Array(size).fill(0)
);
let val = 0;
function solve(r: number, c: number, size: number): void {
if (size === 1) {
grid[r][c] = val++;
return;
}
const s = size / 2;
solve(r, c + s, s); // top right
solve(r + s, c + s, s); // bottom right
solve(r + s, c, s); // bottom left
solve(r, c, s); // top left
}
solve(0, 0, size);
return grid;
}