public Set<NodeData> getNodes(int size, List<Player> players) {
		if ((size % 2) == 0) {
			throw new IllegalArgumentException("The size must be an odd number.");
		}
		if (players.size() != 3) {
			throw new IllegalArgumentException("The number of players must be three.");
		}

		Set<NodeData> nodes = getMarkedNodes(size, players);

		int maxIndex = size - 1;
		int middleIndex = maxIndex / 2;

		// Upper part
		for (int yIndex = 0; yIndex < middleIndex; yIndex++) {
			for (int xIndex = middleIndex - yIndex; xIndex <= (middleIndex + yIndex); xIndex++) {
				nodes.add(new NodeData(xIndex, yIndex));
			}
		}

		// Lower part
		for (int yIndex = middleIndex; yIndex <= maxIndex; yIndex++) {
			for (int xIndex = middleIndex - (maxIndex - yIndex); xIndex <= (middleIndex + (maxIndex - yIndex)); xIndex++) {
				nodes.add(new NodeData(xIndex, yIndex));
			}
		}

		return nodes;
	}