Design and implement a solver for the Skyscraper logic puzzle on an N×N grid (3 ≤ N ≤ 7). Each row and column must contain the numbers 1..N without repetition. Edge clues indicate how many buildings are visible from that side given building heights. Given a set of clues (possibly some blanks), return one valid grid or report that none exists. Describe your modeling (e.g., constraint propagation with Latin-square domains, visibility predicates), search strategy (backtracking, MRV/degree heuristics, forward checking), pruning techniques, and how you would verify uniqueness. Provide the expected input/output formats and analyze worst-case complexity.