func main() {
	p := []int{11, 22, 33}
	i := permute.Iter(p)
	for sign := i(); sign != 0; sign = i() {
		fmt.Println(p, sign)
	}
}
func determinant(m [][]float64) (d float64) {
	p := make([]int, len(m))
	for i := range p {
		p[i] = i
	}
	it := permute.Iter(p)
	for s := it(); s != 0; s = it() {
		pr := 1.
		for i, σ := range p {
			pr *= m[i][σ]
		}
		d += float64(s) * pr
	}
	return
}