گاو صندوق بزرگ


آقای مهندس در اتاق مدیریت خود گاوصندوق بزرگی دارد که همه‌ی اسرار بزرگ شرکت در آن نگه‌داری می‌شود. یک گاوصندوق بزرگ برای امنیت هرچه بیشتر نیاز به یک رمز خیلی بزرگ هم دارد. آقای مهندس ارقام رمز گاوصندوق‌ش را، که یک عدد طبیعی خیلی بزرگ است، پشت‌سرهم روی یک تکه کاغذ دراز نوشته و آن‌را همیشه در جیب کت‌ش نگه می‌دارد.

بچه‌ی‌ آقای مهندس که امروز در مهدکودک کار با قیچی را برای ساختن کاردستی یاد گرفته،‌ با دیدن کاغذ رمز گاوصندوق در جیب پدرش بسیار شگفت‌زده می‌شود و آن را به nn قطعه تقسیم می‌کند. (او همه‌ی برش‌هایش را عمودی و بین ارقام می‌زند، طوری که هیچ رقمی‌ خراب نشود‌ و در هر تکه از کاغذ تعدادی از ارقام پشت‌سرهم رمز قرار بگیرد)

آقای مهندس وقتی رمز را تکه‌تکه می‌بیند، آرامش خود را حفظ می‌کند، و سعی می‌کند رمز گاوصندوق را بازسازی کند. اما تنها این را به یاد دارد که رمز بر 1111 بخشپذیر بوده‌است، زیرا همان‌طور که می‌دانید 1111 عدد مورد علاقه‌ی خانم دکتر است. حال او از شما می‌خواهد با گرفتن اعداد نوشته‌شده روی تکه‌های کاغذ به او بگویید که در چند حالت چیدن تکه‌های کاغذ کنار هم یک رمز ممکن برای گاوصندوق درست می‌شود. (یعنی رمز بر 1111 بخشپذیر می‌شود)

ورودی🔗

در سطر اول ورودی عدد طبیعی nn، تعداد قطعات کاغذ آمده است. در خط بعد اعداد طبیعی a1a_1 تا ana_n آمده است که aia_i عدد نوشته‌شده در کاغذ iiام را نشان می‌دهد.

  • اینکه 1n20001 \le n \le 2000

  • اینکه 1ai1061 \le a_i \le 10^6

  • تضمین می‌شود که هیچ‌کدام از اعداد ورودی در ابتدای خود 00 ندارند. (leading zero ندارند)

خروجی🔗

در خروجی تعداد حالت‌هایی از چیدن قطعات (از مجموع n!n! حالت) که یک رمز ممکن برای گاوصندوق ‌می‌سازند را چاپ کنید. (باقی‌مانده بر 109+710^9+7)

مثال🔗

ورودی نمونه ۱

5
11 11 11 11 11
Plain text

خروجی نمونه ۱

120
Plain text

ورودی نمونه ۲

7
10 20 3 15 1000 60 16
Plain text

خروجی نمونه ۲

336
Plain text

(۲۴امین دوره المپیاد کامپیوتر - آزمون سوم - ۱۳۹۳/۰۶/۰۶)