class Pila{
    private int top;
    private int []s;
    private int capacidad;

    public Pila(int cap){
        this.top=-1;
        this.capacidad=cap;
        this.s=new int[this.capacidad];
    }
    public int longitud(){//obtiene la logitud de la pila
        return this.top+1;
    }

    public boolean esVacia(){//verifica si la pila está vacia si el contador top es meor a 0
        if(this.top<0){
            return true;
        }else{
            return false;
        }
    }


    public void push(int numero){//agreaga elementos a la pila
        if (longitud()<this.capacidad){
            s[++this.top]=numero;
        }
    }

    public int pop(){//quita un elemento de la pila y lo reemplaza con 0 , es decir 0 significa que no tiene elmentos en ese lugar
        int aux;
        if(esVacia()) return 0;
        aux=s[top];
        s[top--]=0;
        return aux;
 
    }


    public void imprimir(){//imprime la pila
        for(int i=0;i<this.capacidad;i++){
            System.out.println(this.s[i]);
        }
    }

   public void sortStack(){
       int temp;
    if ( !(esVacia())){
        temp = pop();  
        sortStack(); 
        sortedInsert(temp);
        }
    }

    public void sortedInsert( int element){
        int temp;
        if (esVacia() || element > s[this.top] ){
            push(element);
        }
       
        else{
            temp = pop();
            sortedInsert(element);
            push (temp);
            }
    }


}

public class SortPila {
    public static void main(String[] args) {
        Pila pila=new Pila(5);
        pila.push(2);
        pila.push(1);
        pila.push(3);
        pila.push(4);
        pila.push(6);
        
        pila.sortStack();
        pila.imprimir();
        
    }
}
