class Pile{
    // Numero massimo di elementi del pile
    private int max_el;

    // Array di elementi del pile
    private int[] elements;

    /* Costruttore, con parametro il numero massimo di
    	elementi del pile; corrisponde alla procedura 
		make-game-state del programma scheme per il 
		gioco del Nim  */

    public Pile(int m, int n){
	elements=new int[n];
      max_el=n;
	for (int i=0; i< n; i++)
		elements[i]= m+i ;
    }

    // Test di pile vuoto
    public boolean emptyPile(){
	int i =0; 
	while (i<max_el && elements[i]==0)
		i++;
	return (i == max_el );
    }

    // Restituisce le monete in posizione n
    public int sizeOfPile(int n){
	return (elements[n]);	
    }

    // Sottrazione di nCoins monete dalla posizione nPile

    public void removeCoinsFromPile(int nCoins, int nPile){
	elements[nPile]= elements[nPile]- nCoins;
    }

    // Stampa gli elementi del pile

    public void displayGameState() {
	for (int i=0; i< max_el; i++)
		System.out.print(elements[i]+", ");
	System.out.println();
    }

    // sottrazione di una moneta dal primo pile non vuoto

    public void subOne() {
	int i = 0;
	while (i<max_el && elements[i]==0)
		i++ ;
	elements[i]= elements[i] - 1 ;
    }
}

      
