package main
import "fmt"
func main() {
n := 9
ans := make([]int, n)
for i := range ans {
ans[i] = i + 1
}
evaluate := func(a []int) bool {
div0 := a[1]*10 + a[2]
div1 := a[4]*10 + a[5]
div2 := a[7]*10 + a[8]
return a[0]*div1*div2+a[3]*div0*div2+a[6]*div0*div1 == div0*div1*div2
}
// (開発用)生成したpermutationの総数を確認
cnt := 0
_ = cnt
var permutate func(int)
permutate = func(s int) {
if s+2 < n {
permutate(s + 1)
} else {
if evaluate(ans) {
fmt.Println(ans)
}
cnt++
}
for i := s + 1; i < n; i++ {
ans[s], ans[i] = ans[i], ans[s]
permutate(s + 1)
ans[s], ans[i] = ans[i], ans[s]
}
}
permutate(0)
// fmt.Println(cnt) // must be n!
}
cGFja2FnZSBtYWluCgppbXBvcnQgImZtdCIKCmZ1bmMgbWFpbigpIHsKCW4gOj0gOQoJYW5zIDo9IG1ha2UoW11pbnQsIG4pCglmb3IgaSA6PSByYW5nZSBhbnMgewoJCWFuc1tpXSA9IGkgKyAxCgl9CgoJZXZhbHVhdGUgOj0gZnVuYyhhIFtdaW50KSBib29sIHsKCQlkaXYwIDo9IGFbMV0qMTAgKyBhWzJdCgkJZGl2MSA6PSBhWzRdKjEwICsgYVs1XQoJCWRpdjIgOj0gYVs3XSoxMCArIGFbOF0KCQlyZXR1cm4gYVswXSpkaXYxKmRpdjIrYVszXSpkaXYwKmRpdjIrYVs2XSpkaXYwKmRpdjEgPT0gZGl2MCpkaXYxKmRpdjIKCX0KCgkvLyDvvIjplovnmbrnlKjvvInnlJ/miJDjgZfjgZ9wZXJtdXRhdGlvbuOBrue3j+aVsOOCkueiuuiqjQoJY250IDo9IDAKCV8gPSBjbnQKCgl2YXIgcGVybXV0YXRlIGZ1bmMoaW50KQoJcGVybXV0YXRlID0gZnVuYyhzIGludCkgewoJCWlmIHMrMiA8IG4gewoJCQlwZXJtdXRhdGUocyArIDEpCgkJfSBlbHNlIHsKCQkJaWYgZXZhbHVhdGUoYW5zKSB7CgkJCQlmbXQuUHJpbnRsbihhbnMpCgkJCX0KCQkJY250KysKCQl9CgkJZm9yIGkgOj0gcyArIDE7IGkgPCBuOyBpKysgewoJCQlhbnNbc10sIGFuc1tpXSA9IGFuc1tpXSwgYW5zW3NdCgkJCXBlcm11dGF0ZShzICsgMSkKCQkJYW5zW3NdLCBhbnNbaV0gPSBhbnNbaV0sIGFuc1tzXQoJCX0KCX0KCglwZXJtdXRhdGUoMCkKCS8vIGZtdC5QcmludGxuKGNudCkgLy8gbXVzdCBiZSBuIQp9Cg==