(refs #14) Adopt multi-thread challenge
(refs #14) Add `--threads` option

* You can set the number of threads in challenge
(refs #14) Refactoring challenge IF
(refs #14) Fix test