003 - 引き算

時間制限 1 秒 / メモリ制限 64 MB / 得点 100 / x 12 /


TLE
1sec
MLE
64MB
得点
100

問題文

あなたは、友人から、一人用のゲームを紹介されました。

最初に、数字 N が与えられます。 1 , 2 , 3 の中から好きな数字を選び、 与えられた数字に対し、引き算を行う、という処理を行うことできます。

この処理は 100 回まで行うことが可能であり、最終的に数字を 0 にすることが目標のゲームです。

しかし、計算途中でなってはいけないNG数字が 3 つ与えられており、 この数字に一時的にでもなってしまった瞬間、このゲームは失敗となります。 NG数字が N と同じ場合も失敗となります。

あなたは、このゲームの目標達成できるパターンがいくつあるのか調べたいです。

目標達成可能な場合はパターンの数を 100000 で割った余り、目標が達成できるパターンが一つもない場合は NO と出力してください。

入力


入力は以下の形式で標準入力から与えられる。

N
NG1
NG2
NG3
1 行目には、最初に与えられる数字 N(1≦N≦300) が与えられる。
2 行目には、 1 番目のNG数字 NG1(1≦NG1≦300) が与えられる。
3 行目には、 2 番目のNG数字 NG2(1≦NG2≦300) が与えられる。
4 行目には、 3 番目のNG数字 NG3(1≦NG3≦300) が与えられる。

出力


目標達成可能な場合は目標を達成できるパターンの数、そうでない場合はNOを 1 行で出力せよ。出力の末尾にも改行をいれること。

入出力例

入力例1

2
1
7
15

出力例1

1
2 を 1 回引くことにより、 0 を作ることが出来ます。

入力例2

5
1
4
2

出力例2

1
最初に 2 を引き、次に 3 を引くことで、5 → 3 → 0 と変化し、目標を達成することが出来ます。

入力例3

300
57
121
244

出力例3

NO
100 回連続で 3 を引かなければ、目標を達成することはできません。 しかし、 3 だけを引き続けていると、途中でNG数字である 57 になってしまいます。

入力例4

231
77
78 
80

出力例4

9251