CSES - Shared codeLink to this code: https://cses.fi/paste/4a0ba715854edf654c5ccc/
#include <bits/stdc++.h>
#define lli long long int
using namespace std;

lli const MOD = 1e9+7;
lli dp[100005][105] = {0};
int main(){
  lli n,m;
  cin>>n>>m;
  vector<lli> nums(n);
  for(int i = 0; i<n; i++)
    cin>>nums[i];
  //base i == 0;
  if(nums[0] == 0)
    for(int i = 1; i<=m; i++)dp[0][i] = 1;
  else
    dp[0][nums[0]] = 1;
  //recursive
  for(int i = 1; i<n; i++){
    for(int j = 1; j<=m; j++){
      if(nums[i] == 0 || j == nums[i])
        dp[i][j] = (dp[i-1][j-1] + dp[i-1][j] + dp[i-1][j+1])%MOD;
    }
  }
  lli ans = 0;
  for(int i = 1; i<=m; i++)ans += dp[n-1][i], ans %= MOD;
  cout<<ans<<endl;
  return 0;
}