Link 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;
}