output_description: Print the sum of the page numbers of the pages he has to check, as modulo 10^9
  + 7.
  
  * * *
input_description: The input is given from Standard Input in the following format:
  
      
      
      N
      P_1 P_2 ... P_N
attempt: import math
  import itertools
  
  
  def read():
      return int(input())
  
  
  def reads(sep=None):
      return list(map(int, input().split(sep)))
  
  
  cache = {}
  
  
  def fact(n):
      if n not in cache:
          cache[n] = math.factorial(n)
      return cache[n]
  
  
  def f(p, l):
      r = 0
      x = list(range(1, l + 1))
      for i in range(l - 2):
          r += x.index(p[i]) * fact(l - i - 1)
          x.remove(p[i])
      if 2 <= len(p):
          if p[-1] < p[-2]:
              r += 1
      return r + 1
  
  
  def main():
      m = 10**9 + 7
      n = read()
      p = reads()
      if 3000 < n:
          return
  
      r = 0
      a = set(range(1, n + 1)) - set(p)
      for x in itertools.permutations(a):
          np = p[:]
          i = 0
          for j in range(n):
              if np[j] == 0:
                  np[j] = x[i]
                  i += 1
          r = (r + f(np, n)) % m
      print(r)
  
  
  main()
  
problem_description: Statement
  
  One day Mr. Takahashi picked up a dictionary containing all of the N!
  permutations of integers 1 through N. The dictionary has N! pages, and page i
  (1 ≤ i ≤ N!) contains the i-th permutation in the lexicographical order.
  
  Mr. Takahashi wanted to look up a certain permutation of length N in this
  dictionary, but he forgot some part of it.
  
  His memory of the permutation is described by a sequence P_1, P_2, ..., P_N.
  If P_i = 0, it means that he forgot the i-th element of the permutation;
  otherwise, it means that he remembered the i-th element of the permutation and
  it is P_i.
  
  He decided to look up all the possible permutations in the dictionary. Compute
  the sum of the page numbers of the pages he has to check, modulo 10^9 + 7.
samples: [{"input": "4\n    0 2 3 0", "output": "23\n    \n\nThe possible permutations are [1, 2, 3, 4] and [4, 2, 3, 1]. Since the former\nis on page 1 and the latter is on page 22, the answer is 23.\n\n* * *"}, {"input": "3\n    0 0 0", "output": "21\n    \n\nSince all permutations of length 3 are possible, the answer is 1 + 2 + 3 + 4 +\n5 + 6 = 21.\n\n* * *"}, {"input": "5\n    1 2 3 5 4", "output": "2\n    \n\nMr. Takahashi remembered all the elements of the permutation.\n\n* * *"}, {"input": "1\n    0", "output": "1\n    \n\nThe dictionary consists of one page.\n\n* * *"}, {"input": "10\n    0 3 0 0 1 0 4 0 0 0", "output": "953330050"}]