import java.util.*;

class IntegereBagObserver
{
	public static void main(String[] args)
	{
		IntegerBag bag = new IntegerBag();
		BagObserver observer = new BagObserver();
		bag.addObserver(observer);
	}
}



class IntegerBag extends Observable{

	public IntegerBag()
	{

	}

	private List list = new ArrayList();
	public void add(Integer i) {list.add(i);}
	public void remove(int index) {list.remove(index);}
	public Integer[] getValues() {
		return (Integer[]) list.toArray(new Integer[list.size()]);
	}
}




class BagObserver implements Observer
{
	public void update()
	{
		System.out.print("Content has changed: [ ");
		Integer[] values = bag.getValues();
		for (int i = 0; i < values.length; i++) {
			System.out.print(values[i] + " ");
		}
		System.out.print("]");
	}
}



interface Observer
{
	void update();
}


class Observable {
		private List observers = new ArrayList();
		public void addObserver(Observer o) {observers.add(o);}
		public void removeObserver(Observer o){observers.remove(o);}
		public void notifyObservers() {
		Iterator iter = observers.iterator();
		while (iter.hasNext()) {
			((Observer) iter.next()).update();
		}
	}
}