#fukabintree. [fuka_bintree]Bintree
[fuka_bintree]Bintree
Description
つの数字が書かれた節点が個ある.この個の節点をすべて使って2分木を作る.2分木の定義については,例えば Wikipedia のページなどを参照すること.
木の重さを,その木に含まれる数字の和で定義する.木が空集合の場合,その重さはであるとする.
次のことが成り立つとき,木は_安定_であると呼ぶ : 葉を除くすべての節点について左部分木と右部分木の重さの差の絶対値が以上以下となる.ここで,左の子を根とする部分木(左の子が存在しない場合は空集合)を左部分木と呼び,同様に右の子を根とする部分木を右部分木と呼ぶことにする.
個の節点の値とが与えられたとき,安定な2分木の個数を出力せよ.ただし,2分木の数を数える際は,個の節点を全て区別する.また,子節点の順序が異なったり,節点の親子関係が異なる場合も区別して数える.
Input
入力は複数のテストケースからなる.入力の終わりは3つの0のみを含んだ行で示される.各テストケースは以下の形式で与えられる.
テストケースの行目にはつの整数が書かれている.
テストケースの行目には個の整数が書かれている.は番目の点に書かれている数字を表す.
テストケースの数は1つのファイルにつき20個以下であることが保証されている.
Output
各テストケースに対して,条件を満たす2分木の個数を1行で出力せよ.
Sample Input
1 0 100
1
2 3 3
1 2
3 0 2
1 2 3
10 0 10
1 2 3 4 5 6 7 8 9 10
13 0 10
1 2 3 4 5 6 7 8 9 10 11 12 13
0 0 0
Sample Output
1
0
6
164650496
213181735360