using System.Collections.Generic;
class IntPair(int x, int y)
public static class MyExtensions
public static void Scan<T>(this IEnumerable<T> collection, Func<T, int> accessor, Func<T, bool> predicate, Action<T, int> result)
foreach (var element in collection)
result(element, total += accessor(element));
public static void Main()
values.Scan(elem => elem.Y, elem => elem.X != 3, (elem, tempResult) => elem.Y = tempResult);
Console.WriteLine($"[\n\t{string.Join("\n\t", values.Select(elem => $"X: {elem.X} Y: {elem.Y}"))}\n]");