using System; using System.Collections.Generic; using System.IO; using System.Linq; class Solution { static int mod = 1000000007; static void Main(String[] args) { int n = Convert.ToInt32(Console.ReadLine()); string[] m_temp = Console.ReadLine().Split(' '); int[] m = Array.ConvertAll(m_temp,Int32.Parse); //find ever increasing count int c = 0; int last = -1; for(int i=0; ilast){ c++; last=m[i]; } } int anss = 1; //single array for(int i=2; i<=c; i++){ int ans = 1; int left = c-i; int dleft = left/i; int mleft = left%i; for(int j=0; j1; k--){ ans *= k; ans %= mod; } } int ii = i; for(int k=mleft; k>=1; k--){ ans *= ii; ii--; ans %= mod; } if(c != n){ ans *= i; ans %= mod; } //Console.WriteLine($"i:{i} ans:{ans}"); anss += ans; } Console.WriteLine(anss); } }