N := 1_000_000;

task P1 as Pipe(Range(N));
prime P1;

task P2 as Pipe(P1.SData);
prime P2;

P1.SData->Count() < N;

play P1;
prime P1;
pause P1;
