public boolean isLegal(Player p) {
		if (_controller != null) return false;
		int inc_roads = 0;
		for (Edge e : _edges) if (e.road() && e.controller() != p) inc_roads++;
		if (inc_roads >= 2) return false;
		for (Vertex v: neighbors()) if (v.controller() != null) return false;
		return true;
	}