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

افراد ۱ تا \(n\) تیم‌بندی شده‌اند و در یک صف قرار گرفته‌اند. به یک شیوه تیم بندی یک دنباله \(a_1,a_2,...,a_n\) نسبت میدهیم به این شکل که به ترتیب عناصر دنباله را میسازیم:

  • در مرحله \(i\) ام اگر فرد با شماره \(i\) با فرد شماره \(j\) هم‌تیمی بود به شکلی که \(i>j\) \(a_i\) را برابر \(a_j\) قرار میدهیم.
  • در غیر این صورت \(a_i\) را برابر مینیمم عدد طبیعی مانند \(x\) قرار می‌دهیم که \(x\) برابر هیچ کدام از اعداد \(a_1,a_2,...,a_{i-1}\) نباشد.

یک دنباله \(a_1,a_2,...,a_n\) به شما داده شده است که تضمین می‌شود تیم‌بندی‌ای وجود داره که دنباله‌اش برابر آن شود. تعداد تیم‌بندی‌‌هایی را بشمارید که دنباله‌هایشان از لحاظ لکسیکوگرافیکالی کمتر یا برابر دنباله \(a\) باشد. چون ممکن است این عدد خیلی بزرگ باشد، باقی‌مانده آن را به \(1\ 000\ 007\) حساب کنید.

ورودی

در خط اول ورودی یک عدد \(n\) داده شده است. در خط دوم دنباله \(a_1,a_2,...,a_n\) داده شده است. \[1 \leq n \leq 10\ 000\]

خروجی

باقی‌مانده تعداد تیم‌بندی‌های با شرایط گفته شده بر \(1\ 000\ 007\) را در یک خط چاپ کنید.

زیر مسئله‌ها

زیرمسئله نمره محدودیت
۱ ۳۰ \[n \le 14\]
۲ ۲۰ \[n \le 100\]
۳ ۲۰ \[n \le 1\ 000\]
۴ ۳۰ بدون محدودیت اضافی

مثال

ورودی نمونه ۱

3
1 2 2

خروجی نمونه ۱

4

دنباله‌های معتبر:

  • \(1 1 1\)
  • \(1 1 2\)
  • \(1 2 1\)
  • \(1 2 2\)
  • \(1 2 3\)
ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.