Design and implement a hierarchical color-selection system for a FigJam-style table. The table is a grid of cells organized into rows and columns. Colors can be set at three levels: the entire table, a specific row, or an individual cell. When a color is requested for a cell, the system must return the most specific color that has been set (cell → row → table). You must support three operations: (1) set_table_color(c) – applies color c to the whole table and clears any row or cell overrides; (2) set_row_color(r, c) – applies color c to every cell in row r and clears any cell-level overrides inside that row; (3) set_cell_color(r, c, color) – applies color to the single cell at row r, column c; (4) get_color(r, c) – returns the color of the cell at row r, column c by checking cell, then row, then table in that order. Choose a data-structure design that balances space and lookup time, and be prepared to discuss trade-offs.