import java.util.*;

public class List{
	
	class Position{
		Object element;
		Position prev;
		Position next;
		
		public Object element(){
			return this.element;
		}
	}
	
	private Position head;
	private Position tail;		
	
	public List(){
		//hier nichts aendern
		this.head = new Position();
		this.tail = new Position();
		this.head.prev = this.head;		
		this.head.next = this.tail;
		this.head.element = null;		
		this.tail.prev = this.head;
		this.tail.next = this.tail;
		this.tail.element = null;
	}
	
	public Position first(){
		//NoSuchElementException bei Fehler
	}
	
	public Position last(){
		//NoSuchElementException bei Fehler	
	}
	
	public boolean isFirst(Position p){
		
	}
	
	public boolean isLast(Position p){

	}
	
	public Position before(Position p){
		//NoSuchElementException bei Fehler
	}
	
	public Position after(Position p){
		//NoSuchElementException bei Fehler
	}
	
	public void insertFirst(Object o){
		
	}
	
	public void insertLast(Object o){
		
	}
	
	public void insertBefore(Position p,Object o){
		
	}
	
	public void insertAfter(Position p, Object o){
				
	}
	
	public Object replaceElement(Position p, Object o){

	}
	
	public void remove(Position p){
		
	}
	
	public Iterator iterator()
	{		
		return new Iterator(){
			
			//hier noch geeignete Variable einfügen
			
			public boolean hasNext(){				
				
			}
			
			public Position next(){

			}
			
			public void remove(){
				//hier nichts veraendern
				throw new UnsupportedOperationException();
			}
		};
	}
}