#include <fstream>
#include <stdlib>
#include <thread>

#include "bench.h"

coroutine GreatSuspender {};

void ?{}( GreatSuspender * this ) {
	prime(this);
}

void main( GreatSuspender * this )
{
	while( true ) {
		suspend();
	}
}

void resumer( GreatSuspender * this, const unsigned int NoOfTimes ) {
	for ( volatile unsigned int i = 0; i < NoOfTimes; i += 1 ) {
		resume( this );
	}
}

int main() {
	const unsigned int NoOfTimes = N;
	long long int StartTime, EndTime;

	GreatSuspender s;

	StartTime = Time();
	resumer( &s, NoOfTimes );
	EndTime = Time();

	sout | ( EndTime - StartTime ) / NoOfTimes | endl;
}