// Definition for a QuadTree node.
Node(bool _val, bool _isLeaf, Node* _topLeft, Node* _topRight, Node* _bottomLeft, Node* _bottomRight) {
bottomLeft = _bottomLeft;
bottomRight = _bottomRight;
Node* construct(vector<vector<int>>& grid) {
if( sum== N*N || sum ==0)
return new Node(grid[0][0],true, NULL,NULL,NULL,NULL);
vector<vector<int>> tl(N/2,vector<int>(N/2,0));
vector<vector<int>> tr(N/2,vector<int>(N/2,0));
vector<vector<int>> bl(N/2,vector<int>(N/2,0));
vector<vector<int>> br(N/2,vector<int>(N/2,0));
br[i][j]=grid[i+N/2][j+N/2];
return new Node(false,false,construct(tl),construct(tr),construct(bl),construct(br));