public boolean depthFirst(){
		rememberPos();				
		
		ArrayList<Pos> moves = getMoves();		
		for(int i=0; i<moves.size(); i++){
			path.add(new Pair<Pos, Integer>(moves.get(i), new Integer(BLIND)));
		}
				
		while(!path.isEmpty()){						
			Pair<Pos, Integer> p = path.peek();						
			p.second = new Integer(CHECKED);
			
			setPos(p.first);
			rememberPos();
						
			if(atGoal()){				
				return true;
			}
							
			ArrayList<Pos> m = getMoves();
			if(m.size()==0){				
				while(!path.isEmpty() && path.peek().second.intValue() == CHECKED){
					path.pop();
				}				
			}
			
			moves = getMoves();		
			for(int i=0; i<moves.size(); i++){
				path.add(new Pair<Pos, Integer>(moves.get(i), new Integer(BLIND)));
			}
		}		
		return false;
	}