// Original CPU teaching model; not a device simulator or benchmark.
#include <iostream>
#include <stdexcept>

void require(bool ok) { if (!ok) throw std::runtime_error("model check failed"); }

int main() {
 constexpr int rows=33,cols=33,tile=32;
 const int tr=(rows+tile-1)/tile, tc=(cols+tile-1)/tile;
 const int logical=rows*cols, covered=tr*tc*tile*tile;
 require(tr*tc==4 && logical==1089 && covered==4096);
 std::cout<<"tiles="<<tr*tc<<" logical="<<logical<<" covered="<<covered<<'\n';
}

