public override int SolvePart2() { var program0 = new DuetProgram(instructions, 0); var program1 = new DuetProgram(instructions, 1); program0.LinkedProgram = program1; program1.LinkedProgram = program0; int valuesSent = 0; program1.ValueSent += _ => { valuesSent++; return(false); }; do { program0.ResumeExecution(); program1.ResumeExecution(); }while (!program0.Deadlocked); return(valuesSent); }