+ * The given permutation needs to contain all genes 1 to n, if 0 is
+ * included it has to be the first item, if it is not present it will
+ * be added automatically. Similarily, if n is not the last item, then
+ * n+1 will be added to the end.
+ *
+ * \param begin iterator to the first element in the list, from begin()
+ * on stl collections and pointer to first item on plain arrays.
+ *
+ * \param end iterator to the element behind the last, from end() in
+ * stl collections or pointer to first element+size on plain arrays.
+ *
+ * \throws std::invalid_argument if the list is not a valid permutation.