public void Push(T data)
 {
     valueStack.Push(data);
     //critical to check empty else any garbage can come
     if (minStack.IsEmpty() || minStack.Peek().CompareTo(data) >= 0) // to handle duplicate push when equal
     {
         minStack.Push(data);
     }
     if (maxStack.IsEmpty() || maxStack.Peek().CompareTo(data) <= 0)
     {
         maxStack.Push(data);
     }
 }
        static void Main(string[] args)
        {
            // FILO - first in, last out
            var stack = new MyStack();

            stack.Push(10);
            stack.Push(20);
            stack.Push(30);

            var p = stack.Peek();
            var a = stack.Pop();

            var reversed = StringReverser("ruan");
            var balanced = IsBalanced("(1 + 2)>");
        }
 public T Peek()
 {
     return(valueStack.Peek());
 }