using System.Collections.Generic;
public static void Main()
MaxStack stack = new MaxStack();
Console.WriteLine(stack.top());
Console.WriteLine(stack.popMax());
Console.WriteLine(stack.top());
Console.WriteLine(stack.peekMax());
Console.WriteLine(stack.pop());
Console.WriteLine(stack.top());
Stack<int> stack = new Stack<int>();
Stack<int> maxStack = new Stack<int>();
public void push(int value)
if(maxStack.Count == 0 || maxStack.Peek() <= value)
int ret = maxStack.Peek();
while(stack.Count > 0 && stack.Peek() != ret)
if(ret == maxStack.Peek())