using System;
public class Node{
public int Data {get;set;}
public Node Next{get;set;}
public int Min{get;set;}
public Node(int val){
Data = val;
}
public class Stack{
private Node list;
public Stack(){
public void Push(int val){
if(list == null){
list = new Node(val);
list.Min = val;
}else{
var newNode = new Node(val);
newNode.Next = list;
newNode.Min = val < list.Min ? val: list.Min;
list = newNode;
public int? Pop(){
if(list == null)
return null;
int? val = list.Data;
list = list.Next;
return val;
public int? Min(){
return list.Min;
public class Program
{
public static void Main()
Console.WriteLine("Hello World");