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

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

int main() {
 std::vector<int> visits(10,0),counts;
 int start=0;
 for(int core=0;core<3;++core) {
  const int count=10/3+(core<10%3);counts.push_back(count);
  for(int i=start;i<start+count;++i) ++visits[static_cast<std::size_t>(i)];
  start+=count;
 }
 for(int v:visits) require(v==1);
 require(start==10);
 std::cout<<"counts="<<counts[0]<<' '<<counts[1]<<' '<<counts[2]<<" coverage=ok\n";
}

