QSPにする前に、もっと読みやすい形で書いて、変数の中身をチェックしながら動かしてみると良いかな?