output_description: Print the number, modulo (10^9 + 7), of sequences with the property: if used
  in the game, there is always a way for Takahashi to sort the sequence in
  ascending order regardless of Snuke's operations.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M
attempt: import itertools
  
  N = int(input())
  A = [int(_) for _ in input().split()]
  if A[0] != 0:
      if N == 0 and A[0] == 1:
          print(1)
      else:
          print(-1)
      exit()
  ans = 1
  n = 1
  if A[0] > 1:
      print(-1)
      exit()
  cumr = list(itertools.accumulate(A[::-1]))[::-1]
  for i in range(1, N + 1):
      n = min(2 * (n - A[i - 1]), cumr[i])
      ans += n
      if n < 0:
          print(-1)
          exit()
  print(ans)
  
problem_description: Statement
  
  Takahashi and Snuke came up with a game that uses a number sequence, as
  follows:
  
    * Prepare a sequence of length M consisting of integers between 0 and 2^N-1 (inclusive): a = a_1, a_2, \ldots, a_M.
  
    * Snuke first does the operation below as many times as he likes:
  
      * Choose a positive integer d, and for each i (1 \leq i \leq M), in binary, set the d-th least significant bit of a_i to 0. (Here the least significant bit is considered the 1-st least significant bit.)
    * After Snuke finishes doing operations, Takahashi tries to sort a in ascending order by doing the operation below some number of times. Here a is said to be in ascending order when a_i \leq a_{i + 1} for all i (1 \leq i \leq M - 1).
  
      * Choose two adjacent elements of a: a_i and a_{i + 1}. If, in binary, these numbers differ in exactly one bit, swap a_i and a_{i + 1}.
  
  There are 2^{NM} different sequences of length M consisting of integers
  between 0 and 2^N-1 that can be used in the game.
  
  How many among them have the following property: if used in the game, there is
  always a way for Takahashi to sort the sequence in ascending order regardless
  of Snuke's operations? Find the count modulo (10^9 + 7).
samples: [{"input": "2 5", "output": "352\n    \n\nConsider the case a = 1, 3, 1, 3, 1 for example.\n\n  * When the least significant bit of each element of a is set to 0, a = 0, 2, 0, 2, 0;\n  * When the second least significant bit of each element of a is set to 0, a = 1, 1, 1, 1, 1;\n  * When the least two significant bits of each element of a are set to 0, a = 0, 0, 0, 0, 0.\n\nIn all of the cases above and the case when Snuke does no operation to change\na, we can sort the sequence by repeatedly swapping adjacent elements that\ndiffer in exactly one bit. Thus, this sequence has the property: if used in\nthe game, there is always a way for Takahashi to sort the sequence in\nascending order regardless of Snuke's operations.\n\n* * *"}, {"input": "2020 530", "output": "823277409"}]