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

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

int main() {
 const int first_compute=2+3, second_copy=2+2;
 const int pipelined=std::max(first_compute,second_copy)+3;
 const int serial=2*(2+3);
 require(serial==10 && pipelined==8);
 std::cout<<"serial="<<serial<<" pipelined="<<pipelined<<'\n';
}

