#pragma once #include template concept IsTreeMonoid = requires(M a, M b) { { M::rake(a, b) } -> std::same_as; { M::compress(a, b) } -> std::same_as; };