#include <concepts>
#include <functional>

template<typename T>
concept LessThenComparable = requires(T a, T b)
{
    { a < b } -> std::convertible_to < bool >;
};

template<typename T>
requires LessThenComparable<T>
T median(T a, T b, T c) {
	if(a > b) {
        if(b > c)
            return b;
        else if(a > c)
            return c;
        else
            return a;
    } else {
        if(b < c)
            return b;
        else if (a > c)
            return a;
        else
            return c;
    }
}

class Foo {};

int main() {
    median(1,2,3);
    Foo a, b, c;
    median(a, b, c);
    return 0;
}
