جمع یا ضرب


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

روی تخته nn عدد صحیح و مثبت a1,a2,a3,,ana_1, a_2, a_3, \dots, a_n \, نوشته شده است. در هر مرحله می‌توانیم دو عدد از این دنباله را پاک کنیم و سپس ضرب یا جمع آن‌ها را روی تخته بنویسیم.

می‌خواهیم این کار را طوری انجام دهیم که بعد از n1n - 1 مرحله، عددی که روی تخته باقی می‌ماند بیشینه باشد.

با توجه به اینکه این عدد ممکن است خیلی بزرگ باشد از شما می‌خواهیم باقی‌مانده آن بر 109+710^9+7 را محاسبه کنید.

ورودی🔗

در سطر اول ورودی عدد صحیح و مثبت nn آمده که نشان‌دهنده‌ی تعداد اعداد نوشته شده روی تخته است. 1n1000001 \leq n \leq 100 \, 000 در سطر دوم ورودی nn عدد صحیح و مثبت a1,a2,,ana_1, a_2, \dots, a_n \, که با یک فاصله از هم جدا شده‌اند آمده است که نشان‌دهنده‌ی اعداد نوشته شده روی تخته است.

1ai1091 \leq a_i \leq 10^9

خروجی🔗

در تنها سطر خروجی باقی‌مانده بزرگ‌ترین عددی که می‌توان به آن رسید بر 109+710^9+7 را چاپ کنید.

مثال‌ها🔗


ورودی نمونه ۱🔗

3
1 2 3
Plain text

خروجی نمونه ۱🔗

9
Plain text

ورودی نمونه ۲🔗

4
1 1 1 1
Plain text

خروجی نمونه ۲🔗

4
Plain text