L - べき乗数 Editorial /

Time Limit: 2 sec / Memory Limit: 256 MB

べき乗数の数の集合を以下で定める.

  • 1 はべき乗数
  • x がべき乗数なら 2^x, 3^x, 5^x, 7^xもべき乗数.
  • 上の2つの条件からべき乗数と定まる数のみがべき乗数
2 または 3 または 5 または 7 からなる数列 b_1,...,b_N が与えられる. {b_1}\^{b_2}\^...\^{b_N} より小さいべき乗数の個数を 10^{9}+7 で割った余りを求めよ.

(注) {b_1}\^{b_2}\^...\^{b_N} はべき乗を右から優先して計算した値を意味する. 例えば 2\^3\^2=2\^9=512 である.

入力形式

テストケースは以下の形式で与えられる.

N
b_1
b_2b_N

出力形式

求める答えを出力する.

制約

  • 1 \leq N \leq 1000
  • b_i∈\{2,3,5,7\}

この問題の判定には,50点分のテストケースのグループが設定されている.このグループに含まれるテストケースは上記の制約に加えて下記の制約も満たす.

  • 1 ≤ N ≤ 4

入出力例

入力例1

2
3
2

出力例1

7

3^2=9 より小さいべき乗数は 1,2,3,4,5,7,8 の7個である.

入力例2

3
2
7
5

出力例2

100

入力例2

32
2
2
2
2
3
3
3
3
5
5
5
5
7
7
7
7
2
2
2
2
3
3
3
3
5
5
5
5
7
7
7
7

出力例2

223914000

10^9+7 で割ったあまりを出力する.


Source Name

京都大学プログラミングコンテスト2014