@Override
	public SyrianEdge getMove(SyrianGraph graph)
			throws AgentHasNoMoveException, AgentIsDoneException {
		
		if (this.getLocation() == this.getTarget() && graph.getVerticesWithChemicals().size() == 0){
			throw new AgentIsDoneException(this);
		}
		AbstractList<SimpleHeuristicNode> path = this
				.getPathToTargetWithChemicalsAllowReVisits(graph,
						this.getLocation());
		System.out.println("Path: ");
		for (SimpleHeuristicNode hn : path) {
			System.out.println(hn.toString());
		}
		SimpleHeuristicNode move = path.get(path.size() - 1);
		if (move.hasChemicals() && !this.hasChemicals()) {
			try {
				this.takeChemicals();
			} catch (AgentAlreadyHasChemicalsException e) {
				System.out.println("Error in path!");
				e.printStackTrace();
			} catch (LocationDoesntHaveChemicalsException e) {
				System.out.println("Error in path!");
				e.printStackTrace();
			}
		}
		System.out.println("MOVE: " + move.toString());
		return move.getPath();
	}