using System;
class MyClass : IComparable<MyClass>, IEquatable<MyClass> {
    public int val;
    public MyClass(int v) { val = v; }    public int compareTo(MyClass otherValue) {
        return val - otherValue.val;
    }
    public bool Equals(MyClass otherValue) {
        return val == otherValue.val;
    }
    public override bool Equals(object obj)
    {
        if(obj is MyClass)
        return Equals((MyClass) obj);
        return false;
    }    public override int GetHashCode()
    {
        
        return val.GetHashCode();
    }
}class Demo {
    public static bool IsIn<T>(T what, T[] obs) where T : IEquatable<T> {
        foreach (T v in obs) if (v.Equals(what)) return true;
        return false;
    }    
    public static bool Inrange<T>(T what, T[]obs)where T: IComparable<T>{
        if (what.CompareTo(obs[0]) < 0 || what.CompareTo(obs[obs.Length - 1]) > 0) return false; return true;
    }
    static void Main() {
        int[] mums = { 1, 2, 3, 4, 5 };
        if (IsIn(2, mums)) Console.WriteLine("2 is found");        if (Inrange(2, mums)) Console.WriteLine("2 is in range");  
    }
}